[PYTHON] Generieren Sie zufällige Sätze aus Ihren Tweets mit Trigramm

Es ist ein Rekord. Die Erklärung ist nur leicht geschrieben.

Weise

Vorbereitung

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.

Ergebnis

 2019-12-13 19.00.15.png

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

Generieren Sie zufällige Sätze aus Ihren Tweets mit Trigramm
Erstellen Sie mit python3 eine Wortwolke aus Ihrem Tweet
Erstellen Sie mit Selenium ein Programm, mit dem Sie Ihr Lieblingsbild erstellen können
Generieren Sie mit SciPy eine Normalverteilung
Generieren Sie eine vorsignierte URL mit golang
[Python] Generiere ein Passwort mit Slackbot
python + faker Generiere zufällig einen Punkt mit einem Radius von 100 m von einem bestimmten Punkt
Tweet die Wettervorhersage mit Bot
Generieren Sie alle Dateien mit einer bestimmten Erweiterung
Tweet von Python mit Twitter Developer + Tweepy
Generieren Sie eine Klasse aus einer Zeichenfolge in Python
Tweet die Wettervorhersage mit Bot Teil 2
Erstelle mit pygame2 eine neue Benutzeroberfläche!
Erstellen Sie eine PDF-Datei mit einer zufälligen Seitengröße
So generieren Sie ein Python-Objekt aus JSON
Generieren Sie ein MeCab-Wörterbuch aus Nico Nico Encyclopedia-Daten
Generieren Sie mit Python eine Einfügeanweisung aus CSV.
Erstellen Sie mit Python einen Entscheidungsbaum von 0 (1. Übersicht)
Ich habe versucht, eine zufällige Zeichenfolge zu generieren
Lesen Sie mit Python Zeile für Zeile aus der Datei
Ich habe mit Numpy eine Grafik mit Zufallszahlen erstellt
Extrahieren Sie mit Python Daten von einer Webseite
Führen Sie eine Twitter-Suche in Python durch und versuchen Sie, Sätze mit der Markov-Kette zu generieren.