[PYTHON] Ich habe versucht, den Text des Romans "Wetterkind" mit Word Cloud zu visualisieren

Einführung

Dieser Artikel ist der 26. Tag des Adventskalenders der Tokyo City University 2019!

Der gestrige Artikel war Lapees Geschichte über das Ausführen von Windows 98 an einem heiligen Tag.

Überblick

Dieses Mal habe ich versucht, den Text der neuartigen Version von "Weather Child" </ font> mit der Wortwolke von Python zu visualisieren, daher werde ich die einfache Methode zusammenfassen. wordcloud ist ein Tool, das Wörter auswählt, die häufig in einem Satz vorkommen, und sie in einer Größe anzeigt (visualisiert), die der Häufigkeit des Auftretens entspricht. Es ist schneller, das Bild zu zeigen, als es in Worten zu erklären. Es ist so. ↓ (Übrigens scheint dies die Seite von Gekiko Pun Pun Marus Wiki zu sein) Möglicherweise haben Sie in Ihrem Tweet jemanden gesehen, der so etwas tut. Diesmal würde ich es gerne mit dem Wetterkind machen.

image.png Zitat: https://www.pc-koubou.jp/magazine/2646

image.png [Neuartiges Wetterkind (Kakugawa Bunko) -Amazon](https://www.amazon.co.jp/s?k=%E5%A4%A9%E6%B0%97%E3%81%AE%E5% Zitiert aus 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)

Rauer Fluss

Erstellen Sie einen Korpus (Textdaten)

Erstellen Sie zunächst einen Korpus des Textes des ursprünglichen Romans. Ich hatte einen Bekannten, der mir half. Kopieren Sie jeweils einen Satz von kindle und fügen Sie ihn in Excel ein. スクリーンショット 2019-12-08 15.38.22.png Außerdem können Sie auf dieser Website kostenlose Textdaten von mehr als 13000 modernen literarischen Werken wie "Herz" und "Disqualifikation des Menschen" herunterladen. Sie können es tun, also denke ich, Sie sollten es stattdessen versuchen. Wenn Sie es in einem modernen Roman versuchen, werden Sie einige köstliche Wörter finden, was auch interessant ist. Die neuesten Romane wie "Das Kind des Wetters" können nicht heruntergeladen werden, also keine Angst. ~~ (Wenn du es machen willst, mach bitte dein eigenes) ~~

Installieren Sie die erforderlichen Bibliotheken (Mecab, Neologd)

Installieren Sie die für die morphologische Analyse erforderlichen Bibliotheken. Dieses Mal werde ich Mecab verwenden. Referenz: Morphologische Analyse mit Python und MeCab

Um neue Wörter im Web zu unterstützen, enthalten wir auch Neologd, ein Systemwörterbuch für MeCab. Referenz: https://qiita.com/spiderx_jp/items/7f8cbfd762c9abab660b

Ich werde die Installationsmethode weglassen.

Versuchen Sie es mit einer morphologischen Analyse

Zuerst,

Was ist morphologische Analyse?

Ich denke, dass es viele Menschen gibt. Um es zu erklären, es ist die grundlegendste Arbeit in der Verarbeitung natürlicher Sprache. ** Der Prozess besteht darin, den Satz in Wörter zu unterteilen und den Teil des Satzes zu bestimmen **.

Zum Beispiel

"Am regnerischen Himmel im März hallt die Pfeife, die den Abflug der Fähre informiert, für lange Zeit wider" </ font>

Angenommen, es gibt einen Satz. Wenn Sie dies in Worte fassen

'März', '', 'Regenhimmel', 'bis', ',', 'Fähre', '', 'Abfahrt', 'Benachrichtigen', 'Benachrichtigen', ' Pfeife ',' ist ',' lang ',' klingt '</ font>

Es kann so geteilt werden. Dies wird als "separates Schreiben" bezeichnet. Und wenn Sie den Teil dieser Wörter identifizieren, März: Nomenklatur : Hilfs Regnerischer Himmel: Nomenklatur An: Hilfs ,: Symbol Fähre: Nomenklatur : Hilfs Abfahrt: Nomenklatur A: Hilfs Informieren: verb Pfeife: Nomen G: Hilfs Lange Adjektive Sounds: Verben </ font>

Sie können es so analysieren. Der Prozess bis zu diesem Punkt ist die morphologische Analyse. Zur Visualisierung denke ich, dass die Merkmale des Wetterkindes in den Wörtern im Satz immerhin ** Nomenklatur ** erscheinen, so dass ich nur ** Nomenklatur ** aus den morphologisch analysierten Wörtern extrahieren werde. Der Code sieht so aus

import numpy as np
import pandas as pd
import MeCab

#Wenden Sie Neologd auf Mecab an
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 ["Substantiv"]:#Geben Sie den Teil des Wortes an, der separat erworben werden soll
            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('_')
    ]

#Trainingsdaten lesen
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

Das Ergebnis sieht so aus ↓ スクリーンショット 2019-12-08 17.23.34.png Jetzt können Sie nur die Nomenklatur aus dem Satz extrahieren!

Visualisiere mit wordclud

Sobald Sie die morphologische Analyse durchgeführt haben, ist es endlich Zeit für Wordcloud! Es sieht also nicht aus wie eine Wortwolke wie "dies" oder "dort". Der Code sieht so aus

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)

#Japanischer Schriftpfad
fpath = "../data/ipaexg.ttf"

stop_words = ["von","Hmm","Was","Sa","!?","von","SaHmm","Yo","Etc.","Ding","Es","damit","ちゃHmm","Was","will sehen","Wie es ist","くHmm","もvon","!?」","Dort","Wo","Apropos","Dies","Kuchen","なHmm","Hier"]

wordcloud = WordCloud(background_color='white',
    font_path=fpath, width=800, height=600, stopwords=set(stop_words)).generate(result)

#Bild speichern
wordcloud.to_file('./wordcloud.png')

Ausführungsergebnis

Hier sind die Ergebnisse! Hallo!

image.png ** Es sieht so aus als ob! !! !! !! ** ** ** Immerhin ist der Anspruch des Charakternamens sehr intensiv. Das ist richtig, weil es ein Roman ist. Außerdem "Sempai", "Sunny Woman", "Roof" und so weiter. Es gibt einige Wörter, von denen Sie eine gute Vorstellung haben. Ich habe nicht das Gefühl, dass mir die Szene des Films nur durch das Betrachten dieses Bildes in den Sinn kommt. Ja. ~~ (Ich weiß nicht was es ist, aber ich war ein wenig beeindruckt) ~~

Zusammenfassung

Ich finde das Ergebnis ziemlich gut. Es macht Spaß, mit Daten zu spielen. Als nächstes werde ich es mit word2vec analysieren. Dann ~

Recommended Posts