[PYTHON] Versuchen Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" - Kapitel 2 Schritt 03 Memo "Morphologische Analyse und schriftliches Schreiben"

Inhalt

Dies ist ein Memo für mich, während ich Einführung in Anwendungen zur Verarbeitung natürlicher Sprache in 15 Schritten lese. Dieses Mal werde ich in Kapitel 2, Schritt 03 meine eigenen Punkte aufschreiben.

Vorbereitung

Kapitelübersicht

Verstehen Sie, wie MeCab funktioniert, und versuchen Sie es zu optimieren. Überprüfen Sie auch andere morphologische Analysegeräte als MeCab.

03.1 MeCab

Wörterbuch

Das Schreiben von MeCab basiert auf dem Wörterbuch. Die Informationen aus der morphologischen Analyse mit MeCab im Wörterbuch hängen davon ab, welche Art von Informationen im Wörterbuch registriert sind, und die im Wörterbuch registrierten Informationen unterscheiden sich je nach Wörterbuch.

Wörterbuchname Inhalt
IPAdic ・ MeCab offiziell empfohlenes Wörterbuch
・ Basierend auf Daten namens IPA Corpus
UniDic ・ Basierend auf Daten namens UniDic
・ Die zu teilende Einheit ist klein, was einer strengen "morphologischen Analyse" nahe kommt.
jumandic -MeCab-Port des Wörterbuchs, das im morphologischen Analysegerät JUMAN verwendet wird und sich von MeCab unterscheidet.
・ Basierend auf Daten namens Kyoto Corpus
・ Metainformationen wie die repräsentative Notation werden angegeben
ipadic-NEologd ・ Die Anzahl der Wörter basierend auf dem IPA-Wörterbuch wurde erheblich erweitert
・ Der Wortschatz wird häufig durch das Crawlen von Wörtern aus dem Internet erweitert, und die Fähigkeit, auf neue Wörter zu reagieren, ist sehr hoch.
Es wird empfohlen, eine Normalisierung als Vorbehandlung durchzuführen
unidic-NEologd ・ Ipadic-Ähnlich wie NEologd, ein Wörterbuch mit Worterweiterungen basierend auf UniDic

Installieren Sie ipadic-NEologd und führen Sie es aus

Der Unterschied zwischen IPAdic und ipadic-NEologd besteht beispielsweise in der Analyse des Wortes "Deep Learning" (ein relativ neues Wort).

--IPAdic: Geteilt durch "Deep" und "Learning" --ipadic-NEologd: Behandelt mit einem Wort "Deep Learning"

Verhalten der morphologischen Analyse von MeCab

Das Wörterbuch enthält nicht nur Informationen zu morphologischen Elementen wie Ausführungsergebnissen, sondern auch die folgenden verschiedenen Informationen.

Für einen bestimmten Satz wird die Kombination, die die Kombination der Auftrittskosten und der Verbindungskosten minimiert, als Analyseergebnis verwendet. (Im folgenden Beispiel sind die Kosten für die Aufteilung in "Ich liebe Higashi Osaka" (minimal) am niedrigsten, daher ist dies das Analyseergebnis.)

Beispiel) "Ich liebe Ost-Osaka"


#Bei der Trennung mit "Ich liebe Higashi Osaka"
Verbindungskosten zwischen Satzanfang und "Higashi Osaka"
Auftrittskosten von "Higashi Osaka"
Verbindungskosten von "Higashi Osaka" und "Ich liebe dich"
Vorkommenskosten von "Liebe"
"Ich liebe dich" und die Verbindungskosten am Ende des Satzes

#Bei der Trennung mit "Ich mag die Todai Osaka Universität"
Verbindungskosten zwischen Satzanfang und "Higashi Osaka"
Vorkommenskosten von "Todai"
Verbindungskosten von "Todai" und "Osaka University"
Auftrittskosten der "Osaka University"
Verbindungskosten von "Osaka University" und "Gefällt mir"
Vorkommenskosten von "Gefällt mir"
"Ich liebe dich" und die Verbindungskosten am Ende des Satzes

03.2 Änderung des MeCab-Wörterbuchs

Wenn Sie mit einem vorhandenen Wörterbuch nicht die erwarteten Ergebnisse erzielen, optimieren Sie das Wörterbuch selbst.

Erstellen Sie ein MeCab-Wörterbuch

#UTF-Codierung der Quelldatei-In 8 konvertieren
$ nkf --overwrite -Ew ./mecab-ipadic-2.7.0-20070801/*

#Wörterbuch erstellen
$ mkdir build
$ $(mecab-config --libexecdir)/mecab-dict-index -d ./mecab-ipadic-2.7.0-20070801 -o build -f utf8 -t utf8
$ cp mecab-ipadic-2.7.0-20070801/dicrc ./build/. #Kopieren Sie dicrc

nkf ist eine Abkürzung für "Network Kanji Filter".

Neue Wörter hinzufügen

Erstellen Sie eine CSV-Datei im Quelldateiverzeichnis


#Oberflächenform, linke Kontext-ID, rechte Kontext-ID, Auftrittskosten, Teiltexte, Teiltexte Unterklassifizierung 1, Teilteilunterklassifizierung 2, Teilteilunterklassifizierung 3, Verwendungsart, Verwendungsform, Prototyp, Lesen, Aussprache

#Wenn Sie die Verarbeitung natürlicher Sprache hinzufügen möchten
Verarbeitung natürlicher Sprache,1288,1288,0,Substantiv,固有Substantiv,Allgemeines,*,*,*,Shizengengoshori,Shizengen Goshori,Shizengen Goshori

Anpassung der morphologischen Analyse

  1. Passen Sie die Verbindungskosten an
  2. Suchen Sie die Kontext-ID des Zielworts in .csv
  3. Ändern Sie die Verkettungskosten der Zielkontext-ID mit matrix.def
  4. Passen Sie die Eintrittskosten an
  5. Korrigieren Sie die Kosten für das Auftreten des Zielworts in .csv

Beachten Sie jedoch beim Ändern der oben genannten Kosten **, dass dies andere Ergebnisse als das beabsichtigte Teil ** beeinflussen kann.

Es scheint eine Methode zu geben, um die Kosten automatisch anzupassen, aber ** es scheint, dass der Einflussbereich durch manuelles Anpassen der Kosten des Teils, das Sie korrigieren möchten, klein gehalten werden kann **.

03.3 Verschiedene morphologische Analysegeräte

Verschaffen Sie sich einen Überblick über andere morphologische Analysegeräte als MeCab.

Morphologischer Analysator Inhalt
MeCab ・ Basierend auf dem Wörterbuch
・ Das Wörterbuch enthält Informationen zu Wörtern, Vorkommenskosten und Verbindungskosten.
・ Die Ausführungsgeschwindigkeit ist hoch
- Da das Wörterbuch in eine externe Datei umgewandelt wurde, kann es nach Bedarf angepasst werden.
JUMAN++ ・ Ein relativ neuer morphologischer Analysator, der ein neuronales Netzwerk verwendet
・ Berücksichtigen Sie nicht nur die grammatikalische Korrektheit, sondern auch die Wortbedeutung
・ Berücksichtigen Sie Informationen zu allen Wörtern vor einem Wort
・ Entspricht der Notationsschwankung
・ Es gibt viele Vorteile gegenüber MeCab, aber die Ausführungsgeschwindigkeit ist geringer.
KyTea(Süße) ・ SVM sagt anhand der Zeichen davor und danach voraus, ob ein Wort zwischen einem Zeichen und dem nächsten Zeichen getrennt ist.
-Python-Wrapper wird von einem Dritten bereitgestellt
Janome ・ Nur in Python geschrieben
・ Das IPA-Wörterbuch ist integriert, und es wird eine API bereitgestellt, die von Python aus verarbeitet werden kann.
・ Die Ausführungsgeschwindigkeit ist langsam
・ Wörterbuchoptionen sind begrenzt
SudachiPy · Python-Bindungen für die morphologische Analyse Sudachi für Java
・ Ab Mai 2019 ist die offizielle Veröffentlichung(Wurde es schon offiziell veröffentlicht?)
Esanpy(Kuromoji) ・ Kuromoji ist ein in Java implementierter morphologischer Analysator
・ Wenn Sie Python verwenden, durchlaufen Sie Esanpy
・ Esanpy ist eine Textanalysebibliothek, die intern Elasticsearch (Volltextsuchmaschine) verwendet.

Recommended Posts

Versuchen Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" - Kapitel 2 Schritt 03 Memo "Morphologische Analyse und schriftliches Schreiben"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 2 Schritt 02 Memo "Vorverarbeitung"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 2 Schritt 07 Memo "Evaluation"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" - Kapitel 4 Schritt 14 Memo "Hyperparametersuche"
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 2 Schritt 04 Memo "Feature Extraction"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 4 Schritt 15 Memo "Datenerfassung"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" - Kapitel 3 Schritt 08 Memo "Einführung in neuronale Netze".
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 2 Schritt 05 Memo "Feature Quantity Conversion"
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" - Kapitel 3 Schritt 12 Memo "Convolutional Neural Networks".
Versuchen wir das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" - Kapitel 3 Schritt 10 Memo "Details und Verbesserung des neuronalen Netzes"
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 3 Schritt 09 Memo "Identifier by Neural Network"
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 2 Schritt 01 Memo "Erstellen eines Dialogagenten"
100 natürliche Sprachverarbeitung klopft Kapitel 4 Morphologische Analyse (erste Hälfte)
100 natürliche Sprachverarbeitung klopft Kapitel 4 Morphologische Analyse (zweite Hälfte)
[Für Anfänger] Sprachanalyse mit dem Verarbeitungswerkzeug "GiNZA" (von der morphologischen Analyse bis zur Vektorisierung)
100 Sprachverarbeitungsklopfen 2020: Kapitel 4 (morphologische Analyse)
100 Sprachverarbeitung Knock 2020 Kapitel 4: Morphologische Analyse
100 Sprachverarbeitung Knock Kapitel 4: Morphologische Analyse
[Sprachverarbeitung 100 Schläge 2020] Kapitel 4: Morphologische Analyse
Sprachverarbeitung 100 Schläge Kapitel 4: Morphologische Analyse 31. Verben
[WIP] Vorverarbeiten von Notizen in der Verarbeitung natürlicher Sprache
Der erste Schritt zur Protokollanalyse (Formatieren und Einfügen von Protokolldaten in Pandas)
Zusammenfassung von Anfang bis Kapitel 1 der Einführung in Entwurfsmuster, die in der Java-Sprache gelernt wurden
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 6] Einführung in Scicit-Learn mit 100 Klopfen Sprachverarbeitung
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
100 natürliche Sprachverarbeitung klopft Kapitel 5 Abhängigkeitsanalyse (zweite Hälfte)
[Technisches Buch] Einführung in die Datenanalyse mit Python -1 Kapitel Einführung-
100 natürliche Sprachverarbeitung klopft Kapitel 5 Abhängigkeitsanalyse (erste Hälfte)
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Jobwechsel-Meeting] Versuchen Sie, Unternehmen zu klassifizieren, indem Sie Mundpropaganda in natürlicher Sprache mit word2vec verarbeiten
Verwenden Sie die Swagger-Benutzeroberfläche. Wenn Sie einen Swagger-UI-ähnlichen Stil wünschen, kopieren Sie einfach die gesamte Datei unter / dist unter https://github.com/swagger-api/swagger-ui. Danach schreiben Sie einfach hier in index.html die URL der yml-Datei um. Wenn Sie der Meinung sind, dass Sie @ApiModel oder @ApiModelProperty nicht finden können, wurden übrigens anscheinend alle Anmerkungen zur Schemadefinition in @Schema integriert. Emotionsanalyse mit Java, Swagger, OpenAPI, Micronaut Natural Language Processing! Ich habe versucht, die Bewertung anhand des Überprüfungstextes vorherzusagen
[Verarbeitung natürlicher Sprache] Ich habe versucht, die Bemerkungen jedes Mitglieds in der Slack-Community zu visualisieren