Aidemy 2020/10/29
Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur AI-spezialisierten Schule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank! Dies ist der erste Beitrag zur Verarbeitung natürlicher Sprache. Freut mich, dich kennenzulernen.
Was diesmal zu lernen ・ Was ist die Verarbeitung natürlicher Sprache? ・ Über den Textkorpus ・ Über die morphologische Analyse
・ __ "Natürliche Sprache" __ ist eine gesprochene / geschriebene Sprache, die Menschen normalerweise verwenden. Wenn Sie einen Computer verarbeiten lassen, wird dies als "Verarbeitung natürlicher Sprache" bezeichnet. -Die vom Menschen verwendete natürliche Sprache kann mehrdeutige Ausdrücke enthalten, die Computer nicht "interpretieren" können __.
-__ Corpus__ sind __ Daten, die Dokumente in natürlicher Sprache zusammenfassen __. Es unterstützt viele Sprachen und es gibt auch eine japanische Version. ・ Dieses Mal verwenden wir einen "Chat-Dialog-Korpus". -Die Daten sind in 100 Sätze von Chat-Daten __ "init100" __ Verzeichnis und 1046 Sätze von Chat-Daten __ "rest1046" __ Verzeichnis unterteilt. Diesmal "init100" Verwenden Sie die eine. -Die Dateistruktur wird im __ "JSON-Format" __ bereitgestellt. Es ist unterteilt in "Fragendaten (menschliche Sprache)" und "Antwortdaten (Systemsprache)". -Diese Daten werden im __ "Turns" __ - Schlüssel in der Datei gespeichert. Von diesen ist __ "Äußerung" __ die Sprachdaten, __ "Sprecher" __ ist __ "U" __, die Person, und __ "S" __ ist die Systemsprache.
-Das Lesen des Korpus erfolgt mit __ "open ()" __, genau wie beim Lesen einer normalen Datei. Da die Datei vom Typ JSON ist, lesen Sie sie mit __ "json.load ()" __. -Daten können extrahiert werden, indem der Schlüssel der Daten angegeben wird, die Sie für die gelesene Datei erfassen möchten.
・ Gesprächs-ID abrufen
#Extrahieren und zeigen Sie den Sprecher und den Inhalt der Äußerung an
for turn in json_data['turns']:
print("{}:{}".format(turn['speaker'],turn['utterance']))
・ Von hier aus analysieren wir "natürliche Konversation". Das heißt, da eine Aufschlüsselung verwendet wird, werden zuerst __ "Sprachinhalt der Personen" und "System-Sprachflag" __ erfasst.
·Code
-__ Morphologische Analyse __ ist eine der Methoden zur Verarbeitung natürlicher Sprache und eine Methode zum Teilen eines Satzes durch Wörter (morphologische Elemente) und zum Klassifizieren von Teilen. • Zum Beispiel "Hallo, es ist Ja!" Wenn "Hallo /, / I / ist / Ngayope / ist /!" Wird.
MeCab ・ Führen Sie eine morphologische Analyse mit MeCab durch. Die Verwendung ist wie folgt. Für k mit __k = MeCab.Tagger ('Ausgabemodus angeben') __ Ausführen als __k.parse ('Zeichenkette für morphologische Analyse') __. Insbesondere ist es wie folgt.
Janome -Wenn Sie mit Janome eine morphologische Analyse durchführen, können Sie ein Objekt mit __t = Tokenizer () __ erstellen und es dann mit __t.tokenize ('Zeichenkette für morphologische Analyse') __ ausführen. -Bei separatem Schreiben setzen Sie in diesem zweiten Argument "wakati = True".
-Wenn __Analyzer () __ verwendet wird, können die Verarbeitung bis zu diesem Punkt und die Vorverarbeitung des Textes für die morphologische Analyse gleichzeitig durchgeführt werden. -Das zu übergebende Argument ist __ (Vorverarbeitung, Tokenizer-Objekt (t), Filter) __. -Der Vorverarbeitungsteil enthält __UnicodeNormalizeCharFilter () __, das die Notationsschwankung von Unicode-Zeichenfolgen normalisiert. Übrigens führt dies eine Normalisierung durch, wie das Vereinheitlichen von Alphabeten voller Breite und Katakana zu halber Breite.
Manchmal kann das erste Argument auch dann nicht weggelassen werden, wenn keine Vorverarbeitung durchgeführt wird. Schreiben Sie in einem solchen Fall nur "__ [] __".
Setzen Sie für die verbleibenden zwei Argumente das oben genannte Objekt und den Filter.
Führen Sie Analyzer () wie folgt aus.
Da die morphologische Analyse vom verwendeten Wörterbuch abhängt, kann die Analyse unnatürlich werden, wenn Wörter angezeigt werden, die nicht im Wörterbuch enthalten sind. ・ In solchen Fällen gibt es zwei Arten von Gegenmaßnahmen. Das erste besteht darin, ein Benutzerwörterbuch vorzubereiten. (Es wird hier jedoch nicht erklärt) -Eine andere Methode ist "Textnormalisierung". Dies dient dazu, unnötige Symbole im Text zu löschen und die Notation als Vorverarbeitung zu vereinheitlichen.
Wenn beispielsweise "," und "," in einem Satz gemischt werden, wird er mit beiden vereinheitlicht, und die Notation von "Apfel" und "Apfel" wird auch mit beiden vereinheitlicht.
Verwenden Sie "regulärer Ausdruck", um die zu normalisierende Zeichenfolge anzugeben.
Verwenden Sie insbesondere __re.sub ("zu entfernende Zeichenfolge", "Zeichenfolge nach Konvertierung", "zu entfernender Text") __ und beschreiben Sie den hier angegebenen Teil in einem regulären Ausdruck. -Reguläre Ausdrücke werden hier nicht im Detail behandelt. (Siehe Qiita für verschiedene Artikel)
・ Code (ausgenommen alphanumerische Zeichen aus "Ich kaufe 10 Artikel A")
-Natürliche Sprachverarbeitung kann durchgeführt werden, indem ein Computer die natürliche Sprache als numerischen Wert verarbeitet.
Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.
Recommended Posts