Ich mag Twitter, also dachte ich, wenn das Programm meine Tweets automatisch generiert, würde es das für mich tun, selbst wenn ich beschäftigt war.
[Evangelion] Versuchen Sie, mit Deep Learning automatisch Asuka-ähnliche Linien zu generieren Wenn ich lese, scheint es, dass die Markov-Kette Sätze generiert, die eher so sind als Deep Learning, also habe ich ein Programm erstellt, das auf dieser Richtlinie basiert. ... oder besser gesagt, es ist das Gleiche wie es komplett zu machen ...
Shumai-kun (@shuumai) und komprimierte Zeitung (@asshuku) scheinen ebenfalls Markov-Ketten zu sein, daher sollte diese Richtlinie möglicherweise in Ordnung sein. ..
Alle Ihre früheren Tweets können von der offiziellen Website als Zip-Datei mit json und csv heruntergeladen werden. Laden Sie Ihren gesamten Tweet-Verlauf herunter
Dieses Mal werden wir die daraus erhaltene tweets.csv
verwenden.
Da einige Tweets Antworten und URLs enthalten, müssen diese ausgeschlossen werden, damit Sie nicht unbeabsichtigt Antworten überspringen oder nicht vorhandene URLs twittern. Es ist interessant, dass unbeabsichtigte Antworten gesendet werden, aber vorerst.
Da Pandas zum Lesen von CSV-Dateien schnell zu sein scheinen, verwenden Sie "read_csv" von Pandas. Passen Sie die Antwort und die Zeichenfolge der URL ungefähr an und schließen Sie sie aus.
preprocessing.py
import pandas as pd
import re
df = pd.read_csv('tweets.csv')
tweets = df['text']
replypattern = '@[\w]+'
urlpattern = 'https?://[\w/:%#\$&\?\(\)~\.=\+\-]+'
processedtweets = []
for tweet in tweets:
i = re.sub(replypattern, '', tweet)
i = re.sub(urlpattern, '', i)
if isinstance(i, str) and not i.split():
pass
else:
processedtweets.append(i)
processedtweetsDataFrame = pd.Series(processedtweets)
newDF = pd.DataFrame({'text': processedtweetsDataFrame})
newDF.to_csv('processedtweets.csv')
Ich wollte auch Tweets von einer bestimmten Anwendung (z. B. einem Diagnosehersteller) ausschließen, daher habe ich das passende "df [" source "]" separat gelöscht.
Ich hatte bereits ein Paket für Python zur Satzgenerierung durch Markov-Kette, also habe ich es verwendet. https://github.com/o-tomox/TextGenerator
Da das obige Paket jedoch in der Python 2-Serie geschrieben ist, habe ich es entsprechend in die 3-Serie geändert.
Das Folgende ist der Code zum Speichern der Triplettdaten aus der CSV-Datei des durch die Vorverarbeitung erzeugten Tweets in der Datenbank.
storeTweetstoDB.py
from PrepareChain import *
import pandas as pd
from tqdm import tqdm
def storeTweetstoDB():
if len(sys.argv) > 2:
df = pd.read_csv(sys.argv[1])
else:
csvfilepath = input('tweets.csv filepath : ')
df = pd.read_csv(csvfilepath)
tweets = df['text']
print(len(tweets))
chain = PrepareChain(tweets[0])
triplet_freqs = chain.make_triplet_freqs()
chain.save(triplet_freqs, True)
for i in tqdm(tweets[1:]):
chain = PrepareChain(i)
triplet_freqs = chain.make_triplet_freqs()
chain.save(triplet_freqs, False)
if __name__ == '__main__':
storeTweetstoDB()
Jetzt können Sie automatisch Ihre eigenen Tweets generieren. Lass es uns laufen.
Lassen Sie uns mithilfe der vollständigen Datenbank und der Twitter-API twittern.
markovbot.py
import json
from requests_oauthlib import OAuth1Session
from GenerateText import GenerateText
def markovbot():
keysfile = open('keys.json')
keys = json.load(keysfile)
oath = create_oath_session(keys)
generator = GenerateText(1)
tweetmarkovstring(oath, generator)
def create_oath_session(oath_key_dict):
oath = OAuth1Session(
oath_key_dict['consumer_key'],
oath_key_dict['consumer_secret'],
oath_key_dict['access_token'],
oath_key_dict['access_token_secret']
)
return oath
def tweetmarkovstring(oath, generator):
url = 'https://api.twitter.com/1.1/statuses/update.json'
markovstring = generator.generate()
params = {'status': markovstring+'[Ist eine Fälschung]'}
req = oath.post(url, params)
if req.status_code == 200:
print('tweet succeed!')
else:
print('tweet failed')
if __name__ == '__main__':
markovbot()
Dieses Mal wurden Tweets automatisch basierend auf meinem Konto generiert (@ Hitsumabushi845). Unten sind die Ergebnisse.
Es scheint ein ziemlicher Satz zu sein ... Oder besser gesagt, es war ein Satz, der gefährlich war, ohne eine Kennung hinzuzufügen. Im obigen Programm wird am Ende "[fake]" hinzugefügt.
Wenn Sie dies danach regelmäßig mit einem Server oder Cron ausführen, können Sie Twitter für immer erstellen.
References