C'est un record. L'explication n'est écrite que légèrement.
Téléchargez l'historique de vos tweets. Sur la page Twitter, faites une demande en sélectionnant «Paramètres et confidentialité» → «Compte» → «Données Twitter» → «Télécharger les données Twitter», et après un certain temps, un lien de téléchargement sera envoyé à votre adresse e-mail, donc téléchargez à partir de là.
Depuis l'été 2019, les spécifications des données de téléchargement ont changé et tweets.csv
est devenutweets.js
, donc c'est gênant, alors utilisez l'outil écrit par une autre personne surtweets.csv Faites un
. (Https://17number.github.io/tweet-js-loader/)
Créez un dossier de texte dans le même répertoire que votre lieu de travail et lancez-y tweets.csv
et vous êtes prêt à partir.
Ensuite, à propos du contenu de tweet.py
.
Commencez par créer tweets.txt
dans la partie suivante. Le corps du tweet est extrait de tweets.csv
et transformé en fichier txt.
tweet.py
import csv
import re
rawfile = "text/tweets.csv"
infile = "text/tweets.txt"
outfile = "text/tweets_wakati.txt"
with open(rawfile,'r') as f:
reader = csv.reader(f)
with open(infile,'w') as f:
for d in reader:
if len(d) > 2:
f.write(d[2])
f.write('\n')
Ensuite, utilisez janome pour briser les mots et laissez le modèle apprendre. Si vous n'avez pas janome, veuillez d'abord faire pip install janome
.
En passant, j'essaie de faire des phrases qui ont un sens en japonais autant que possible en éliminant les alphabets, les symboles spécifiques, les boîtes de questions, etc.
tweet.py
from janome.tokenizer import Tokenizer
t = Tokenizer()
with open(infile,'r') as f:
data = f.readlines()
p = re.compile('[a-z]+')
p2 = re.compile('[:/.@#Question ●]+')
with open(outfile,'w') as f:
for i in range(len(data)):
line = data[i]
if p2.search(line):
pass
else:
for token in t.tokenize(line):
if p.search(str(token.surface)):
pass
else:
f.write(str(token.surface))
f.write(' ')
f.write('\n')
words = []
for l in open(outfile, 'r', encoding='utf-8').readlines():
if len(l) > 1:
words.append(('<BOP> <BOP> ' + l + ' <EOP>').split())
from nltk.lm import Vocabulary
from nltk.lm.models import MLE
from nltk.util import ngrams
vocab = Vocabulary([item for sublist in words for item in sublist])
print('Vocabulary size: ' + str(len(vocab)))
text_trigrams = [ngrams(word, 3) for word in words]
n = 3
lm = MLE(order = n, vocabulary = vocab)
lm.fit(text_trigrams)
Enfin, la génération de phrases aléatoires.
tweets.py
for j in range(10):
# context = ['<BOP>']
context = ['<BOP>','<BOP>']
sentence = ''
for i in range(0, 100):
#Sélectionnez au hasard un mot différent de zéro parmi les deux derniers mots du contexte
w = lm.generate(text_seed=context)
if '<EOP>' == w or '\n' == w:
break
context.append(w)
sentence += w
print(sentence+'\n')
10 phrases sont sorties au hasard. Lors de la copie, veuillez combiner le code écrit ci-dessus en un seul fichier, ou le diviser en cellules avec jupyter notebook et l'exécuter. Cette dernière méthode est recommandée car elle peut prendre un certain temps pour entraîner le modèle.
Vous devriez voir 10 phrases comme celle ci-dessus. C'est assez intéressant pour que vous puissiez l'essayer à l'infini. Veuillez l'essayer.
Recommended Posts