[PYTHON] Über die Kostenberechnung von MeCab

Einführung

Ich habe etwas über die MeCab-Kostenberechnung gelernt und sie zusammengefasst. Bitte weisen Sie darauf hin, wenn etwas nicht stimmt.

Übersicht über die morphologische Analyse von MeCab

MeCab führt eine morphologische Analyse unter Verwendung des registrierten Wörterbuchs durch. Wenn ein Wort (unbekanntes Wort) angezeigt wird, das nicht im Wörterbuch registriert ist, wird es basierend auf den Kosten für jedes Wort aufgeteilt. Unter diesen wird ** derjenige mit den niedrigsten Gesamtkosten ** als Ergebnis ausgegeben.

Eigentlich versuchen

Dieses Mal werden wir das ipadic-neologd Wörterbuch verwenden, um zu überprüfen, wie das fiktive Wort "American German Village" morphologisch analysiert wird.


Echo American German Village|mecab -d C:\neologd -N2

Amerikanisches Substantiv,Proprietäre Nomenklatur,Bereich,Land,*,*,Amerika,Amerika,Amerika
Deutsches Substantiv,Proprietäre Nomenklatur,Bereich,Land,*,*,Deutschland,Deutschland,Deutschland
Dorf Nomen,Suffix,Bereich,*,*,*,Dorf,Dorf,Dorf
EOS

Amerikanisches Substantiv,Proprietäre Nomenklatur,Bereich,Land,*,*,Amerika,Amerika,Amerika
Deutsches Dorf Nomen,Proprietäre Nomenklatur,Allgemeines,*,*,*,Deutsches Dorf,Deutsches Dorf,Deutsches Dorf
EOS

Geben Sie das Wörterbuch mit -d an und geben Sie die Anzahl der Kandidaten an, die mit der Option NUM angegeben wurden. Auf diese Weise wurden zwei Arten von Unterteilungen für unbekannte Wörter als Kandidaten aufgeführt. Ist diese Aufteilung für uns nicht ganz überzeugend?

MeCab-Wörterbuch

Bevor wir mit der Kostenberechnung beginnen, wollen wir uns mit der Registrierung des MeCab-Wörterbuchs befassen. Das Wörterbuch ist

Oberflächentyp,Linke Kontext-ID,Richtige Kontext-ID,Kosten,Teil,Teil細分類1,Teil細分類2,Teil細分類3,Nutzungsart,Nutzungsart,Prototyp,lesen,Aussprache

Speichern Sie es als CSV-Datei und erstellen Sie das Wörterbuch. Betrachtet man das, ・ ** Linke Kontext-ID ** ・ ** Richtige Kontext-ID ** ・ ** Kosten ** Es enthält ein unbekanntes Wort. Dies sind die Informationen, die für die morphologische Analyse von MeCab verwendet werden.

Vorkommenskosten

Die ** Auftrittskosten ** sind die ** Schwierigkeit ** des Wortes selbst zu erscheinen. Je höher der Wert, desto unwahrscheinlicher ist es, dass das Wort erscheint. Die Auftrittskosten sind der Wert von ** Kosten ** des zuvor registrierten Wörterbuchs. Welche Kosten für das Auftreten hatte "American German Village" dann?


Echo American German Village|mecab -F "%m,%c,\n" -d C:\neologd -N2

Amerika, 4698,
Deutschland, 2543,
Dorf, 8707,
EOS

Amerika, 4698,
Deutsches Dorf, 611,
EOS

Verwenden Sie% m, um den Oberflächenschichttyp anzuzeigen, und% c, um die Auftrittskosten anzuzeigen. Eine Frage stellt sich hier. Die Gesamtkosten sollten natürlich für die zweite niedriger sein, aber der erste Kandidat für die Ausgabe ist das erste Ergebnis. Der Grund ist das Vorhandensein neuer Kosten, ** Artikulationskosten **.

Verbindungskosten

** Verkettungskosten ** ist die Schwierigkeit, die Kontext-IDs von zwei Wörtern zu verketten. Je kleiner der Wert ist, desto wahrscheinlicher ist es, dass er kontinuierlich ist. Die Kontext-ID entspricht der ** linken Kontext-ID und der rechten Kontext-ID ** des Wörterbuchs. Grundsätzlich scheint diese ID zum Zeitpunkt der Registrierung der gleiche Wert zu sein. Betrachten Sie beispielsweise das Wort "vorher und nachher". Die "Vorher" -Kontext-ID ist 1314 und die "Nachher" -Kontext-ID ist 1313. Die Verbindungskosten werden durch die Kombination der linken Kontext-ID und der rechten Kontext-ID bestimmt. Eine Liste der Kombinationen finden Sie in matrix.def (oder matrix.bin) in MeCab \ dic \ ipadic. Betrachtet man das,

1314 1313 -316
1313 1314 716

Da die Verbindungskosten von vorne nach hinten niedrig sind (-316), ist es einfach, fortzufahren, und von hinten nach vorne sind die Verbindungskosten hoch (716) und es ist schwierig, fortzufahren. Ich finde das auch sehr überzeugend. Werfen wir einen Blick auf "American German Village".


Echo American German Village|mecab  -F"%m,%phl,%phr,%c,%pc,%pn\n" -d C:\neologd -N2

Amerika,1294,1294,4698,3746,3746
Deutschland,1294,1294,2543,-141,-3887
Dorf,1303,1303,8707,881,1022
EOS

Amerika,1294,1294,4698,3746,3746
Deutsches Dorf,1288,1288,611,2614,-1132
EOS

Der MeCab-Befehl kann wie folgt zusammengefasst werden.

Befehl Erläuterung
%m Oberflächentyp
%phl Linke Kontext-ID
%phr Richtige Kontext-ID
%c(Oder%pw) Vorkommenskosten
%pc Verbindungskosten+Kosten für das Auftreten von Wörtern(Kumulativ ab Satzbeginn)
%pn Verbindungskosten+Kosten für das Auftreten von Wörtern(Allein seine Morphologie, %pw+%pC)

Alle Befehle finden Sie unter hier. Da die Ausgabe schwer zu verstehen ist, werde ich dies auch tabellarisch darstellen.

Oberflächentyp Linke Kontext-ID Richtige Kontext-ID Vorkommenskosten Verkettung + Vorkommen(Akkumulation) Verkettung+Auftreten(Allein)
Amerika 1294 1294 4698 3746 3746
Deutschland 1294 1294 2543 -141 -3887
Dorf 1303 1303 8707 881 1022
Amerika 1294 1294 4698 3746 3746
Deutsches Dorf 1288 1288 611 2614 -1132

Bitte beachten Sie, dass ** BOS und EOS auch Kontext-IDs erhalten **. Die Verbindungskosten für das erste "Amerika" stammen also von matrix.def

0 1294 -952

Es wird sein. Daher betragen die kumulierten Kosten 4698-952 = 3746. Schauen wir uns als nächstes "Deutschland" an. Die linken und rechten Kontext-IDs sind 1294 und die Verbindungskosten betragen -6430, was ziemlich gering ist. (Es kommt selten vor, dass Ländernamen hintereinander fortgeführt werden ...) Die kumulierten Kosten betrugen (3746 + 2543) -6430 = -141 und 2543-6430 = -3887 für sich, was mit der Berechnung übereinstimmt. Obwohl es nicht ausgegeben wird, wird die Endprüfung durchgeführt, da EOS auch eine Kontext-ID hat. Die Verbindungskosten der Kontext-ID 1303 → 0 betragen 5, und die kumulierten Kosten der Kontext-ID 1288 → 0 betragen -919. Im Vergleich der kumulierten Kosten sind 886 und 1695 die niedrigsten Kosten, sodass das zuvor erwähnte Rätsel gelöst wurde.

Referenz

MeCab-Kosten verstehen. MeCab-Kostenberechnung bei Nippon Television Tokyo gelernt Blick hinter die Kulissen der japanischen morphologischen Analyse! Wie MeCab morphologisch analysiert

Recommended Posts

Über die Kostenberechnung von MeCab
Berechnung der Ähnlichkeit durch MinHash
Über die Kostenberechnung von MeCab
Informationen zur Genauigkeit der Berechnungsmethode für das Umfangsverhältnis von Archimedes
Über alles von numpy
Über Variable von Chainer
Über max_iter von LogisticRegression () von scikit-learn
Über den japanischen Weg von Pyminizip
Über die japanische Unterstützung von Cometchat
Über verschiedene Codierungen von Python 3
Über alle von numpy (2.)
Berechnung der Ähnlichkeit durch MinHash
Über den ungefähren Bruchteil des Umfangsverhältnisses
Über die Komponenten von Luigi
Über die HOG-Ausgabe von Scikit-Image
Über die Funktionen von Python
Über die Datenverwaltung von Amboss-App-Server
Fehlerfreie Berechnung mit Golangs big.Float
Berechnung der Zeitreihen-Kundenbindung
Berechnung des Normalenvektors mittels Faltung
Tiefes Lernen von Grund auf neu (Kostenberechnung)
Berechnung der Anzahl der Assoziationen von Klamer
Berechnung der selbst erstellten Klasse und der vorhandenen Klasse
Über den Rückgabewert des Histogramms.
Über den Grundtyp von Go
Über die zirkuläre Überkreuzung genetischer Algorithmen
[Python] Berechnung des Kappa (k) -Koeffizienten
Über das Verhalten von Yield_per von SqlAlchemy
Informationen zum Importfehler von PyQt5.QtWidgets (Anaconda)
Über die Größe der Punkte in Matplotlib
Über die Farbhalbtonverarbeitung von Bildern
Informationen zur Grundlagenliste der Python-Grundlagen
Berechnung des Spearman-Rangkorrelationskoeffizienten
Projekt Euler 9 Aufbewahrung der Berechnungsergebnisse