[JAVA] Fortsetzung - Veröffentlichung einer Web-API, die Satzstücke wie morphologische Analysen verwenden kann

Einführung

Es ist eine Web-API, die SentencePiece verwenden kann, das neulich wie eine morphologische Analyse veröffentlicht wurde, aber ich erhielt verschiedene Ratschläge von Herrn Kudo, dem Erfinder von SentencePiece. Letzter Beitrag hatte einige falsche Implementierungen, daher habe ich das Problem behoben. Sie können es kostenlos unter [hier] verwenden (https://apitore.com/store/apis/details?id=37).

API

Beispielcode

In Verbindung stehender Artikel

Was ich getan habe

Es wird nur der Unterschied zur vorherigen Zeit beschrieben.

Erstens gibt es in Satzstück mehrere Modi für die Modellberechnung. Diesmal habe ich Unigram und BPE ausprobiert.

Unigramm-Modus

Ich habe die folgenden Kommentare von Herrn Kudo erhalten.

Multiplizieren Sie mit Unigramm die logarithmische Wahrscheinlichkeit der Vokabeltabelle mit -1, um sie zu ganzzahligen Kosten zu machen. Wenn Sie die unbekannte Textverarbeitung deaktivieren, ist dies im Prinzip dieselbe.

Also habe ich genau das getan. Um Ihnen genau zu sagen, was ich getan habe, habe ich die logarithmische Wahrscheinlichkeit der Vokabeltabelle mit -100 multipliziert, um sie auf ganzzahlige Kosten zu runden, und sie dem Kuromoji / Mecab-Wörterbuch hinzugefügt. Für unbekannte Wörter habe ich mich entschieden, Kuromoji im Extended-Modus auszuführen. Die Wortkosten unbekannter Wörter waren viel höher als in der SentencePiece-Vokabeltabelle, daher wird sie in der SentencePiece-Vokabeltabelle (wahrscheinlich) morphologisch analysiert. Ich habe es im Erweiterungsmodus ausgeführt, um Zeichen zu trennen, wenn unbekannte Wörter angezeigt werden.

BPE-Modus

Ich habe auch einen Kommentar von Herrn Kudo erhalten.

Das Aufteilen in BPE ist nicht allzu schwierig, wenn Sie eine naive Implementierung haben. Versuchen Sie, die beiden Zeichen zu verketten. Wenn sie im Wörterbuch enthalten sind, ersetzen Sie die beiden Zeichen durch neue Symbole. Wenn mehrere Stellen ersetzt werden müssen, ersetzen Sie diese in der Reihenfolge ihrer Priorität (die zuerst registrierte hat Priorität). https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E5%AF%BE%E7%AC%A6%E5%8F%B7%E5%8C%96 Verketten Sie zwei aufeinanderfolgende Zeichen und suchen Sie das Wörterbuch. Wenn es gefunden wird, werden die beiden Zeichen verbunden und das verbundene Zeichen wird als ein Zeichen betrachtet. Wiederholen Sie diesen Vorgang, bis Sie das Wörterbuch nicht mehr nachschlagen können. Die naive Implementierung scannt jedes Mal zwei aufeinanderfolgende Zeichen, also ist es O (n ^ 2), aber mit dem Heap ist es O (n log n).

Ich wusste nicht, wie ich den Haufen benutzen sollte, also tat ich es ehrlich. "Die Vokabeltabelle wird als Regel angesehen, und die Regeln werden in der Reihenfolge von oben angewendet." Angenommen, die Regel ist wie folgt definiert:

Ai
über
Ah

Wenn die Eingabe "aiueo" ist, ist die Ausgabe "aiueo". Es kann eine Übertreibung sein, aber im Fall einer anderen unten gezeigten Regel,

Ai
Ah
über

Die Ausgabe wird "Aieo" sein.

Wie hat sich das Ergebnis verändert?

Es war fast das gleiche.

Im vorherigen Beispiel war das Ergebnis das gleiche, unabhängig davon, ob es sich um Unigramm oder BPE handelte. Ich habe die Vokabeltabellen von Unigram und BPE verglichen, aber sie sind ziemlich nah. Unigram enthält häufig viele detaillierte Daten, daher gibt es einen Unterschied zu BPE.

Ich denke jedoch, dass ich es genau implementieren konnte (glaube ich), und ich denke, dass Sie es mit Zuversicht verwenden können.

abschließend

Abgesehen davon spart der Unigram-Modus mehr Speicher als der BPE-Modus, daher habe ich den vollständigen Text von Wikipedia in das Lernen einbezogen. Infolgedessen rechnete ich 12 Tage lang weiter. .. .. Die Stromrechnung ist ... Aus diesem Grund können Sie die Berechnungsergebnisse 12 Tage lang kostenlos in Apitore verwenden. Verwenden Sie sie daher bitte.

Recommended Posts

Fortsetzung - Veröffentlichung einer Web-API, die Satzstücke wie morphologische Analysen verwenden kann
Es wurde eine API veröffentlicht, die Satzstücke wie morphologische Analysen verwenden kann
Verwenden Sie die japanische morphologische Analyse "kuromoji"