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.
・ Peut écrire des programmes Python dans une certaine mesure ・ Ceux qui sont intéressés par wordcloud
OS utilisable (fonctionne sur Windows et Mac) ┗mac OS Catalina 10.15.7 ┗Widows 10 Python 3.8.3 mecab-python3
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.
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.
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
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()
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