[Python] J'ai créé un bot Twitter qui génère des tweets semblables à des amis avec des règles de chaîne de Markov.

introduction

J'ai été bâclé sur l'étude de l'exploration et du grattage pendant mes vacances de printemps gratuites, mais j'ai décidé de créer un robot Twitter parce que je voulais faire quelque chose ici. Avec l'aide de Friend B, j'ai créé un Bot qui analyse les tweets de Friend B et crée des tweets de type Friend B.

Environnement de développement

Utilisation de l'environnement virtuel Ubuntu avec Virtualbox sur Windows 10 Ubuntu 18.04.4 LTS

Ce que j'ai utilisé

J'écrirai une petite explication pour chacun

Loi des chaînes de Markov

Quand j'ai enquêté en demandant: "Eh bien, comment faites-vous pour que les phrases à générer ressemblent à cette personne? Comment faites-vous la génération automatique de phrases en premier lieu?", J'ai trouvé une règle de chaîne de Markov.

Veuillez vous référer à cet article pour la loi des chaînes de Markov, qui est également rédigée de manière facile à comprendre. J'ai également fait référence au code Python. ** La règle de la chaîne de Markov est incroyable! ** Ce sera.

[Python] Générer des phrases avec une chaîne de Markov au N-ième étage](https://qiita.com/k-jimon/items/f02fae75e853a9c02127)

MeCab MeCab est utilisé comme un moyen d'analyser les tweets récupérés. Le flux de base de la génération de phrases est "d'effectuer une analyse morphologique sur les tweets acquis en utilisant MeCab, créer une liste de mots et organiser les mots selon la règle de chaîne de Markov".

Cliquez ici pour une explication détaillée de MeCab.

[Explication technique] Qu'est-ce que l'analyse morphologique? De la procédure d'installation de MeCab à l'exemple d'exécution en Python

tweepy Pour faire fonctionner Twitter automatiquement, utilisez l'API Twitter officiellement fournie par Twitter. L'API Twitter vous permet d'exploiter votre compte par programmation.

Lorsque vous utilisez l'API Twitter à partir de Python, tweepy, qui est une bibliothèque Python, est pratique, j'ai donc appris à l'utiliser lors de la recherche sur le net en me référant à ce livre.

[Python Crawling & Scraping-Practical Development Guide for Data Collection and Analysis-](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

J'ai décidé d'utiliser MySQL pour sauvegarder les données acquises par l'API Twitter, pensant que je devrais quand même étudier la base de données. L'utilisation de MySQL présente l'avantage qu'il est facile d'étendre l'application ultérieurement. Au moment de la production d'essai, j'ai essayé de mettre les données dans un fichier texte, mais il semble que l'opération ait été un peu lente.

Si vous souhaitez en savoir plus sur MySQL, veuillez vous référer au lien ci-dessous. Je pense que vous pouvez obtenir une image.

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

VPS J'ai loué un VPS car j'avais besoin d'un serveur pour exécuter le Bot. L'image est que vous pouvez utiliser un ordinateur qui est toujours en cours d'exécution.

Construire l'environnement nécessaire exigeait une connaissance de Linux, ce qui était une tâche assez difficile pour moi en tant que débutant en serveur, mais j'ai installé les logiciels nécessaires tels que MySQL et MeCab.

J'ai pu facilement l'emprunter chez CohoHa VPS. Je vais bientôt l'utiliser comme serveur Web. Ce n'est pas cher si vous pouvez jouer sur le serveur pour 880 yens par mois ...

ConoHaVPS

Configuration de l'application Bot

C'est enfin le sujet principal, mais cela ressemble à ceci sur la figure. Bot.png

Le rôle de chaque script est le suivant @ twitter_collector.py (script de collecte de données)

  1. Utilisez l'API Twitter avec tweepy, une bibliothèque Python, pour obtenir des données de tweet
  2. Extraire les éléments nécessaires (texte, date et heure de publication, etc.) des données acquises et les sauvegarder dans la base de données
  3. Utilisez l'API de streaming pour ajouter de nouveaux tweets à la base de données à tout moment

@ bot.py (corps du bot)

  1. Lisez le corps du tweet dans la base de données et formatez-le sous une forme facile à traiter
  2. Analyse morphologique des données textuelles avec MeCab pour modéliser les tendances dans le contenu des tweets de l'ami B.
  3. Générez un tweet comme l'ami B selon le modèle créé
  4. Publier des tweets générés par l'API Twitter (Tweepy)

Je pense que c'est plus facile à gérer en séparant la partie qui recueille les données et le corps du Bot qui tweete.

Automatisation des robots

Nous avons préparé l'environnement de CentOS 8 sur le serveur, installé tous les outils nécessaires tels que MeCab, MySQL, Python dessus et construit l'environnement.

Bot est géré en exécutant automatiquement un script shell pour exécuter un script Python par systemd. systemd est expliqué d'une manière facile à comprendre dans cet article.

Démarrage automatique par systemd

Pour le rendre plus similaire

C'était amusant car cela produisait des tweets assez intéressants simplement en faisant des phrases selon la règle de la chaîne de Markov, mais pour le moment, je suis en train de concevoir les deux points suivants parce que je veux le rendre plus similaire

Les deux sont obtenus en obtenant des données à partir de tweets réellement créés par l'ami B, en les répertoriant et en sélectionnant au hasard leurs valeurs.

Impressions

Comme prévu, plus la phrase est longue, moins la phrase devient significative, mais s'il s'agit d'un court tweet, il peut s'agir d'un tweet que la personne a vraiment dit, et les mots sont choisis au hasard parmi le contenu que la personne a tweeté dans le passé. Par conséquent, en fonction de la combinaison, j'ai pu générer des tweets qui me faisaient rire.

Je pense que si les icônes sont exactement les mêmes, il ne sera peut-être pas possible de faire la distinction entre le Bot et la personne elle-même, et je veux faire un test de tuling.

Ami B, merci pour votre coopération.

en conclusion

Je me demandais si je pouvais le faire avec l'apprentissage automatique, mais appelons cela la prochaine tâche ... Les vacances de printemps sont terminées ... C'est un cours en ligne.

Merci d'avoir lu jusqu'au bout. Si vous avez des conseils, je vous serais reconnaissant de bien vouloir commenter.

Recommended Posts

[Python] J'ai créé un bot Twitter qui génère des tweets semblables à des amis avec des règles de chaîne de Markov.
Facile! Implémenter un bot Twitter qui s'exécute sur Heroku en Python
Créez un bot qui stimule les tendances Twitter
Un programme qui utilise Python pour lire des fichiers indésirables
Faisons un bot Twitter avec Python!
Créer un bot Twitter Trend avec heroku + Python
Étapes pour créer un bot Twitter avec Python
Effectuez une recherche Twitter à partir de Python et essayez de générer des phrases avec la chaîne de Markov.
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
Création d'une bibliothèque Python DateTimeRange qui gère les plages horaires
Rechercher sur Twitter avec Python
Créez un robot de réponse automatique en temps réel à l'aide de l'API Twitter Streaming
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Un client de publication Twitter stérile qui ne sauvegarde que vos tweets
Publier sur Twitter en utilisant Python
Rechercher des tweets Twitter avec Python
Création d'une bibliothèque pour python capable de gérer facilement la division morphologique
J'ai créé un robot Twitter qui marmonne le Pokémon capturé par #PokemonGO
[Ev3dev] Créez un programme qui capture LCD (écran) en utilisant python
[LINE Messaging API] Créez un BOT qui se connecte à quelqu'un avec Python
[python] J'ai créé un diagramme de corrélation de suivi pour Twitter (édition Gremlin)
Une classe qui résume les méthodes fréquemment utilisées dans l'api twitter (python)
Un script python qui supprime les fichiers ._DS_Store et ._ * créés sur Mac