Sprachverarbeitung 100 Schläge 2015 ["Kapitel 4: Morphologische Analyse"](http: //www.cl.ecei.tohoku) .ac.jp / nlp100 / # ch4) 38. "Hydrosis" Datensatz. Es ist einfach, solange Sie den "Tofu" des vorherigen Klopfens überwinden. Wenn Sie kein Etikett herausbringen, müssen Sie sich nicht mit "Tofu" befassen.
Verknüpfung | Bemerkungen |
---|---|
038.Histogramm.ipynb | Antwortprogramm GitHub Link |
100 Klicks Amateur-Sprachverarbeitung:38 | Kopieren Sie die Quelle vieler Quellteile und fügen Sie sie ein |
MeCab Official | MeCab-Seite zum ersten Mal |
Art | Ausführung | Inhalt |
---|---|---|
OS | Ubuntu18.04.01 LTS | Es läuft virtuell |
pyenv | 1.2.16 | Ich benutze pyenv, weil ich manchmal mehrere Python-Umgebungen benutze |
Python | 3.8.1 | python3 auf pyenv.8.Ich benutze 1 Pakete werden mit venv verwaltet |
Mecab | 0.996-5 | apt-Installieren Sie mit get |
In der obigen Umgebung verwende ich die folgenden zusätzlichen Python-Pakete. Einfach mit normalem Pip installieren.
Art | Ausführung |
---|---|
matplotlib | 3.1.3 |
pandas | 1.0.1 |
Wenden Sie den morphologischen Analysator MeCab auf Natsume Sosekis Roman "Ich bin eine Katze" an und erhalten Sie die Statistik der Wörter im Roman.
Morphologische Analyse, MeCab, Teiltexte, Häufigkeit des Auftretens, Zipf-Gesetz, matplotlib, Gnuplot
Verwenden von MeCab für den Text (neko.txt) von Natsume Sosekis Roman "Ich bin eine Katze" Führen Sie eine morphologische Analyse durch und speichern Sie das Ergebnis in einer Datei namens neko.txt.mecab. Verwenden Sie diese Datei, um ein Programm zu implementieren, das die folgenden Fragen beantwortet.
Verwenden Sie für die Probleme 37, 38, 39 matplotlib oder Gnuplot.
Zeichnen Sie ein Histogramm der Häufigkeit des Auftretens von Wörtern (die horizontale Achse repräsentiert die Häufigkeit des Auftretens und die vertikale Achse repräsentiert die Anzahl der Arten von Wörtern, die die Häufigkeit des Auftretens als Balkendiagramm verwenden).
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.family'] = 'IPAexGothic'
def read_text():
# 0:Oberflächentyp(surface)
# 1:Teil(pos)
# 2:Teil Teil Unterklassifizierung 1(pos1)
# 7:Grundform(base)
df = pd.read_table('./neko.txt.mecab', sep='\t|,', header=None,
usecols=[0, 1, 2, 7], names=['surface', 'pos', 'pos1', 'base'],
skiprows=4, skipfooter=1 ,engine='python')
return df[(df['pos'] != 'Leer') & (df['surface'] != 'EOS') & (df['pos'] != 'Symbol')]
df = read_text()
hist = df['surface'].value_counts().plot.hist(bins=20, range=(1, 20))
hist.set_xlabel('Häufigkeit des Auftretens')
hist.set_ylabel('Anzahl der Worttypen')
Verwenden Sie einfach "Handlung" von "Pandas". Ich habe auch ein Etikett hinzugefügt.
python
hist = df['surface'].value_counts().plot.hist(bins=20, range=(1, 20))
hist.set_xlabel('Häufigkeit des Auftretens')
hist.set_ylabel('Anzahl der Worttypen')
Wenn das Programm ausgeführt wird, werden die folgenden Ergebnisse ausgegeben. Nun, es sieht so aus.