Ich bin seit einigen Wochen in der Verarbeitung natürlicher Sprache tätig und habe häufig R und MeCab verwendet. Vor kurzem habe ich jedoch gehört, dass GiNZA aus Python ein hervorragendes Werkzeug für die Verarbeitung natürlicher Sprache ist, und ich migriere. Zuerst musste ich ein Wort hinzufügen, das nicht im Wörterbuch enthalten ist, also fasste ich den Ablauf zusammen.
Es kann einfach mit dem Befehl pip installiert werden.
$ pip install "https://github.com/megagonlabs/ginza/releases/download/latest/ginza-latest.tar.gz"
Es scheint, dass "Sudachi Py" für die morphologische Analyse von GiNZA läuft. Daher ist das Hinzufügen eines Wortes im Grunde dasselbe wie das Hinzufügen von "Sudachi" zum Benutzerwörterbuch. Bereiten Sie zunächst ein Wörterbuch mit einer CSV-Datei vor. Das Format des Wörterbuchs ist `Überschrift, linke Verkettungs-ID, rechte Verkettungs-ID, Kosten, Überschrift, Teilwörter 1,2,3,4, Teilwörter (Verwendungstyp), Teilwörter (Verwendungstyp), Lesen, kanonische Notation, Wörterbuchtyp-ID, Teilungstyp, A. Teilungsinformationen der Einheit, Teilungsinformationen der Einheit B, nicht verwendet In der Reihenfolge von anordnen.
$ vim add_term.csv
Gefroren,4786,4786,5000,Gefroren,Substantiv,固有Substantiv,Allgemeines,*,*,*,Anato Yukinojoou,Gefroren,*,*,*,*,*
Jeder Artikel wird ausführlich in [hier] beschrieben (https://github.com/WorksApplications/Sudachi/blob/develop/docs/user_dict.md), aber diesmal habe ich die empfohlene ID und die empfohlenen Kosten zugewiesen. .. Geben Sie "*" für unnötige Elemente ein. Ein Beispiel ist auf der obigen Seite veröffentlicht, daher denke ich, dass Sie dasjenige auswählen sollten, das dem am nächsten kommt.
Da SudachiPy auch bei der Installation von GiNZA installiert wurde, verwenden Sie den Befehl sudapipy, um das Wörterbuch zu erstellen. Der Befehl lautet "suda chipy ubuild -s [Systemwörterbuchpfad] [Pfad der erstellten CSV-Datei]".
$ sudachipy ubuild \
-s .pyenv/versions/anaconda3-5.2.0/envs/ginza/lib/python3.6/site-packages/sudachidict/resources/system.dic \
add_term.csv
Der Weg ist lang, weil ich die Umgebung mit pyenv aufbaue, aber bitte ändern Sie ihn entsprechend Ihrer eigenen Umgebung. Bei der Ausführung wird die folgende Meldung angezeigt.
reading the source file...2 words
writing the POS table...2 bytes
writing the connection matrix...4 bytes
building the trie...done
writing the trie...1028 bytes
writing the word-ID table...14 bytes
writing the word parameters...16 bytes
writing the word_infos...96 bytes
writing word_info offsets...8 bytes
Bei Erfolg wird "user.dic" zum aktuellen Verzeichnis hinzugefügt.
Fügen Sie den generierten Pfad user.dic hinzu. Fügen Sie den Pfad zum folgenden Speicherort in der Einstellungsdatei hinzu.
$ vim ./pyenv/versions/anaconda3-5.2.0/envs/ginza/lib/python3.6/site-packages/sudachipy/resources/sudachi.json
{
"characterDefinitionFile" : "char.def"
"userDict" : ["user.dic Pfad"] #Hier Benutzer.dic Pfadを追記してください
"inputTextPlugin" : [
...
...
--Überprüfen Sie über die Befehlszeile
SudachiPy wird installiert, wenn GiNZA installiert ist. Verwenden Sie es also.
$ sudachipy
#Vor dem Hinzufügen
Gefroren
Ana Substantiv,Gemeinsame Nomenklatur,Allgemeines,*,*,*Anna
Und Hilfswörter,Fallassistent,*,*,*,*Wann
Schnee Nomen,Gemeinsame Nomenklatur,Allgemeines,*,*,*Schnee
Hilfswörter,Fallassistent,*,*,*,*von
Königin Nomen,Gemeinsame Nomenklatur,Allgemeines,*,*,*Königin
EOS
#Nach Zugabe
Gefroren
Anna und die Schneekönigin Nomen,Proprietäre Nomenklatur,Allgemeines,*,*,*Gefroren
EOS
python3
import spacy
nlp = spacy.load('ja_ginza')
doc = nlp('Ich möchte Anna und die Schneekönigin sehen')
for sent in doc.sents:
for token in sent:
print(token.orth_)
Ausführungsergebnis
Gefroren
Zu
Aussicht
Zu
Gehen
Wollen
Ich konnte es richtig in Morphologie einteilen!
Da SudachiPy für die morphologische Analyse von GiNZA verwendet wird, war es meiner Meinung nach einfacher, als Wörter in MeCab hinzuzufügen. Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten.
Recommended Posts