[PYTHON] Verwalten Sie irgendwie die Mecab-Symbol / Service-Verbindung

Ich konnte das gleiche Phänomen nicht finden, als ich dachte, es würde herauskommen, wenn ich suchte. Also Memo Memo. Die PC-Umgebung ist Windows10.

Dieses Problem kann in 3 Sekunden verstanden werden

#In Ordnung,*,*,*,*,*
Sumomo Fusesa-fu,*,*,*,*,*

Was ist okke! Was ist Fusesa?

Ergänzung: Mecab-Installationsverfahren

Ich habe es in einer solchen Umgebung eingeführt. Ich benutze nur Mecab über Github.

  1. Lassen Sie das Mecab auf der folgenden Seite auf 64 Bit bauen https://github.com/ikegami-yukino/mecab/releases

  2. Geben Sie die SHIFT-JIS- und UTF-8-Wörterbücher als Referenz auf der folgenden Seite ein. Verwenden von MeCab mit Python und R-Windows 10-64bit

  3. Kompilieren Sie NEologd in SHIFT-JIS und UTF-8, indem Sie auf die folgende Seite verweisen. So verwenden Sie das NEologd for RMeCab-Wörterbuch unter Windows 10 (ohne Linux)

Was ich machen wollte

Nach einer morphologischen Analyse und einer Eingrenzung auf "Substantive, Verben, Adjektive", um unnötige Wörter zu entfernen ... image.png ** Ich glaube nicht, dass Igeta eine Nomenklatur ist! ** ** ** (Wörter werden zur Überprüfung auszugsweise wiedergegeben)

Schließlich wollte ich, dass Sie das Symbol, das eine Nomenklatur ist, als Symbol erkennen.

Nach der Untersuchung scheint es, dass das Symbol in der Einstellung von Mecab überhaupt als seltsame Verbindung erkannt wird. Es wird gesagt, dass das Wörterbuch konvertiert werden sollte. Lassen Sie uns das Wörterbuch konvertieren, indem wir auf die folgende Seite verweisen. Referenz: Eintrag zum MeCab-Wörterbuch unter Windows hinzufügen

dic\ipadic\unk.def
dic\ipadic-UTF8\unk.def

Ändern Sie die 9. Zeile der beiden oben genannten Wörterbücher wie folgt. (Wenn Sie nicht sowohl R als auch Python verwenden, denke ich, dass es nur "ipadic" ist.) Abhängig vom Speicherort ist das Überschreiben verboten. Kopieren Sie es daher beim Bearbeiten auch auf den Desktop.

SYMBOL,1283,1283,17585,Symbol,Allgemeines,*,*,*,*,*   
↓
SYMBOL,1283,1283,17585,Symbol,Allgemeines,*,*,*,*,*

Starten Sie danach die Eingabeaufforderung als Administrator. (Beachten Sie, dass an einer normalen Eingabeaufforderung ein Berechtigungsfehler auftritt.) Wechseln Sie in den Ordner mit den obigen Änderungen und führen Sie die folgenden Befehle aus.

# dic\Laufen Sie auf ipadic
..\..\bin\mecab-dict-index -f shift-jis

# dic\ipadic-Mit UTF8 ausführen
..\..\bin\mecab-dict-index -f utf-8 

Starten Sie dann mecab an der Eingabeaufforderung und geben Sie "#sumomo" ein ... image.png

** Was ist okke! Was ist Fusesa? ** ** **

Ursachenforschung

Es scheint, dass die Charaktere verstümmelt sind, aber es ist ein Typ, den ich nicht viel gesehen habe. Wenn die UTF-Zeichen verstümmelt sind, handelt es sich um eine Diamantendmarke.

Ich habe auf einer Website namens verstümmelter Tester gesucht, die absichtlich verstümmelte Zeichen erstellt hat ... image.png ** Dieser Typ! !! ** ** **

Mit anderen Worten, es scheint, dass die Codierung nicht funktioniert. Dann mach das!

# dic\Laufen Sie auf ipadic
..\..\bin\mecab-dict-index -f euc-jp -f shift-jis

Komm schon "# Sumomo" image.png ** Doushite …… **

Es hat nicht funktioniert, auch wenn ich das Wörterbuch erneut eingegeben und es erneut versucht habe. Betreten Sie auf diese Weise das Labyrinth. Wenn Sie positiv denken, ist es nicht "Fusesa", also funktioniert das Wörterbuch ...

Ich habe mich auf der Straße verlaufen und so etwas gemacht

# dic\Laufen Sie auf ipadic
..\..\bin\mecab-dict-index -f shift-jis -f euc-jp

Also "# Sumomo"

image.png ** Das! !! !! ** ** ** Es ging gut.

Die Argumente beim Erstellen eines Wörterbuchs mit NEOlogd lagen in der Reihenfolge "-f Originalwörterbuch-Zeichencode -f Zeichencode des erstellten Wörterbuchs". Sie scheinen es also falsch verstanden zu haben? …… Erstens habe ich die Details der Argumente nicht verstanden, selbst als ich mir die offizielle Seite angesehen habe.

Mit anderen Worten, ich dachte, dass ein Befehl wie "mecab-dict-index -f Zeichencode des zu erstellenden Wörterbuchs -f Zeichencode des ursprünglichen Wörterbuchs" die richtige Antwort war. Meibi.

UTF-8-Wörterbuchkonvertierung (unvollendet)

Es sieht so aus, als ob Mecab an der Eingabeaufforderung einwandfrei funktioniert, aber UTF-8 wird bereits angezeigt. Andere Zeichen als SHIFT-JIS sollten an der Eingabeaufforderung verstümmelt werden. Daher ist das Wörterbuch, das durch Angabe von UTF-8 konvertiert werden sollte, SHIFT-JIS.

Das Wörterbuch muss auch UTF-8 sein, um es mit Python verwenden zu können. Erstellen Sie daher die UTF-Version neu, indem Sie auf Folgendes verweisen. Referenz: So fügen Sie das NEologd-Wörterbuch relativ einfach in das Windows-System-Wörterbuch ein

Mit Software namens EmEditor Speichern Sie durch Angabe der gesamten Codierung → Zeichencode: utf-8 (mit bom) → Zeilenvorschubcode: nur wenn Konvertieren Sie CSV sofort wie. Führen Sie dann den folgenden Befehl aus

# dic\ipadic-Mit UTF8 ausführen
mecab-dict-index -f utf-8 -t utf-8

Sie sollten jetzt ein UTF-8-Wörterbuch haben. Mecabrc vorübergehend unten umschreiben ...

;6. Zeile
dicdir =  $(rcpath)\..\dic\ipadic-UTF8
;8. Zeile
userdic = C:\Program Files (x86)\MeCab\dic\NEologd\NEologd.20200521-u.dic

mecab -dÜberprüfen Sie den Zeichencode mit. image.png Es ist in Ordnung.

Aus Python ... image.png Ich kann das nicht machen ...? Eine kleine Überprüfung erforderlich.

Serpentin

Es ist nur ein Durcheinander. Zuerst wollte ich Mecab mit R verwenden, also habe ich die gleichen Gegenmaßnahmen gegen Änderungen im Wörterbuch ergriffen, das von der offiziellen Website von Mecab heruntergeladen wurde. Zu dieser Zeit waren die Charaktere nicht verstümmelt. ...... Ich habe Lust warum. Mein Gedächtnis ist nicht eindeutig. Ich weiß es nicht, weil ich nicht überprüft habe, ob 32bit und 64bit zusammenhängen.

Wenn Sie versuchen, Mecab zu verwenden, das von der oben genannten offiziellen Website gelöscht wurde, wird eine Fehlermeldung wie "32bit!" In Python angezeigt, die verstreut ist. Daher ist es sicherer, die auf 64bit gebaute Version zu verwenden.

Recommended Posts

Verwalten Sie irgendwie die Mecab-Symbol / Service-Verbindung
Über den Servicebefehl