[PYTHON] Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 2 Schritt 06 Memo "Identifier"

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 06, meine eigenen Punkte aufschreiben.

Vorbereitung

Kapitelübersicht

Durch Lernen mit dem Merkmalsvektor und der Klassen-ID als Eingaben kann die Klassen-ID aus dem Merkmalsvektor vorhergesagt werden.

06.1 Den Klassifikator beherrschen

Sie können den Klassifikator einfach wechseln, indem Sie der Variablen "Klassifikator" einen Klassifikator zuweisen.

# SVC
from sklearn.svm import SVC
classifier = SVC()

# RandomForest
from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier()

06.2 SVM(Support Vector Machine)

Die grundlegende SVM-Übersicht entfällt. Ein Problem, das nicht durch Teilen des Merkmalsraums auf einer geraden oder flachen Identifikationsfläche (lineare Identifikationsfläche) identifiziert werden kann, wird als ** linear untrennbares ** Problem bezeichnet. Es gibt die folgenden Methoden, um damit umzugehen.

SVM mit hartem Rand, SVM mit weichem Rand

Es gibt zwei Typen, ** SVM mit weichem Rand ** und einfache SVM mit hartem Rand **, die versuchen, die Grenzfläche so einzustellen, dass "die Grenze hervorsteht und der Vorsprung so weit wie möglich verringert wird". Der Grad der Toleranz für den Vorsprung kann zum Zeitpunkt der Instanziierung festgelegt werden (Standard 1.0).

Kernel

In Fällen, in denen die Grenze nicht in dem Maße getrennt werden kann, in dem die Grenze hervorstehen darf, wird die Kernelmethode verwendet, bei der der Merkmalsvektor in einen Merkmalsraum kopiert wird, dessen Dimension größer ist als der ursprüngliche Merkmalsraum, und die Unterscheidungsfläche dort festgelegt wird. Der Kerneltyp kann zum Zeitpunkt der Instanziierung angegeben werden.

--RBF-Kernel (Gauß-Kernel): Standardspezifikation, am orthodoxesten --Polygon-Kernel: beliebt in der Verarbeitung natürlicher Sprache --Andere

Klasse von Scikit-learn

06.3 Ensemble

Die Methode, mehrere Klassifikatoren zu einem Klassifikator zu kombinieren, wird als Ensemble bezeichnet. Obwohl die Erklärung des Entscheidungsbaums weggelassen wird, sind die Eigenschaften des Entscheidungsbaumensembles wie folgt.

Typische Ensemble-Methoden sind Bagging und Boosting (Referenz).

Artikel Random Forest GBDT
Ensemble-Methode Absacken Erhöhen
Methode sklearn.ensemble.RandomForestClassifier() skleran.ensemble.GradientBoostingClassifier()
Entscheidungsbaum erstellen Ein paar tiefe Bäume Viele flache Bäume
Lauf - Schneller und speichereffizienter als Random Forest

06,4 k Nachbarschaftsmethode

Es ist ein Klassifizierer, der aus den Trainingsdaten k Merkmalsvektoren nahe dem Eingangsmerkmalsvektor auswählt und anhand seiner Klassen-ID eine Mehrheitsentscheidung trifft. Abhängig vom numerischen Wert von k kann sich die identifizierte Klassen-ID ändern, oder wenn die Anzahl der Klassen-IDs in den Trainingsdaten verzerrt ist, kann das gewünschte Ergebnis möglicherweise nicht erhalten werden.

Abstand zur Messung der Nähe

Art Inhalt
Euklidische Entfernung Die Länge des Vektors im Raum
Manhattan Entfernung Summe der axialen Längen im Raum
Minkovsky Entfernung Eine verallgemeinerte Entfernung von euklidischer Entfernung und Manhattan-Entfernung
Levenstein Entfernung Fügen Sie jeweils ein Zeichen ein, um den Abstand zwischen den Zeichenfolgen darzustellen/Löschen/Häufigkeit, mit der dieselbe Zeichenfolge ersetzt und erstellt werden muss

Parametrisch und nicht parametrisch

Artikel parametrisch ノンparametrisch
Parametereinstellungen Es ist notwendig, auf die Parameter zu achten, damit die Identifikationsfläche richtig eingestellt werden kann. Sie müssen nicht über Parameter nachdenken, die sich auf die Identifikationsoberfläche beziehen
Berechnungskosten Die Berechnungskosten der Identifikationsfläche sind zum Zeitpunkt des Lernens erforderlich
Die Berechnungskosten zum Zeitpunkt der Identifizierung sind nahezu konstant
Die Berechnungskosten zum Zeitpunkt des Lernens sind grundsätzlich Null
Die Berechnungskosten zum Zeitpunkt der Identifizierung steigen entsprechend der Menge der Trainingsdaten
Anzahl der erforderlichen Trainingsdaten Verhältnis mäßig wenig Relativ viele
Diskriminator Beispiel SVM k Nachbarschaftsmethode

06.5 Auf Dialogue Agent anwenden

Ergänzungen / Änderungen gegenüber dem vorherigen Kapitel

  1. Identifikator: SVM → Random Forest
  2. TF-IDF ngram_range: 1 ~ 3 → 1 ~ 2
~~
pipeline = Pipeline([
#    ('vectorizer', TfidfVectorizer(tokenizer=self._tokenize, ngram_range=(1, 3))),
    ('vectorizer', TfidfVectorizer(tokenizer=self._tokenize, ngram_range=(1, 2))),
#    ('classifier', SVC()),
    ('classifier', RandomForestClassifier(n_estimators=30)),
])
~~

Ausführungsergebnis


# evaluate_dialogue_agent.Ändern Sie den Namen des py-Lademoduls nach Bedarf
from dialogue_agent import DialogueAgent

$ docker run -it -v $(pwd):/usr/src/app/ 15step:latest python evaluate_dialogue_agent.py
0.61702127

Recommended Posts

Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 2 Schritt 06 Memo "Identifier"
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 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 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 Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 3 Schritt 11 Memo "Worteinbettungen"
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" - Kapitel 3 Schritt 12 Memo "Convolutional Neural Networks".
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 2 Schritt 01 Memo "Erstellen eines Dialogagenten"
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"
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"
[WIP] Vorverarbeiten von Notizen in der Verarbeitung natürlicher Sprache
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
[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
[Verarbeitung natürlicher Sprache] Ich habe versucht, die Bemerkungen jedes Mitglieds in der Slack-Community zu visualisieren
[Python] Versuchen Sie, Ramen-Shops durch Verarbeitung natürlicher Sprache zu klassifizieren
Zusammenfassung von Kapitel 2 der Einführung in Entwurfsmuster, die in Java gelernt wurden
Kapitel 4 Zusammenfassung der Einführung in Entwurfsmuster, die in Java gelernt wurden
Zusammenfassung von Kapitel 3 der Einführung in Entwurfsmuster, die in Java gelernt wurden
[Einführung in RasPi4] Umgebungskonstruktion, Mecab des Verarbeitungssystems für natürliche Sprache usw. .. .. ♪
Dockerfile mit den notwendigen Bibliotheken für die Verarbeitung natürlicher Sprache mit Python
100 Klicks in der Verarbeitung natürlicher Sprache Kapitel 4 Kommentar
100 Sprachverarbeitung Knock Kapitel 1 in Python
Probieren Sie Cython in kürzester Zeit aus
Vorbereitung zum Starten der Verarbeitung natürlicher Sprache
Von der Einführung der GoogleCloudPlatform Natural Language API bis zur Verwendung
Ich habe versucht, die Version 2020 mit 100 Sprachverarbeitung zu lösen [Kapitel 3: Reguläre Ausdrücke 25-29]
100 Klopfen der Verarbeitung natürlicher Sprache Kapitel 1 (Vorbereitungsbewegung)
Einführung in die Überprüfung der Wirksamkeit Kapitel 1 in Python geschrieben
Praktische Warenmitteilung zur Verarbeitung natürlicher Sprache
Auch wenn die Entwicklungssprache in Cloud9 in Python3 geändert wird, wird Version 2 in Python - Version angezeigt
Lassen Sie die COTOHA-API die schwierigen Dinge tun - Einführung in das "Lernen mit" der Verarbeitung natürlicher Sprache -
Ich habe versucht, mit der Bibliothek GiNZA zur Verarbeitung natürlicher Sprache eindeutige Ausdrücke zu extrahieren
Ich habe versucht, die 2020-Version von 100 Sprachverarbeitungsproblemen zu lösen [Kapitel 1: Vorbereitungsbewegung 00-04]
Ich habe versucht, die 2020-Version von 100 Sprachverarbeitungsproblemen zu lösen [Kapitel 1: Vorbereitungsbewegung 05-09]