[PYTHON] 100 Sprachverarbeitung Knock-37 (mit Pandas): Top 10 der häufigsten Wörter

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.

Referenzlink

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

Umgebung

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

Kapitel 4: Morphologische Analyse

Inhalt des Studiums

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

Inhalt anklopfen

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.

37. Die 10 häufigsten Wörter

Zeigen Sie die 10 am häufigsten vorkommenden Wörter und ihre Häufigkeit des Auftretens in einem Diagramm an (z. B. einem Balkendiagramm).

Antworten

Antwortprogramm [037. Top 10 der am häufigsten verwendeten Wörter.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/04.%E5%BD%A2%E6%85%8B%E7%B4%A0% E8% A7% A3% E6% 9E% 90 / 037.% 20% E9% A0% BB% E5% BA% A6% E4% B8% 8A% E4% BD% 8D10% E8% AA% 9E.ipynb)

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()

Kommentar beantworten

Kompatibel mit Tofu (entspricht verstümmelten Grafikzeichen)

apt-get install fonts-ipaexfont

3. Geben Sie die Schriftart in Python an

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'

Grafikausgabe

"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()

Ausgabeergebnis (Ausführungsergebnis)

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.

Alle Worte

image.png

Wörter ohne Hilfswörter und Hilfsverben

image.png

Recommended Posts

100 Sprachverarbeitung Knock-37 (mit Pandas): Top 10 der häufigsten Wörter
Sprachverarbeitung 100 Knocks-31 (mit Pandas): Verben
100 Sprachverarbeitung Knock-38 (mit Pandas): Histogramm
100 Sprachverarbeitungsklopfen (2020): 40
100 Sprachverarbeitungsklopfen (2020): 32
100 Sprachverarbeitungsklopfen (2020): 35
100 Sprachverarbeitung Knock-33 (mit Pandas): Sahen Nomen
100 Sprachverarbeitungsklopfen (2020): 47
100 Sprachverarbeitungsklopfen (2020): 39
100 Sprachverarbeitungsklopfen (2020): 22
100 Sprachverarbeitungsklopfen (2020): 26
100 Sprachverarbeitungsklopfen (2020): 34
100 Sprachverarbeitungsklopfen (2020): 42
100 Sprachverarbeitungsklopfen (2020): 29
100 Sprachverarbeitungsklopfen (2020): 49
100 Sprachverarbeitungsklopfen 06 ~ 09
100 Sprachverarbeitungsklopfen (2020): 43
100 Sprachverarbeitungsklopfen (2020): 24
100 Sprachverarbeitungsklopfen (2020): 45
100 Sprachverarbeitungsklopfen (2020): 10-19
100 Sprachverarbeitung Knock-35 (mit Pandas): Nomenklatur
100 Sprachverarbeitungsklopfen (2020): 00-09
100 Sprachverarbeitungsklopfen (2020): 31
100 Sprachverarbeitungsklopfen (2020): 48
100 Sprachverarbeitungsklopfen (2020): 44
100 Sprachverarbeitungsklopfen (2020): 41
100 Sprachverarbeitungsklopfen (2020): 37
100 Sprachverarbeitung Knock-39 (mit Pandas): Zipf-Gesetz
100 Sprachverarbeitungsklopfen (2020): 25
100 Sprachverarbeitungsklopfen (2020): 23
100 Sprachverarbeitungsklopfen (2020): 33
100 Sprachverarbeitungsklopfen (2020): 20
100 Sprachverarbeitungsklopfen (2020): 27
100 Sprachverarbeitungsklopfen (2020): 46
100 Sprachverarbeitungsklopfen (2020): 21
100 Sprachverarbeitung Knock-34 (mit Pandas): "B von A"
100 Sprachverarbeitungsklopfen (2020): 36
100 Sprachverarbeitung Knock-20 (unter Verwendung von Pandas): Lesen von JSON-Daten
100 Sprachverarbeitung Knock-32 (mit Pandas): Prototyp des Verbs
100-Sprach-Verarbeitung Knock-98 (unter Verwendung von Pandas): Clustering nach Ward-Methode
100 Sprachverarbeitung Knock-99 (mit Pandas): Visualisierung durch t-SNE
100 Sprachverarbeitung Knock-95 (mit Pandas): Bewertung mit WordSimilarity-353
100 Amateur-Sprachverarbeitungsklopfen: 41
100 Amateur-Sprachverarbeitungsklopfen: 71
100 Amateur-Sprachverarbeitungsklopfen: 56
100 Amateur-Sprachverarbeitungsklopfen: 24
100 Amateur-Sprachverarbeitungsklopfen: 50
100 Amateur-Sprachverarbeitungsklopfen: 59
100 Amateur-Sprachverarbeitungsklopfen: 62
100 Amateur-Sprachverarbeitungsklopfen: 60
100 Amateur-Sprachverarbeitungsklopfen: 92
100 Amateur-Sprachverarbeitungsklopfen: 30
100 Amateur-Sprachverarbeitungsklopfen: 06
100 Amateur-Sprachverarbeitungsklopfen: 84
100 Amateur-Sprachverarbeitungsklopfen: 81
100 Amateur-Sprachverarbeitungsklopfen: 33
100 Amateur-Sprachverarbeitungsklopfen: 46
100 Amateur-Sprachverarbeitungsklopfen: 88
100 Amateur-Sprachverarbeitungsklopfen: 89
100 Amateur-Sprachverarbeitungsklopfen: 40
100 Amateur-Sprachverarbeitungsklopfen: 45