Gründlicher Vergleich von drei morphologischen Python-Analysebibliotheken

Einführung

Es gibt viele morphologische Analysewerkzeuge, aber es ist wichtig, ihre Eigenschaften zu verstehen, bevor Sie sie verwenden.

Dieses Mal habe ich drei morphologische Analysewerkzeuge verglichen, die von Python aus verwendet werden können.

MeCab

  • Parameterschätzung mit CRF (Conditional Random Fields)
  • Sowohl die Unterscheidungsgenauigkeit als auch die Ausführungsgeschwindigkeit sind hoch. Wenn Sie es auf standardmäßige Weise verwenden möchten, sollten Sie auf jeden Fall MeCab verwenden. Die Bibliothek ist jedoch etwas schwer.
In[1]: import MeCab
In[2]: mecab = MeCab.Tagger()
In[3]: %time print mecab.parse("Äpfel haben nachweislich sehr positive Auswirkungen auf den menschlichen Körper")
Apple Nomen,Allgemeines,*,*,*,*,Apfel,Apfel,Apfel
Ist ein Assistent,Hilfe,*,*,*,*,Ist,C.,Beeindruckend
Menschliche Nomenklatur,Allgemeines,*,*,*,*,Mensch,Ningen,Ningen
Hilfswörter,Union,*,*,*,*,von,Nein,Nein
Körpernomenklatur,Allgemeines,*,*,*,*,Körper,Shintai,Shintai
Hilfswörter für,Fallassistent,Gemeinsame Sprache,*,*,*,zum,Nitotte,Nitotte
Sehr Nomenklatur,Adjektiv Verbstamm,*,*,*,*,sehr,Taihen,Taihen
Gutes Adjektiv,Unabhängigkeit,*,*,Apokalypse,Grundform,gut,Yoi,Yoi
Effekt Nomen,Allgemeines,*,*,*,*,bewirken,Kouka,Koka
Ist ein Assistent,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga
Ein Verb,Unabhängigkeit,*,*,Fünf Schritte, La Linie,Grundform,Gibt es,Al,Al
Das Substantiv,Nicht unabhängig,Allgemeines,*,*,*,Ding,Dinge,Dinge
Ist ein Assistent,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga
Beweis Nomen,Verbindung ändern,*,*,*,*,Beweis,Risho,Richaud
Sa Verb,Unabhängigkeit,*,*,Sahen / Suru,Rel Verbindung,Machen,Bedienung,Bedienung
Re Verb,Suffix,*,*,Ein Schritt,Kontinuierlicher Typ,Sein,Les,Les
Der Assistent,Verb verbinden,*,*,*,*,Hand,Te,Te
Ich verb,Nicht unabhängig,*,*,Ein Schritt,Kontinuierlicher Typ,Ist,ich,ich
Masu Hilfsverb,*,*,*,Spezial / Masse,Grundform,Masu,Forelle,Forelle
EOS

CPU times: user 0 ns, sys: 0 ns, total: 0 ns
Wall time: 240 µs

Juman

  • Huristische morphologische Unterscheidung
  • Es wird eine hohe Unterscheidungsgenauigkeit und __repräsentative Notation __ jedes morphologischen Elements angezeigt, sodass es sich hervorragend zur Analyse von Dingen mit starken Notationsschwankungen wie Twitter eignet.
In[1]: import cJuman
In[2]: cJuman.init(['-B', '-e2'])
In[3]: %time print cJuman.parse_opt(["Äpfel haben nachweislich sehr positive Auswirkungen auf den menschlichen Körper"], cJuman.SKIP_NO_RESULT)
Apfel Apfel Apfel Substantiv 6 gebräuchliches Substantiv 1* 0 * 0 "Repräsentative Notation:Apfel/Apple Kategorie:Pflanze;Künstliches Objekt-Lebensmittelbereich:Kochen / Essen"
Hahaha Auxiliary 9 Sub-Auxiliary 2* 0 * 0 NIL
Menschliche menschliche Nomenklatur 6 Gemeinsame Nomenklatur 1* 0 * 0 "Repräsentative Notation:Mensch/Ningen Kategorie:Mann"
Nono kein Assistent 9 Verbindungsassistent 3* 0 * 0 NIL
Body Shintai Body Nose 6 Gewöhnliche Nase 1* 0 * 0 "Repräsentative Notation:Körper/Shintai Kategorie:Tier"
Ni ni ni Silbe 9 Fall Silbe 1* 0 * 0 NIL
Verb 2 nehmen*0 Konsonantenverb La Zeile 10 Ta-System Dauergebrauch Te Form 14"Repräsentative Notation:nehmen/Angehängter Verbkandidat zum Mitnehmen (grundlegend)"
@Verb 2 nehmen*0 Konsonantenverb La Zeile 10 Ta-System Dauergebrauch Te Form 14"Repräsentative Notation:nehmen/Domain zu nehmen:Politisches Selbst-Anderes-Verb:Selbst:Kann genommen werden/Kann genommen werden"
@Verb 2 nehmen*0 Konsonantenverb La Zeile 10 Ta-System Dauergebrauch Te Form 14"Repräsentative Notation:nehmen/Nimm das andere Verb:Selbst:Sei erwischt/Kann genommen werden"
@Verb 2 nehmen*0 Konsonantenverb La Zeile 10 Ta-System Dauergebrauch Te Form 14"Repräsentative Notation:nehmen/Nimm das andere Verb:Selbst:Kann geerntet werden/Kann genommen werden"
@Verb 2 nehmen*0 Konsonantenverb La Zeile 10 Ta-System Dauergebrauch Te Form 14"Repräsentative Notation:Nehmen/Domain zu nehmen:Kochen / Essen selbst anderes Verb:Selbst:Kann genommen werden/Kann genommen werden"
@Verb 2 nehmen*0 Konsonantenverb La Zeile 10 Ta-System Dauergebrauch Te Form 14"Repräsentative Notation:nehmen/Domain zu nehmen:Kultur / Kunst selbst anderes Verb:Selbst:Kann genommen werden/Kann genommen werden"
@Verb 2 nehmen*0 Konsonantenverb La Zeile 10 Ta-System Dauergebrauch Te Form 14"Repräsentative Notation:Stehlen/Nehmen"
Sehr sehr sehr sehr Anwalt 8* 0 * 0 * 0 "Repräsentative Notation:sehr/Sehr viel"
@Sehr hart sehr hart Adjektiv 3*0 na Adjektiv 21 Wortstamm 1"Repräsentative Notation:Es ist schwer/Es ist schwer"
Gut gut gut gut Adjektiv 3*0 ein Adjektiv auo dan 18 Grundform 2"Repräsentative Notation:gut/Gute Rebellion:Adjektiv:Schlecht/Schlecht"
Effekt Koka Effekt Nase 6 Gewöhnliche Nase 1* 0 * 0 "Repräsentative Notation:bewirken/Koka Kategorie:Abstrakt"
Ga ga ga ga Assistent 9 Fallassistent 1* 0 * 0 NIL
Ein bestimmtes ein bestimmtes Verb 2*0 Konsonantenverb la Zeile 10 Grundform 2"Repräsentative Notation:Ja/Ein ergänzender Satz:Adjektiv:Nein/Abwesend"
Koto Koto Koto Nase 6 Formale Nase 8* 0 * 0 NIL
Ga ga ga ga Assistent 9 Fallassistent 1* 0 * 0 NIL
Beweisen Sie es Beweisen Sie Nomen 6 Sahen Noon 2* 0 * 0 "Repräsentative Notation:Beweis/Risho Kategorie:Abstrakte Domain:Politik"
Sasashi Verb 2*0 Sa-Variable 16 Vorform 3"Repräsentative Notation:Machen/Machen 付属動詞候補(基本) Selbst他動詞:Selbst:Werden/Werden"
Das Suffix 14 Das Verb sexsuffix 7 Das Vokalverb 1 Die te Form für den Dauergebrauch 14"Repräsentative Notation:Sein/Sein"
Ii Iru Suffix 14 Verb Sex Suffix 7 Vokal Verb 1 Grundform 8"Repräsentative Notation:Ist/Ist"
Immer mehr Suffix 14 Verb Sex Suffix 7 Verb Sex Suffix Typ 31 Grundform 2"Repräsentative Notation:Masu/Masu"
EOS

CPU times: user 0 ns, sys: 0 ns, total: 0 ns
Wall time: 976 µs

Cabocha

  • Abhängigkeitsanalyse mit SVM (Support Vector Machine) durchführen
  • Wenn Sie es zum Lernen von Daten verwenden, wenn Sie automatisch Sätze mit der Markov-Kette generieren, können Sie anscheinend interessanter sein als mit orthodoxen morphologischen Analysewerkzeugen wie MeCab (entsprechend).
In[1]: import CaboCha
In[2]: cabocha = CaboCha.Parser()
In[3]: %time print cabocha.parseToString("Äpfel haben nachweislich sehr positive Auswirkungen auf den menschlichen Körper")
Äpfel---------------D
Mensch-D           |
Für den Körper-------D   |
sehr-D   |   |
gut-D |   |
Der Effekt ist-D   |
Gibt es-D |
Das-D
Bewährt
EOS

CPU times: user 882 µs, sys: 84 µs, total: 966 µs
Wall time: 917 µs

Da auch die folgende Ausgabe möglich ist, ist die Verarbeitung mithilfe der Abhängigkeitsanalyse im Python-Code einfach. Es ist jedoch langsam.

In[4]: print cabocha.parse("Äpfel haben nachweislich sehr positive Auswirkungen auf den menschlichen Körper").toString(CaboCha.FORMAT_LATTICE)
* 0 8D 0/1 -2.111879
Apple Nomen,Allgemeines,*,*,*,*,Apfel,Apfel,Apfel
Ist ein Assistent,Hilfe,*,*,*,*,Ist,C.,Beeindruckend
* 1 2D 0/1 1.635242
Menschliche Nomenklatur,Allgemeines,*,*,*,*,Mensch,Ningen,Ningen
Hilfswörter,Union,*,*,*,*,von,Nein,Nein
* 2 6D 0/1 1.318492
Körpernomenklatur,Allgemeines,*,*,*,*,Körper,Shintai,Shintai
Hilfswörter für,Fallassistent,Gemeinsame Sprache,*,*,*,zum,Nitotte,Nitotte
* 3 4D 0/0 0.781377
Sehr Nomenklatur,Adjektiv Verbstamm,*,*,*,*,sehr,Taihen,Taihen
* 4 5D 0/0 1.810798
Gutes Adjektiv,Unabhängigkeit,*,*,Apokalypse,Grundform,gut,Yoi,Yoi
* 5 6D 0/1 2.448702
Effekt Nomen,Allgemeines,*,*,*,*,bewirken,Kouka,Koka
Ist ein Assistent,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga
* 6 7D 0/0 2.151727
Ein Verb,Unabhängigkeit,*,*,Fünf Schritte, La Linie,Grundform,Gibt es,Al,Al
* 7 8D 0/1 -2.111879
Das Substantiv,Nicht unabhängig,Allgemeines,*,*,*,Ding,Dinge,Dinge
Ist ein Assistent,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga
* 8 -1D 1/5 0.000000
Beweis Nomen,Verbindung ändern,*,*,*,*,Beweis,Risho,Richaud
Sa Verb,Unabhängigkeit,*,*,Sahen / Suru,Rel Verbindung,Machen,Bedienung,Bedienung
Re Verb,Suffix,*,*,Ein Schritt,Kontinuierlicher Typ,Sein,Les,Les
Der Assistent,Verb verbinden,*,*,*,*,Hand,Te,Te
Ich verb,Nicht unabhängig,*,*,Ein Schritt,Kontinuierlicher Typ,Ist,ich,ich
Masu Hilfsverb,*,*,*,Spezial / Masse,Grundform,Masu,Forelle,Forelle
EOS

CPU times: user 1.29 ms, sys: 101 µs, total: 1.39 ms
Wall time: 1.91 ms

Schließlich

Darüber hinaus gibt es in Python viele morphologische Analysewerkzeuge wie Kytea, Igo-Python, ChaSen und Kakasi. Ich hoffe, dass Sie mit den jeweiligen Merkmalen vertraut sind und diese von Fall zu Fall richtig verwenden können.

Recommended Posts

Gründlicher Vergleich von drei morphologischen Python-Analysebibliotheken
Einfacher Vergleich von Python-Bibliotheken, die Excel betreiben
Ein schneller Vergleich der Testbibliotheken von Python und node.js.
[Python] Morphologische Analyse mit MeCab
Python: Japanischer Text: Morphologische Analyse
Statische Analyse von Python-Programmen
Vergleich von 4 Arten von Python-Webframeworks
Japanische morphologische Analyse mit Python
Geschwindigkeitsvergleich der Python-XML-Perspektive
Ich habe 4 Bibliotheken des Python 3 Engineer Certification Data Analysis-Tests studiert
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Vergleich japanischer Konvertierungsmodule in Python3
Python-String-Vergleich / benutze 'Liste' und 'In' anstelle von '==' und 'oder'
Beispiel einer dreidimensionalen Skelettanalyse von Python
Tipps: Vergleich der Größe von drei Werten
Analyse des Röntgenmikrotomographiebildes durch Python
Vergleich von Python Serverless Frameworks-Zappa mit Chalice
Python: Vereinfachte morphologische Analyse mit regulären Ausdrücken
Vergleich der Matrixtranspositionsgeschwindigkeit durch Python
[Python] Vergleich der Theorie und Implementierung der Hauptkomponentenanalyse durch Python (PCA, Kernel PCA, 2DPCA)
Zeitvariationsanalyse von Schwarzen Löchern mit Python
Leistungsvergleich des Gesichtsdetektors mit Python + OpenCV
[Python3] Geschwindigkeitsvergleich usw. über den Entzug von numpy.ndarray
R- und Python-Schreibvergleich (euklidische Methode der gegenseitigen Teilung)
Ich habe versucht, morphologische Analyse und Wortvektorisierung
Statische Analyse von Python-Code mit GitLab CI
Aufgezeichnete Umgebung für die Datenanalyse mit Python
Vergleich von Python und Ruby (Environment / Grammar / Literal Edition)
Erster Python 3 ~ Erster Vergleich ~
Datenanalyse Python
Python-Grundlagen ①
Grundlagen von Python ①
Kopie von Python
Einführung von Python
Text Mining mit Python ① Morphologische Analyse (re: Linux-Version)
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 2
[Python] [Word] [python-docx] Einfache Analyse von Diff-Daten mit Python
Liste der Python-Bibliotheken für Datenwissenschaftler und Dateningenieure
Sammeln von Informationen von Twitter mit Python (morphologische Analyse mit MeCab)
[OpenCV / Python] Ich habe versucht, Bilder mit OpenCV zu analysieren
Vergleich der Implementierung mehrerer exponentieller gleitender Durchschnitte (DEMA, TEMA) in Python
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Fordern Sie die Hauptkomponentenanalyse von Textdaten mit Python heraus
Liste des Python-Codes, der bei der Big-Data-Analyse verwendet wird
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1
Reine Python-Version Online-Morphologieanalyse-Tool Rakuten MA
Flugzeugskelettanalyse mit Python (4) Umgang mit erzwungener Verschiebung
Vergleichstabelle häufig verwendeter Prozesse von Python und Clojure
Erläuterung des Konzepts der Regressionsanalyse mit Python Extra 1
Vergleich der Python-Befehlszeilenanalysebibliotheken (argparse, click, fire)
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik