Cet article est le 26e jour du Calendrier de l'Avent de l'Université de Tokyo 2019!
L'article d'hier était [L'histoire de l'exécution de Windows 98 un jour saint] de Lapee (https://rapit.hatenablog.jp/entry/sakurauchiriko).
Cette fois, j'ai essayé de visualiser le texte de la nouvelle version de "Weather Child" </ font> avec wordcloud de python, donc je vais résumer la méthode simple. wordcloud est un outil qui sélectionne les mots qui apparaissent fréquemment dans une phrase et les affiche (visualise) dans une taille en fonction de la fréquence d'apparition. Il est plus rapide de montrer l'image que de l'expliquer avec des mots. C'est comme ça. ↓ (Au fait, cela semble être la page du wiki de Gekiko Pun Pun Maru) Vous avez peut-être vu quelqu'un faire quelque chose comme ça dans votre tweet. Cette fois, je voudrais le faire avec l'enfant météo.
Citation: https://www.pc-koubou.jp/magazine/2646
[Novel Weather Child (Kakugawa Bunko) -Amazon](https://www.amazon.co.jp/s?k=%E5%A4%A9%E6%B0%97%E3%81%AE%E5% Cité de AD% 90 +% E5% B0% 8F% E8% AA% AC & __ mk_ja_JP =% E3% 82% AB% E3% 82% BF% E3% 82% AB% E3% 83% 8A & ref = nb_sb_noss)
Tout d'abord, créez un corpus du texte du roman original. J'ai eu une connaissance pour m'aider. Copiez une phrase à la fois depuis Kindle et insérez-la dans Excel. En outre, sur ce site, vous pouvez télécharger gratuitement des données textuelles de plus de 13 000 œuvres littéraires modernes telles que «cœur» et «disqualification humaine». Vous pouvez le faire, alors je pense que vous devriez l'essayer à la place. Si vous l'essayez dans un roman moderne, vous trouverez des mots savoureux, ce qui est également intéressant. Les derniers romans tels que "The Child of the Weather" ne peuvent pas être téléchargés, alors n'ayez pas peur. ~~ (Si vous voulez le faire, veuillez créer le vôtre) ~~
Installez les bibliothèques nécessaires à l'analyse morphologique. Cette fois, j'utiliserai Mecab. Référence: Analyse morphologique avec Python et MeCab
Aussi, afin de prendre en charge de nouveaux mots sur le Web, nous inclurons également Neologd, un dictionnaire de dictionnaire système pour MeCab. Référence: https://qiita.com/spiderx_jp/items/7f8cbfd762c9abab660b
J'omettrai la méthode d'installation.
Premier,
Je pense qu'il y a beaucoup de monde, donc pour expliquer, c'est le travail le plus basique dans le traitement du langage naturel, ** Le processus consiste à diviser la phrase en mots et à déterminer la partie de la phrase **.
Par exemple
"Dans le ciel pluvieux de mars, le sifflet qui informe le départ du ferry résonne longtemps" </ font>
Supposons qu'il y ait une phrase. Si vous divisez cela en mots
'Mars', '', 'Rain Sky', 'to', ',', 'Ferry', '', 'Départ', 'Notifier', 'Notifier', ' Sifflet ',' est ',' long ',' son '</ font>
Il peut être divisé comme ça. Cela s'appelle ** «écriture séparée» **. Et si vous identifiez la partie de ces mots, Mars: Nomenclature : Auxiliaire Ciel pluvieux: nomenclature À: Auxiliaire ,: Symbole Ferry: Nomenclature : Auxiliaire Départ: Nomenclature A: auxiliaire Informer: verbe Sifflet: Nom G: Auxiliaire Adjectifs longs Sons: verbes </ font>
Vous pouvez l'analyser comme ça. Le processus jusqu'à présent est l'analyse morphologique. Pour la visualisation, je pense que les caractéristiques de l'enfant météo apparaissent dans les mots de la phrase, après tout, ** nomenclature **, donc je vais extraire uniquement ** nomenclature ** des mots analysés morphologiquement. Le code ressemble à ceci
import numpy as np
import pandas as pd
import MeCab
#Appliquer Neologd à Mecab
tagger = MeCab.Tagger('-Owakati -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
tagger.parse('')
def tokenize_ja(text, lower):
node = tagger.parseToNode(str(text))
while node:
if lower and node.feature.split(',')[0] in ["nom"]:#Spécifiez les mots de pièce à acquérir en divisant
yield node.surface.lower()
node = node.next
def tokenize(content, token_min_len, token_max_len, lower):
return [
str(token) for token in tokenize_ja(content, lower)
if token_min_len <= len(token) <= token_max_len and not token.startswith('_')
]
#Lecture des données d'entraînement
path='../data/tenkinoko.csv'
df_tenki=pd.read_csv(path,encoding="SHIFT-JIS")
wakati_tenkinoko_text = []
for i in df_tenki['text']:
txt = tokenize(i, 1, 10000, True)
wakati_tenkinoko_text.append(txt)
np.savetxt("../work/tenki_corpus.txt", wakati_tenkinoko_text,fmt='%s', delimiter=',')
df_tenki['wakati_tenkinoko'] = wakati_tenkinoko_text
Le résultat ressemble à ceci ↓ Désormais, vous ne pouvez extraire que la nomenclature de la phrase!
Une fois que vous avez fait l'analyse morphologique, il est enfin temps pour wordcloud! Donc, cela ne ressemble pas à un nuage de mots comme "ceci" ou "là" ~~ (je veux juste dire) ~~ Certains mots absurdes sortent, donc ils sont supprimés en tant que mots d'arrêt. Le code ressemble à ceci
from wordcloud import WordCloud
tenki_wordlist = df_tenki['wakati_tenkinoko'].values.tolist()
word_cloud_list = []
for i in tenki_wordlist:
for j in i:
word_cloud_list.append(j)
result = ','.join(word_cloud_list)
#Chemin de la police japonaise
fpath = "../data/ipaexg.ttf"
stop_words = ["de","Hmm","quoi","Sa","!?","de","SaHmm","Yo","Etc.","chose","Il","alors","ちゃHmm","Quoi","vouloir voir","Tel quel","くHmm","もde","!?」","Là","Où","Au fait","cette","tarte","なHmm","ici"]
wordcloud = WordCloud(background_color='white',
font_path=fpath, width=800, height=600, stopwords=set(stop_words)).generate(result)
#Enregistrer l'image
wordcloud.to_file('./wordcloud.png')
Voici les résultats! Hey!
** Ça y ressemble! !! !! !! ** ** Après tout, la revendication du nom du personnage est très intense. C'est vrai parce que c'est un roman. En plus, "Sempai", "Sunny woman", "Roof" et ainsi de suite. Il y a quelques mots dont vous avez une bonne idée. Je n'ai pas l'impression que la scène du film me vient à l'esprit simplement en regardant cette image. Oui. ~~ (je ne sais pas ce que c'est, mais j'ai été un peu impressionné) ~~
Je pense que le résultat était plutôt bon. C'est amusant de jouer avec les données. Ensuite, je vais l'analyser avec word2vec. Puis ~
Recommended Posts