Sprachverarbeitung 100 Schläge 2015 ["Kapitel 4: Morphologische Analyse"](http: //www.cl.ecei.tohoku) Dies ist die Aufzeichnung von 32. "Prototyp des Verbs" von .ac.jp / nlp100 / # ch4). Dieses Mal verwende ich Pandas, damit ich es in einem Satz verarbeiten kann, und es ist so einfach, dass ich es nicht schlagen kann. Es muss kein unabhängiger Artikel sein ...
Verknüpfung | Bemerkungen |
---|---|
032.Prototyp des Verbs.ipynb | Antwortprogramm GitHub Link |
100 Klicks Amateur-Sprachverarbeitung:32 | 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 |
---|---|
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.
Extrahieren Sie alle Originalformen des Verbs.
import pandas as pd
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[df['pos'] == 'Verb']['base']
Die vorherige "Oberflächenform des Verbs" wurde gerade in die "ursprüngliche Form des Verbs" geändert. Schreiben Sie bei Pandas einfach die Bedingungen neu.
python
df[df['pos'] == 'Verb']['base']
Wenn das Programm ausgeführt wird, werden die folgenden Ergebnisse ausgegeben.
Ausgabeergebnis
13 geboren
19
31 weinen
37
39
...
212527 sterben
212532 bekommen
212537 sterben
212540 bekommen
212541
Name: base, Length: 28119, dtype: object