Es ist ein Rekord. Die Erklärung ist nur leicht geschrieben.
Laden Sie Ihren Tweet-Verlauf herunter. Stellen Sie auf der Twitter-Seite eine Anfrage, indem Sie "Einstellungen & Datenschutz" → "Konto" → "Twitter-Daten" → "Twitter-Daten herunterladen" auswählen. Nach einer Weile wird ein Download-Link an Ihre E-Mail-Adresse gesendet. Laden Sie ihn daher von dort herunter. Seit dem Sommer 2019 haben sich die Spezifikationen der Download-Daten geändert und es scheint, dass "tweets.csv" zu "tweets.js" geworden ist. Daher ist es problematisch, das von einer anderen Person geschriebene Tool "tweets.csv" zu verwenden Machen Sie ein `. (Https://17number.github.io/tweet-js-loader/)
Erstellen Sie einen Textordner im selben Verzeichnis wie Ihr Arbeitsplatz und werfen Sie "tweets.csv" hinein, und Sie können loslegen.
Als nächstes über den Inhalt von tweet.py
.
Erstellen Sie zunächst im folgenden Teil tweets.txt
. Der Tweet-Body wird aus tweets.csv
extrahiert und in eine txt-Datei umgewandelt.
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')
Verwenden Sie als Nächstes Janome, um die Wörter aufzubrechen und das Modell lernen zu lassen. Wenn Sie kein Janome haben, führen Sie bitte zuerst pip install janome
durch.
Übrigens versuche ich, Sätze zu machen, die auf Japanisch so sinnvoll wie möglich sind, indem ich Alphabete, bestimmte Symbole, Fragefelder usw. eliminiere.
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('[:/.@#Frage ●]+')
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)
Schließlich zufällige Satzerzeugung.
tweets.py
for j in range(10):
# context = ['<BOP>']
context = ['<BOP>','<BOP>']
sentence = ''
for i in range(0, 100):
#Wählen Sie zufällig ein Wort ungleich Null aus den letzten beiden Wörtern im Kontext aus
w = lm.generate(text_seed=context)
if '<EOP>' == w or '\n' == w:
break
context.append(w)
sentence += w
print(sentence+'\n')
10 Sätze werden zufällig ausgegeben. Kombinieren Sie beim Kopieren den oben geschriebenen Code in einer Datei oder teilen Sie ihn mit dem Jupiter-Notizbuch in Zellen und führen Sie ihn aus. Die letztere Methode wird empfohlen, da das Trainieren des Modells einige Zeit dauern kann.
Sie sollten 10 Sätze wie oben sehen. Es ist ziemlich interessant, so dass Sie es endlos versuchen können. Bitte probieren Sie es aus.
Recommended Posts