Cet article est tiré du nem # 2 Advent Calendar 2019.
① 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.
Mac 10.15.1 Python 3.7.4
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)
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.
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
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.
J'ai fait quelque chose comme ça.
Si c'est le contenu jusqu'à présent, il y a beaucoup d'articles sur Qiita, donc j'ajouterai un autre effort.
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.
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.
Mieux que ce à quoi je m'attendais.
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.
Vous pouvez également créer une telle version en modifiant l'image d'origine ou en modifiant les paramètres.
Recommended Posts