[PYTHON] Sprachverarbeitung 100 Knocks-31 (mit Pandas): Verben

Sprachverarbeitung 100 Schläge 2015 ["Kapitel 4: Morphologische Analyse"](http: //www.cl.ecei.tohoku) Es ist eine Aufzeichnung von 31. "Verb" von .ac.jp / nlp100 / # ch4). Da ich "Pandas" benutze, kann ich es in einem Satz verarbeiten und es ist so einfach, dass ich es nicht schlagen kann.

Referenzlink

Verknüpfung Bemerkungen
031.Verb.ipynb Antwortprogramm GitHub Link
100 Klicks Amateur-Sprachverarbeitung:31 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
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.

31. Ausführlich

Extrahieren Sie alle Oberflächenformen des Verbs.

Antworten

Antwortprogramm [031. Verb.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/04.%E5%BD%A2%E6%85%8B%E7%B4%A0%E8%A7 % A3% E6% 9E% 90 / 031.% E5% 8B% 95% E8% A9% 9E.ipynb)

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']['surface']

Kommentar beantworten

Löschen Sie zusätzliche Zeilen in DataFrame

Ich entferne die zusätzlichen Zeilen, die ich aus der Datei gelesen habe. Technisch gesehen werden nur die erforderlichen Zeilen extrahiert und nicht "gelöscht". df ['pos']! = 'Blank' sollte für pos1 angegeben werden (Teil-Teil-Unterklassifizierung 1), aber wie ich letztes Mal erklärt habe, werden die Leerzeichen um eine Spalte verschoben, sodass keine Auswahl besteht Eine Bedingung wird für pos (Teil des Wortes) angegeben.

python


df[(df['pos'] != 'Leer') & (df['surface'] != 'EOS') & (df['pos'] != 'Symbol')]

Infolge des Entfernens der zusätzlichen Zeile lauten die DataFrame-Informationen wie folgt in "print (df.info ())".

Int64Index: 180417 entries, 0 to 212550
Data columns (total 4 columns):
 #   Column   Non-Null Count   Dtype 
---  ------   --------------   ----- 
 0   surface  180417 non-null  object
 1   pos      180417 non-null  object
 2   pos1     180417 non-null  object
 3   base     180417 non-null  object
dtypes: object(4)
memory usage: 6.9+ MB

Und die ersten und letzten 5 Zeilen des DataFrame. image.png

Oberflächenform-Extraktion von Verben

Dies ist der Teil, in dem die "Oberflächenform" des "Verbs" extrahiert wird.

python


df[df['pos'] == 'Verb']['surface']

Ausgabeergebnis (Ausführungsergebnis)

Wenn das Programm ausgeführt wird, werden die folgenden Ergebnisse ausgegeben.

Ausgabeergebnis


13 Geboren
19
31 weinen
37
39
          ..
212527 tot
212532 bekommen
212537 tot
212540 Gewinn
212541
Name: surface, Length: 28119, dtype: object

Recommended Posts

Sprachverarbeitung 100 Knocks-31 (mit Pandas): Verben
100 Sprachverarbeitung Knock-38 (mit Pandas): Histogramm
100 Sprachverarbeitung Knock-33 (mit Pandas): Sahen Nomen
100 Sprachverarbeitung Knock-35 (mit Pandas): Nomenklatur
100 Sprachverarbeitung Knock-39 (mit Pandas): Zipf-Gesetz
100 Sprachverarbeitung Knock-34 (mit Pandas): "B von A"
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 Sprachverarbeitungsklopfen (2020): 28
100 Sprachverarbeitung Knock-76 (mit Scicit-Learn): Beschriftung
100 Sprachverarbeitung Knock-36 (unter Verwendung von Pandas): Häufigkeit des Auftretens von Wörtern
100 Sprachverarbeitung Knock: Kapitel 2 UNIX-Befehlsgrundlagen (mit Pandas)
100 Sprachverarbeitung Knock-83 (mit Pandas): Messung der Wort- / Kontexthäufigkeit
100 Sprachverarbeitung Knock-30 (unter Verwendung von Pandas): Lesen der Ergebnisse der morphologischen Analyse
100 Sprachverarbeitungsklopfen (2020): 38
100 Sprachverarbeitung klopfen 00 ~ 02
100 Sprachverarbeitung Knock-73 (mit Scikit-Learn): Lernen
100 Sprachverarbeitung Knock-74 (mit Scicit-Learn): Vorhersage
100 Sprachverarbeitung Knock-84 (mit Pandas): Erstellen einer Wortkontextmatrix
100 Sprachverarbeitung Knock-97 (mit Scicit-Learn): k-bedeutet Clustering
Sprachverarbeitung 100 Knocks-47: Mining der funktionalen Verbsyntax
100 Sprachverarbeitung Knock-71 (mit Stanford NLP): Stoppwort
100 Sprachverarbeitung klopfen 2020 [00 ~ 39 Antwort]
100 Sprachverarbeitung klopfen 2020 [00-79 Antwort]
100 Sprachverarbeitung Knock 2020 Kapitel 1
100 Amateur-Sprachverarbeitungsklopfen: 17
100 Sprachverarbeitung klopfen 2020 [00 ~ 49 Antwort]
100 Sprachverarbeitung Knock-52: Stemming
100 Sprachverarbeitung Knock Kapitel 1
100 Amateur-Sprachverarbeitungsklopfen: 07
100 Sprachverarbeitung Knock 2020 Kapitel 3
100 Sprachverarbeitung Knock 2020 Kapitel 2
100 Amateur-Sprachverarbeitungsklopfen: 09
100 Amateur-Sprachverarbeitungsklopfen: 47
100 Sprachverarbeitung Knock-53: Tokenisierung
100 Amateur-Sprachverarbeitungsklopfen: 97
100 Sprachverarbeitung klopfen 2020 [00 ~ 59 Antwort]
100 Amateur-Sprachverarbeitungsklopfen: 67
100 Sprachverarbeitung Knock-90 (mit Gensim): Lernen mit word2vec
100-Sprach-Verarbeitung Knock-79 (mit Scikit-Learn): Präzisions-Recall-Grafikzeichnung
Sprachverarbeitung 100 Schläge-45: Extraktion von Verbfallmustern
100 Sprachverarbeitung Knock-75 (mit Scicit-Learn): Gewicht der Identität
100 Sprachverarbeitung Knock-72 (unter Verwendung von Stanford NLP): Identitätsextraktion
100 Sprachverarbeitung Knock-93 (unter Verwendung von Pandas): Berechnung der Genauigkeitsrate der Analogie-Aufgabe
100 Sprachverarbeitungsklopfen mit Python 2015
100 Sprachverarbeitung Knock-51: Wortausschnitt
100 Sprachverarbeitung Knock-58: Extraktion von Taple
100 Sprachverarbeitung Knock-57: Abhängigkeitsanalyse
100 Sprachverarbeitung Knock-50: Satzumbruch
100 Sprachverarbeitung Knock Kapitel 1 (Python)
100 Sprachverarbeitung Knock Kapitel 2 (Python)
100 Sprachverarbeitung Knock-25: Vorlagenextraktion
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020
100 Sprachverarbeitung Knock-56: Co-Referenz-Analyse
Lösen von 100 Sprachverarbeitungsklopfen 2020 (01. "Patatokukashi")
100 Amateur-Sprachverarbeitungsklopfen: Zusammenfassung
100 Sprachverarbeitung Knock-92 (mit Gensim): Anwendung auf Analogiedaten
100 Sprachverarbeitung Knock-94 (mit Gensim): Ähnlichkeitsberechnung mit WordSimilarity-353
100 Sprachverarbeitung Knock-37 (mit Pandas): Top 10 der häufigsten Wörter
100 Sprachverarbeitung Knock 2020 Kapitel 2: UNIX-Befehle