[PYTHON] Visualisez le nem 2019 avec WordCloud

Cet article est tiré du nem # 2 Advent Calendar 2019.

Contenu de cet article

① Extrayez uniquement les caractères des documents liés aux nem (2) Décomposez-le en plusieurs parties avec Mecab et visualisez-le avec WordCloud. ③ De plus, WordCloud n'est pas intéressant, je vais donc ajouter un petit effort.

environnement

Mac 10.15.1 Python 3.7.4

1. Extraire uniquement les caractères des documents liés aux nem

Au fait, quel est le document lié au nem qui semble être un résumé de 2019? Je suis d'accord. C'est un calendrier de l'avent.

~~ Cette fois, j'ai extrait les chaînes de caractères de tous les articles du calendrier de l'avent nem de cette année ~~ Si vous faites cela, cela n'a pas beaucoup de sens à moins que vous ne le sauvegardiez le dernier jour, donc pour le moment, le premier article Je souhaite recevoir le texte de @ 44uk_i3 Résumé des spécifications qui changent entre NEM1 et NEM2. (Correctement, j'ai obtenu la permission)

Style pour coller le code source pour le moment

scrapy.py


import urllib.request
from bs4 import BeautifulSoup

text = []

#URL du site cible
url = 'https://qiita.com/44uk_i3/items/53ad306d2c82df41803f'
html = urllib.request.urlopen(url)
soup = BeautifulSoup(html,'html.parser')

#L'article de Qiita est<div class="p-items_article">Parce que l'intérieur est le texte
article =  soup.findAll('div' , class_= 'p-items_article')

#Extraire uniquement le texte du texte
for i in article:
    text.append(i.text)

#Nem le texte extrait.Enregistrer au format txt
file = open('nem.txt','w',encoding='utf-8')
file.writelines(text)
file.close()

Je pense qu'il y a quelque chose de spécial à mentionner. Veuillez commenter si quelque chose se passe.

2. Décomposez-le en plusieurs parties avec Mecab et visualisez-le avec WordCloud

Oui, il sera démonté. Ecrire de cette façon me rappelle le jour où j'ai été impressionné par Mecab pour la première fois.

Mecab est un tel gars.

$ mecab
Des cuisses et des cuisses
Sumomo substantif,Général,*,*,*,*,Sumomo,Sumomo,Sumomo
Aussi assistant,Assistance,*,*,*,*,Aussi,Mo,Mo
Cuisse substantif,Général,*,*,*,*,Les pêches,pêche,pêche
Aussi assistant,Assistance,*,*,*,*,Aussi,Mo,Mo
Cuisse substantif,Général,*,*,*,*,Les pêches,pêche,pêche
Mots auxiliaires,syndicat,*,*,*,*,de,Non,Non
Dont nomenclature,Non indépendant,Avocat possible,*,*,*,domicile,Uchi,Uchi
EOS

Parlez dans le code source

nem_wordcloud.py


import MeCab
from wordcloud import WordCloud

#Ouvrez le texte enregistré
data = open("./nem.txt","rb").read()
text = data.decode('utf-8')

mecab = MeCab.Tagger('-Ochasen')
mecab.parse('')

#Analyse morphologique
node = mecab.parseToNode(text)

#Liste de mots à utiliser pour WordCloud
output = []

#Séparez les mots en utilisant des mots partiels
while node:
  word = node.surface
  hinnsi = node.feature.split(",")[0]
  #Spécifiez les mots de pièce à ajouter au tableau
  if hinnsi in ["verbe","adverbe","adjectif","nom"]:
    output.append(word)
  node = node.next

text = ' '.join(output)

#Chemin de la police japonaise(mac)
fpath = "/System/Library/Fonts/Hiragino Mincho ProN.ttc"

#Génération WordCloud. Spécifiez la couleur d'arrière-plan
wc = WordCloud(
    background_color="white",
    font_path=fpath,
    width=800,
    height=600).generate(text)

#Enregistrer au format png
wc.to_file("./wc.png ")

Oui, changez la police comme vous le souhaitez. Les polices par défaut pour Mac se trouvent dans / System / Library / Fonts /. Veuillez google Windows.

Les choses qui ont été achevées jusqu'à présent

nem.png

J'ai fait quelque chose comme ça.

3. Ajoutez un autre effort

Si c'est le contenu jusqu'à présent, il y a beaucoup d'articles sur Qiita, donc j'ajouterai un autre effort.

Gâtez d'abord avec le code source

nem_wordcloud_2.py


import MeCab
from wordcloud import WordCloud
import numpy as np
from wordcloud import WordCloud ,ImageColorGenerator
from PIL import Image

#Ouvrez le texte enregistré
data = open("./nem.txt","rb").read()
text = data.decode('utf-8')

mecab = MeCab.Tagger('-Ochasen')
mecab.parse('')

#Analyse morphologique
node = mecab.parseToNode(text)

#Liste de mots à utiliser pour WordCloud
output = []

#Séparez les mots en utilisant des mots partiels
while node:
  word = node.surface
  hinnsi = node.feature.split(",")[0]
  #Spécifiez les mots de pièce à ajouter au tableau
  if hinnsi in ["verbe","adverbe","adjectif","nom"]:
    output.append(word)
  node = node.next

#Chemin de la police japonaise(mac)
fpath = "/System/Library/Fonts/Hiragino Mincho ProN.ttc"

text = ' '.join(output)

imagepaht = "./nem_icon_black.png "
img_color = np.array(Image.open(imagepaht))

wc = WordCloud(
    width=800,
    height=800,
    font_path=fpath,
    mask=img_color,
    background_color="white",
    collocations=False,).generate(text)

wc.to_file("./wc_nem.png ")

Oui, j'ai préparé cette image en premier. nem_icon_black.png

Comme vous le savez tous, j'ai rendu cette icône noire. Cette image est le . / Nem_icon_black.png spécifié dans ʻimagepaht`.

Alors, voici l'image qui est créée lorsque vous exécutez ce code.

Le produit fini

wc_nem.png

Mieux que ce à quoi je m'attendais.

Résumé

Si vous augmentez un peu plus la quantité de données, il semble que vous puissiez analyser ce qui était important pour nem en 2019.

prime

Vous pouvez également créer une telle version en modifiant l'image d'origine ou en modifiant les paramètres. wc_symbol.png

Recommended Posts

Visualisez le nem 2019 avec WordCloud
Visualisons le fil 2ch avec WordCloud-analyse morphologique / édition WordCloud-
Visualisez rapidement avec les pandas
J'ai joué avec wordcloud!
Visualisez les réclamations avec l'IA
Visualisons le fil 2ch avec WordCloud-Scraping-
Visualisez les avis sur les applications à l'aide de wordcloud
Visualisez les informations de localisation avec Basemap
Visualisons la connaissance de Wikidata avec Neo4j
J'ai créé wordcloud avec Python.
[Python] J'ai essayé de visualiser des tweets sur Corona avec WordCloud
Visualisez l'arbre de décision avec le notebook Jupyter
Visualisez les dépendances des packages python avec graphviz
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
J'ai essayé de visualiser le texte du roman "Weather Child" avec Word Cloud
[Introduction à WordCloud] Jouez avec le scraping ♬
Créez wordcloud à partir de votre tweet avec python3
J'ai essayé de visualiser AutoEncoder avec TensorFlow
Essayez rapidement de visualiser votre ensemble de données avec des pandas
Visualisez le point P qui fonctionne avec Python
Visualisez l'arbre de décision scikit-learn avec Treemap de Plotly