Sprachverarbeitung 100 Schläge 2015 ["Kapitel 4: Morphologische Analyse"](http: //www.cl.ecei.tohoku) .ac.jp / nlp100 / # ch4) 37. "Top 10 der häufigsten Wörter".
Dieses Mal werden wir matplotlib
für die Grafikanzeige verwenden. Es scheint, dass jeder in matplotlib
" Tofu-Problem " (Japanisch) fallen wird Entspricht dem Phänomen, dass die angezeigten tofuähnlichen Zeichen in der Grafik angezeigt werden.
Verknüpfung | Bemerkungen |
---|---|
037.Top 10 der häufigsten Wörter.ipynb | Antwortprogramm GitHub Link |
100 Klicks Amateur-Sprachverarbeitung:37 | 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.
Zeigen Sie die 10 am häufigsten vorkommenden Wörter und ihre Häufigkeit des Auftretens in einem Diagramm an (z. B. einem Balkendiagramm).
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'IPAexGothic'
def read_text():
# 0:Oberflächentyp(surface)
# 1:Teil(pos)
# 2:Teiltexte 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()
df['surface'].value_counts()[:10].plot.bar()
#Hilfswörter und Hilfsverben ausschließen
df[~df['pos'].str.startswith('Helfen')]['surface'].value_counts()[:10].plot.bar()
apt-get install fonts-ipaexfont
[Verstümmelte japanische Zeichen in matplotlib auflösen](https://qiita.com/katuemon/items/5c4db01997ad9dc343e0#%E3%83%95%E3%82%A9%E3%83%B3%E3%83% 88% E3% 82% AD% E3% 83% A3% E3% 83% 83% E3% 82% B7% E3% 83% A5% E3% 81% AE% E5% 89% 8A% E9% 99% A4) - Über verstümmelte japanische Zeichen in matplotlib 1. Schriftarten installieren Installieren Sie Schriftarten mit apt-get
2. Löschen Sie den Cachematplotlib Löschen Sie physisch die folgenden Dateien, die der Schriftart-Cache von
sind. Ich kenne den Unterschied zwischen den beiden nicht, aber ich habe ihn mit dem Gefühl gelöscht, dass "der Cache geleert werden kann".
/ Users / username / .cache / matplotlib / fontlist-v300.json
/ Users / username / .cache / matplotlib / fontlist-v310.json
Geben Sie die Schriftart für die Ausgabe des Diagramms mit den folgenden Einstellungen in Python an. Dies vervollständigt die "Tofu" -Unterstützung.
python
plt.rcParams['font.family'] = 'IPAexGothic'
"Pandas" ist sehr praktisch, da es ausgegeben werden kann, während "Plot" verwendet wird.
python
df['surface'].value_counts()[:10].plot.bar()
#Hilfswörter und Hilfsverben ausschließen
df[~df['pos'].str.startswith('Helfen')]['surface'].value_counts()[:10].plot.bar()
Wenn das Programm ausgeführt wird, werden die folgenden Ergebnisse ausgegeben. Schließlich ist es einfacher zu verstehen, wenn Sie es grafisch darstellen, als nur die Zahlen zu betrachten.
Recommended Posts