[Python] J'ai essayé de visualiser des tweets sur Corona avec WordCloud

introduction

J'ai rassemblé des tweets à utiliser dans l'apprentissage automatique, mais j'ai essayé de les visualiser car c'était un gros problème. Je vais laisser cette méthode ici. Pour une raison quelconque, je l'ai exécuté sur Windows et macOS, donc cela fonctionne sur les deux.

Personne cible

・ Peut écrire des programmes Python dans une certaine mesure ・ Ceux qui sont intéressés par wordcloud

environnement

OS utilisable (fonctionne sur Windows et Mac) ┗mac OS Catalina 10.15.7 ┗Widows 10 Python 3.8.3 mecab-python3

Qu'est-ce que Word Cloud

WordCloud est une méthode permettant de sélectionner plusieurs mots qui apparaissent fréquemment dans une phrase et de les afficher dans une taille en fonction de la fréquence. Il s'agit de disposer automatiquement des mots qui apparaissent fréquemment sur les pages Web et les blogs. En modifiant non seulement la taille des caractères mais également la couleur, la police et l'orientation, vous pouvez impressionner le contenu du texte en un coup d'œil. (D'après le commentaire sur Digital Daijisen)

En termes simples, il visualise la fréquence des occurrences de mots d'une manière facile à comprendre. Il existe une bibliothèque en python qui facilite la mise en œuvre. Après avoir lu cet article, vous pourrez créer quelque chose comme celui illustré ci-dessous. Figure_2 1.jpg

Qu'est-ce que MeCab

C'est une bibliothèque qui analyse les phrases par éléments morphologiques. Décomposer les phrases / expressions en "unités minimales significatives". Par exemple Lorsque la phrase «Je programme en entreprise» est analysée morphologiquement, Il peut être divisé en unités minimales telles que «I / is / company / at / programmation / is /».

En utilisant cette bibliothèque, vous ne pouvez extraire que des mots comme WordCloud ci-dessus.

Collecte de données

En fait, nous avons collecté des tweets à l'aide de l'API Twitter et collecté environ 70 000 données, mais nous allons omettre la méthode cette fois. À l'avenir, je pourrais écrire un autre article si je peux créer le meilleur programme pour moi-même. Je pensais qu'il serait difficile de collecter des tweets avec ça, alors j'ai préparé un fichier ici. Puisqu'il s'agit d'un tweet, la quantité de données est limitée à 8000. input_file (tweet data) ↓ https://17.gigafile.nu/1108-d3e975ac3446f65274267ced0915bc8ff word_except_file (liste des mots exclus) ↓ https://17.gigafile.nu/1108-c355b7876fecb940dd6efd712b84adda8

Génération de nuage de mots

Enfin, je vais générer WordCloud, mais comme WordC Loud ne prend pas en charge les polices japonaises, à partir d'ici (https://moji.or.jp/ipafont/ipa00303/) 4 Téléchargez le pack de polices (Ver.003.03), répondez à l'emplacement approprié, puis placez le fichier nommé ** ipag.ttf ** dans la même hiérarchie que le programme ci-dessous (si vous le comprenez, le chemin complet est correct). .. Le word_except_file contient des mots similaires à "corona" afin que vous puissiez exclure les mots qui sont facilement liés au mot, tels que "corona" et "infection". En outre, les mots inutiles qui apparaîtront inévitablement dans l'analyse des éléments morphologiques sont également inclus dans la liste d'exclusion.

** Méthode d'exécution ** python3 makeWordCloud.py colona_data.txt except_word_list.txt

Si vous comprenez, veuillez le réécrire dans votre propre environnement, le cas échéant.

makeWordCloud.py


import MeCab
import sys
from matplotlib import pyplot as plt
from wordcloud import WordCloud

args = sys.argv
input_file = args[1]
word_except_file = args[2]

#Lire le fichier texte
with open('input_file', mode='rt', encoding='utf-8') as fi:
    source_text = fi.read()

#Préparation pour MeCab
tagger = MeCab.Tagger()
tagger.parse('')
node = tagger.parseToNode(source_text)

#Extrait de la nomenclature
word_list = []
while node:
    word_type = node.feature.split(',')[0]
    if word_type == 'nom':
        word_list.append(node.surface)
    node = node.next

#Lire des mots exclus
except_word_list = []
f = open(except_word_file)
for i in f:
    except_word_list.append(i.rstrip())

#Convertir la liste en chaîne
word_chain = ' '.join(word_list)

#Création de nuage de mots
W = WordCloud(width=640,height=480,background_color='white',font_path="./ipag.ttf",stopwords = except_word_list).generate(word_chain)

plt.imshow(W)
plt.axis('off')
plt.show()

finalement

Depuis que j'ai posté sur Qiita pour la première fois, il y avait beaucoup de choses que je ne comprenais pas, mais c'était amusant. Si vous avez des questions ou avez besoin d'améliorer, laissez un commentaire. Si vous trouvez quelque chose à nouveau, je le posterai. Eh bien.

Recommended Posts

[Python] J'ai essayé de visualiser des tweets sur Corona avec WordCloud
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
J'ai essayé de visualiser facilement les tweets de JAWS DAYS 2017 avec Python + ELK
J'ai essayé de visualiser AutoEncoder avec TensorFlow
J'ai essayé de résumer les remarques de tout le monde sur le slack avec wordcloud (Python)
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé d'automatiser la fabrication des sushis avec python
J'ai essayé de visualiser le texte du roman "Weather Child" avec Word Cloud
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
J'ai créé wordcloud avec Python.
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de démarrer avec le script python de blender_Part 01
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé de démarrer avec le script python de blender_Partie 02
J'ai essayé d'implémenter le perceptron artificiel avec python
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de résoudre la théorie des nombres entiers d'AOJ avec Python
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé de simuler la propagation de l'infection avec Python
J'ai essayé de créer diverses "données factices" avec Python faker
J'ai essayé différentes méthodes pour envoyer du courrier japonais avec Python
J'ai essayé de toucher Python (installation)
J'ai essayé webScraping avec python.
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
Mayungo's Python Learning Episode 3: J'ai essayé d'imprimer des nombres
J'ai essayé de visualiser les caractéristiques des nouvelles informations sur les personnes infectées par le virus corona avec wordcloud
J'ai essayé de m'organiser à propos de MCMC.
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
Je veux déboguer avec Python
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai essayé la communication SMTP avec Python
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de visualiser les signets volant vers Slack avec Doc2Vec et PCA
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
J'ai essayé de créer une liste de nombres premiers avec python
[Pandas] J'ai essayé d'analyser les données de ventes avec Python [Pour les débutants]
J'ai essayé de corriger "J'ai essayé la simulation probabiliste du jeu de bingo avec Python"
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de savoir si ReDoS est possible avec Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de détecter facilement les points de repère du visage avec python et dlib
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
J'ai essayé de résumer la gestion des exceptions Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé de commencer avec Hy