[Python] Une infrastructure de données permettant d'acquérir et de publier des tweets de l'API Twitter vers BigQuery a été conçue sur GCP (avec un score négatif / positif)

introduction

Ceci est le premier message. Puisque nous avons construit une infrastructure de données sur GCP pour acquérir des tweets de l'API Twitter pour un usage interne et les publier sur BigQuery, nous les publierons sous forme de mémorandum et d'une future liste de tâches.

C'est la première fois que je construis une infrastructure de données et que j'utilise GCP, donc si vous remarquez quelque chose, je vous serais reconnaissant si vous pouviez commenter. datapotal.JPG

Environnement de développement

Google Cloud Platform série python3

Aperçu

En vous basant sur les mots clés décrits dans la feuille de calcul, récupérez le contenu du tweet de l'API Twitter, calculez le score négatif / positif, enregistrez-le dans BigQuery, puis affichez-le et téléchargez-le dans Data Potal.

La logique stockée dans GCS et BigQuery est construite avec python sur Cloud Functions.

Comme il est configuré pour s'exécuter une fois par jour dans Cloud Scheduler, il sera acquis automatiquement chaque jour après le réglage initial. gcp-twitter.JPG

Commentaire

① Recevez des tweets avec l'API Twitter

Pour utiliser l'API de recherche standard, vous devez postuler en anglais. Je me suis référé ici pour l'application. Résumé des étapes depuis l'enregistrement de l'API Twitter (méthode de demande de compte) jusqu'à l'approbation

En outre, l'acquisition par l'API de recherche standard comporte les restrictions suivantes. ・ Jusqu'à 100 tweets à la fois ・ 180 demandes en 15 minutes ・ Vous pouvez recevoir des tweets sur les 7 derniers jours </ b>

Vous ne pouvez recevoir que 18 000 tweets en 15 minutes. Après 15 minutes, le nombre de demandes reviendra à 180. C'est plutôt bien ici si vous construisez une logique, mais vous ne pouvez pas recevoir de tweets datant de plus de 7 jours. Si vous voulez vraiment l'obtenir, vous pouvez l'obtenir presque illimitée en utilisant l'API payante. (J'ai besoin d'argent pour toujours)

J'ai vu cette page plus de 30 fois concernant l'API Twitter. Comment obtenir et analyser plus de 5 millions de données de retweet Twitter

Vous pourriez penser que le grattage est bien s'il y a des restrictions, mais le grattage Twitter est interdit par les règles, alors pesons-nous.

② Stockez les tweets dans Cloud Storage avec Cloud Functions

Cloud Functions est un service capable d'exécuter JavaScript et Python sur le cloud. À partir de 2019, la série python 3 peut également être utilisée.

Récupérez les mots-clés préremplis de la feuille de calcul sur Google Drive et ajoutez-les à l'API Twitter. Convertissez le json renvoyé en csv et stockez l'équivalent d'une journée de tweets dans Cloud Storage gcs.JPG

Il était normal de stocker le contenu du tweet acquis directement dans BigQuery, mais lorsque j'étudiais l'infrastructure de données, j'ai appris les concepts de «lac de données», «entrepôt de données» et «magasin de données». Je l'ai donc stocké une fois dans Cloud Storage. Je le garde. Si vous stockez les données de manière limitée, vous pourriez finir par dire: «Oh, je voulais aussi cet article!

J'ai évoqué ici le concept d'infrastructure de données. Trois catégories d’infrastructure de données et de modélisation évolutive des données

Puisque Data Lake est positionné comme "une copie des données d'origine" </ b>, je voulais à l'origine le stocker au format json au lieu de csv, mais des erreurs se produisent et je le fais. Je n'ai pas compris, alors j'ai abandonné. </ S>

③ Exécutez périodiquement l'acquisition de tweet avec Cloud Scheduler

Cloud Scheduler est un service cron peu coûteux et facile à utiliser qui vous permet d'envoyer des messages à des sujets oogle Pub / Sub. En résumé, vous pouvez exécuter Cloud Functions en spécifiant la date et l'heure . </ b>

En définissant une valeur dans la charge utile, vous pouvez utiliser cette valeur dans Cloud Functions. Actuellement, nous spécifions le nombre de lignes dans la feuille de calcul où les mots-clés sont saisis, nous définissons donc Cloud Scheduler autant que le nombre de mots-clés que nous voulons obtenir.

De plus, en raison des restrictions de l'API Twitter décrites dans (1), chaque mot-clé est exécuté à des intervalles de 15 minutes. Si vous pouvez vous inscrire à une API Twitter payante, le mécanisme ici changera.

④ Ajouter un score négatif / positif de Cloud Storage à BigQuery et stocker

Encore une fois, nous utilisons Cloud Functions. L'analyse des émotions est effectuée avec python et notée. Puisqu'il est traité dans un bloc de données, to_gbq est utilisé pour le stockage dans BigQuery. pandas.DataFrame.to_gbq

Si vous ne spécifiez pas le schéma BigQuery dans le table_schema de to_gbq, vous risquez de vous mettre en colère lorsque vous enregistrez des éléments presque nuls (géo, etc.), alors soyez prudent.

En ce qui concerne l'analyse des émotions, j'ai fait référence aux sites suivants, mais la précision est encore faible, donc améliorer la précision est une tâche future. J'ai environ 500 000 ensembles de données de tweets à portée de main, et j'aimerais l'utiliser pour créer un outil d'analyse des émotions spécialisé pour Twitter. J'ai créé une application d'analyse négative / positive avec apprentissage en profondeur (python)

Étant donné que l'analyse des émotions est cette fois-ci l'objectif principal, les BOT et les retweets sont exclus. </ b> Pour BOT, sélectionnez uniquement ceux qui incluent "twitter.com" dans la source. Les retweets excluent ceux dont le corps du tweet commence par "@ RT".

Si vous souhaitez compter les balises de hachage dans une campagne, etc., vous devez changer la logique.

⑤ Exécuter ④ avec Cloud Scheduler

Ce que vous faites avec ③ est pareil. Cloud Scheduler exécute le stockage dans Cloud Storage en tant que déclencheur.

⑥ Store dans BigQuery

Il existe un tableau pour chaque mot-clé. Étant donné que l'heure de Twitter est définie sur l'heure universelle de l'accord (UTC), nous stockons le contenu du tweet de 9h00 la veille à 9h00 le jour même. En plus du contenu du tweet, la date et l'heure du tweet, les informations de compte, le score négatif / positif, etc. sont stockés.

⑦ Publié sur Data Potal

Étant donné que l'entreprise a un contrat Gsuite et que tous les employés peuvent utiliser le compte Google, nous rendons possible la visualisation et le téléchargement du contenu des tweets avec Data Potal. Bien sûr, si vous le téléchargez avec csv, vous pouvez le trier par ordre de score négatif / positif sur DataPotal. Je n'ai pas encore touché à cette partie, et pour le moment je ne spécifie que la période, mais je voudrais ajouter des filtres et des éléments à l'avenir.

J'étais également intéressé par Tableau, mais lorsque j'ai postulé pour l'essai , j'ai abandonné car je n'ai pas reçu d'e-mail de vérification. </ s> Je vais contester une autre opportunité.

Tâches futures, ce que vous voulez faire

・ Lorsque le nombre de mots clés augmente, la facturation et la logique GCP doivent être modifiées. ・ Utilisez la précision de l'analyse des émotions UP ou NLP ・ Afficher les mots qui sont tweetés ensemble dans la division (Mecab + NEologd) ・ Calculez le score d'influence de l'influenceur à partir des informations du compte tweet et classez le graphique privé, le graphique d'intérêt, l'abolition de tsui, etc.

finalement

python le plus fort. Si vous recherchez, ce sera 95%. Si vous comprenez l'anglais, ce sera 99%. Chaque jour est fouillé par le ministre et je suis profondément reconnaissant à toute l'humanité.

Vous devez tester votre code sur Jupyter car vous pouvez travailler avec GCP dans Jupyter Notebook. (Le déploiement de Cloud Functions est très lent)

Je pense qu'il y avait d'autres parties qui s'intègrent, donc j'aimerais le publier à l'avenir, y compris le code.

Veuillez me faire savoir s'il y a quelque chose d'intéressant ou de possible.

Recommended Posts