Registrieren Sie Wörter im Benutzerwörterbuch von GiNZA (SudachiPy)

Einführung

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.

Umgebung

0. Installation von GiNZA

Es kann einfach mit dem Befehl pip installiert werden.

$ pip install "https://github.com/megagonlabs/ginza/releases/download/latest/ginza-latest.tar.gz"

1. Bereiten Sie ein Wörterbuch vor

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.

2. Erstellen Sie ein Wörterbuch

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.

3. Fügen Sie das erstellte Benutzerwörterbuch zur SudachiPy-Konfigurationsdatei hinzu

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" : [
  ...
  ...

Funktionsprüfung

--Ü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!

Fazit

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.

Referenzseite

Recommended Posts

Registrieren Sie Wörter im Benutzerwörterbuch von GiNZA (SudachiPy)
Fügen Sie dem Benutzerwörterbuch von MeCab unter Ubuntu Wörter zur Verwendung in Python hinzu
Gibt es keinen Standardwert im Wörterbuch?
Ändern Sie die reservierten Wörter der Flask Template Engine
[AWS IoT] Registrieren Sie Dinge in AWS IoT mithilfe des AWS IoT Python SDK
Registrieren Sie zum ersten Mal eine Aufgabe in cron
Implementieren Sie die Django-Benutzererweiterung und registrieren Sie die angehängten Informationen