[Python] Ich habe einen Twitter-Bot erstellt, der freundschaftliche Tweets mit Markov-Kettenregeln generiert.

Einführung

Ich habe während meiner freien Frühlingsferien als Student schlampig Krabbeln und Kratzen gelernt, aber ich habe mich für einen Twitter-Bot entschieden, weil ich hier etwas machen wollte. Mit Hilfe von Freund B habe ich einen Bot erstellt, der die Tweets von Freund B analysiert und Tweets von Freund B erstellt.

Entwicklungsumgebung

Verwenden der virtuellen Ubuntu-Umgebung mit virtualbox unter Windows 10 Ubuntu 18.04.4 LTS

Was ich benutzt habe

Ich werde für jeden eine kleine Erklärung schreiben

Markov-Kettengesetz

Als ich nachforschte, indem ich fragte: "Nun, wie lassen Sie die zu generierenden Sätze wie diese Person aussehen? Wie macht man die automatische Generierung von Sätzen überhaupt?", Fand ich eine Markov-Kettenregel.

In diesem Artikel finden Sie das Markov-Kettengesetz, das ebenfalls leicht verständlich geschrieben ist. Ich habe auch auf den Python-Code verwiesen. ** Markov Kettenregel ist erstaunlich! ** Es wird sein.

[Python] Generiere Sätze mit der Markov-Kette im N-ten Stock](https://qiita.com/k-jimon/items/f02fae75e853a9c02127)

MeCab MeCab wird als Mittel zur Analyse der abgerufenen Tweets verwendet. Der grundlegende Ablauf der Satzgenerierung besteht darin, "mit MeCab eine morphologische Analyse der erfassten Tweets durchzuführen, eine Liste von Wörtern zu erstellen und die Wörter gemäß der Markov-Kettenregel anzuordnen".

Klicken Sie hier für eine detaillierte Erklärung von MeCab.

[Technische Erklärung] Was ist morphologische Analyse? Von der MeCab-Installationsprozedur bis zum Ausführungsbeispiel in Python

tweepy Verwenden Sie die von Twitter offiziell bereitgestellte Twitter-API, um Twitter automatisch zu betreiben. Mit der Twitter-API können Sie Ihr Konto programmgesteuert betreiben.

Wenn Sie die Twitter-API von Python aus betreiben, ist tweepy, eine Python-Bibliothek, praktisch. Daher habe ich bei der Suche im Internet gelernt, wie man sie verwendet, während ich auf dieses Buch verwies.

[Python Crawling & Scraping - Praktisches Entwicklungshandbuch für die Datenerfassung und -analyse-](https://www.amazon.co.jp/Python%E3%82%AF%E3%83%AD%E3%83% BC% E3% 83% AA% E3% 83% B3% E3% 82% B0-% E3% 82% B9% E3% 82% AF% E3% 83% AC% E3% 82% A4% E3% 83% 94 % E3% 83% B3% E3% 82% B0-% E3% 83% 87% E3% 83% BC% E3% 82% BF% E5% 8F% 8E% E9% 9B% 86% E3% 83% BB% E8% A7% A3% E6% 9E% 90% E3% 81% AE% E3% 81% 9F% E3% 82% 81% E3% 81% AE% E5% AE% 9F% E8% B7% B5% E9% 96% 8B% E7% 99% BA% E3% 82% AC% E3% 82% A4% E3% 83% 89-% E5% 8A% A0% E8% 97% A4-% E8% 80% 95% E5% A4% AA / dp / 4774183679 / ref = tmm_other_meta_binding_title_0? _Encoding = UTF8 & qid = & sr =)

MySQL

Ich entschied mich für MySQL, um die von der Twitter-API erfassten Daten zu speichern, und dachte, ich sollte die Datenbank trotzdem studieren. Die Verwendung von MySQL hat den Vorteil, dass die Anwendung später problemlos erweitert werden kann. Zum Zeitpunkt der Testproduktion habe ich versucht, die Daten in eine Textdatei zu schreiben, aber es scheint, dass der Vorgang etwas langsam war.

Wenn Sie mehr über MySQL erfahren möchten, klicken Sie auf den folgenden Link. Ich denke, Sie können ein Bild bekommen.

https://www.atoone.co.jp/column/10114/

VPS Ich habe einen VPS gemietet, weil ich einen Server brauchte, um den Bot auszuführen. Das Bild ist, dass Sie einen Computer verwenden können, der immer läuft.

Das Erstellen der erforderlichen Umgebung erforderte Linux-Kenntnisse, was für mich als Server-Anfänger eine ziemlich schwierige Aufgabe war, aber ich installierte die erforderliche Software wie MySQL und MeCab.

Ich konnte es problemlos bei CohoHa VPS ausleihen. Ich werde es bald als Webserver verwenden. Es ist billig, wenn Sie für 880 Yen pro Monat auf dem Server spielen können ...

ConoHaVPS

Bot App Konfiguration

Es ist endlich das Hauptthema, aber in der Abbildung sieht es so aus. Bot.png

Die Rolle jedes Skripts ist wie folgt @ twitter_collector.py (Datenerfassungsskript)

  1. Verwenden Sie die Twitter-API mit tweepy, einer Python-Bibliothek, um Tweet-Daten abzurufen
  2. Extrahieren Sie die erforderlichen Elemente (Text, Buchungsdatum und -zeit usw.) aus den erfassten Daten und speichern Sie sie in der Datenbank
  3. Verwenden Sie die Streaming-API, um der Datenbank jederzeit neue Tweets hinzuzufügen

@ bot.py (Bot Körper)

  1. Lesen Sie den Tweet-Text aus der Datenbank und formatieren Sie ihn in ein Formular, das einfach zu verarbeiten ist
  2. Morphologische Analyse von Textdaten mit MeCab, um Trends im Inhalt der Tweets von Freund B zu modellieren
  3. Generieren Sie einen Tweet wie Freund B gemäß dem erstellten Modell
  4. Poste Tweets, die von der Twitter API (Tweepy) generiert wurden.

Ich denke, dass es einfacher ist, den Teil, der Daten sammelt, und den Bot-Körper, der twittert, zu trennen.

Bot-Automatisierung

Wir haben die Umgebung von CentOS 8 auf dem Server vorbereitet, alle erforderlichen Tools wie MeCab, MySQL und Python darauf installiert und die Umgebung erstellt.

Bot wird betrieben, indem automatisch ein Shell-Skript ausgeführt wird, um ein Python-Skript von systemd auszuführen. systemd wird in diesem Artikel leicht verständlich erklärt.

Automatischer Start durch systemd

Um es ähnlicher zu machen

Es hat Spaß gemacht, weil es ziemlich interessante Tweets erzeugt hat, indem nur Sätze gemäß der Markov-Kettenregel gebildet wurden, aber im Moment entwerfe ich die folgenden zwei Punkte, weil ich es ähnlicher machen möchte

--Überprüfen Sie die Verteilung des Tweet-Intervall-Musters der Person für jede Zeitzone und lassen Sie sie entsprechend twittern.

Beides wird erreicht, indem Daten von Tweets abgerufen werden, die tatsächlich von Freund B erstellt wurden, sie aufgelistet und zufällig Werte aus ihnen ausgewählt werden.

Impressionen

Wie erwartet wird der Satz umso weniger aussagekräftig, je länger der Satz ist. Wenn es sich jedoch um einen kurzen Tweet handelt, kann es sich um einen Tweet handeln, den die Person wirklich gesagt hat, und Wörter werden zufällig aus den Inhalten ausgewählt, die die Person in der Vergangenheit getwittert hat. Daher konnte ich je nach Kombination Tweets generieren, die mich zum Lachen bringen würden.

Ich denke, wenn die Symbole genau gleich sind, ist es möglicherweise nicht möglich, zwischen dem Bot und der Person selbst zu unterscheiden, und ich möchte einen Tuling-Test durchführen.

Freund B, danke für deine Mitarbeit.

abschließend

Ich fragte mich, ob ich es mit maschinellem Lernen schaffen könnte, aber nennen wir es die nächste Aufgabe ... Die Frühlingsferien sind vorbei ... Es ist eine Online-Klasse.

Vielen Dank für das Lesen bis zum Ende. Wenn Sie einen Rat haben, würde ich mich freuen, wenn Sie einen Kommentar abgeben könnten.

Recommended Posts

[Python] Ich habe einen Twitter-Bot erstellt, der freundschaftliche Tweets mit Markov-Kettenregeln generiert.
Einfach! Implementieren Sie einen Twitter-Bot, der auf Heroku in Python ausgeführt wird
Erstellen Sie einen Bot, der Twitter-Trends verstärkt
Ein Programm, das Python zum Abspielen von Junk verwendet
Machen wir einen Twitter-Bot mit Python!
Machen Sie Twitter Trend Bot mit Heroku + Python
Schritte zum Erstellen eines Twitter-Bots mit Python
Führen Sie eine Twitter-Suche in Python durch und versuchen Sie, Sätze mit der Markov-Kette zu generieren.
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Erstellt eine Python-Bibliothek DateTimeRange, die Zeitbereiche verarbeitet
Suchen Sie Twitter mit Python
Erstellen Sie mithilfe der Twitter-Streaming-API einen Echtzeit-Bot für die automatische Antwort
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Ein unfruchtbarer Twitter-Posting-Client, der nur Ihre Tweets speichert
Mit Python auf Twitter posten
Suche nach Twitter-Tweets mit Python
[Python] Ich habe einen Line-Bot erstellt, der zufällig nach englischen Wörtern fragt
Erstellt eine Bibliothek für Python, die die morphologische Teilung problemlos handhaben kann
Ich habe einen Twitter-Bot erstellt, der das von #PokemonGO gefangene Pokemon murmelt
[Ev3dev] Erstellen Sie ein Programm, das das LCD (Bildschirm) mit Python erfasst
[LINE Messaging API] Erstellen Sie einen BOT, der eine Verbindung zu jemandem mit Python herstellt
[Python] Ich habe ein Follow-Korrelationsdiagramm für Twitter erstellt (Gremlin-Ausgabe)
Eine Klasse, die häufig verwendete Methoden in Twitter API (Python) zusammenfasst.
Ein Python-Skript, das auf dem Mac erstellte ._DS_Store- und ._ * -Dateien löscht