Selbst in der natürlichen Sprache ist es heutzutage oft "tiefes Lernen", als ob Sie nach rohem Bier fragen würden. In der Tat kann Deep Learning oft eine hohe Genauigkeit aufzeichnen, aber in Wirklichkeit kann diese Genauigkeit sogar mit einem Basismodell aufgezeichnet und in einigen Fällen besiegt werden.
Dies geschah in einem Artikel von Deep Mind, einer bekannten Forschungseinrichtung.
In jüngster Zeit gab es Artikel wie Erreichen der höchsten Genauigkeit auch mit einem Modell, das häufig als Basis verwendet wird. Auf diese Weise kann selbst ein Modell, das als Grundlinie getreten wurde, nicht in einer unerwarteten Ecke platziert werden.
Dieses Mal werde ich das Themenmodell aufgreifen, das eine Art grundlegende Methode in der Verarbeitung natürlicher Sprache darstellt. Dies ist ein Modell für die Klassifizierung von Dokumenten, aber es ist auch ein sehr vielseitiges Modell, das verschiedene Annahmen enthalten kann, z. B. die Annahme der Existenz eines Autors bei der Klassifizierung von Dokumenten (Autorenthemenmodell).
Dieses Mal möchte ich den Mechanismus vorstellen und die Implementierungsmethode erläutern.
Das Themenmodell ist eine Art stochastisches Modell. Mit anderen Worten, wir schätzen die "Wahrscheinlichkeit des Auftretens" von etwas. Im Themenmodell ist dies die "Wahrscheinlichkeit, dass ein Wort in einem Satz erscheint". Wenn Sie dies gut einschätzen können, können Sie Sätze verstehen, in denen ähnliche Wörter vorkommen. Mit anderen Worten, das Themenmodell ist ein Modell, das die "Wahrscheinlichkeit des Auftretens von Wörtern in einem Dokument" schätzt.
Wenn ich das höre, denke ich außerdem, dass Sätze aus dem Themenmodell generiert werden können (Lernen der Erscheinungswahrscheinlichkeit von Wörtern), aber wie oben erwähnt, schätzt das Themenmodell die "Wahrscheinlichkeit des Erscheinens von Wörtern". Ja, Grammatikregeln interessieren mich nicht. Mit anderen Worten, das Themenmodell ist ein Modell, das sich auf Wörter in Sätzen und deren Häufigkeit konzentriert.
Wie sollen wir nun die "Wahrscheinlichkeit des Auftretens von Wörtern" schätzen? Kurz gesagt, es zählt die Wörter, die tatsächlich im Dokument erscheinen, und erstellt darauf basierend eine Schätzung. Das Themenmodell geht davon aus, dass die Art und Anzahl der angezeigten Wörter vom Thema abhängt (= Kategorie). Stellen Sie sich vor, dies ist eine natürliche Annahme, da die Wörter, die in den Themen Politik und darstellende Kunst vorkommen, unterschiedlich sind.
Das Modell ändert sich abhängig von der Einheit, in der dieses "Thema" existiert. In der folgenden Abbildung repräsentiert das quadratische Feld das Dokument und die Farbe seines Inhalts das Thema.
Mit anderen Worten, das diesmal eingeführte Themenmodell ist ein Modell mit den detailliertesten Annahmen. Unter der Annahme, dass das Dokument aus mehreren Themen besteht, ist es möglich, die Zusammensetzung des Dokuments abzuleiten, z. B. "Dieser Artikel besteht zu 70% aus Sport, zu 20% aus Unterhaltung ...", wodurch wir die Merkmale des Textes verstehen können. Sie können jedoch die Unterschiede zwischen Dokumenten quantitativ erfassen (dieses Dokument ist etwa 10% politischer als dieses Dokument usw.).
Nun wollen wir sehen, wie das Themenmodell tatsächlich implementiert wird. Im Folgenden wird die Implementierung in Python vorausgesetzt.
Am einfachsten zu implementieren ist gensim. Wie es heißt "Themenmodellierung für Menschen", kann es in nur wenigen Zeilen implementiert werden.
Alternativ kann es in PyMC3 und PyStan implementiert werden. Beide PyMC / PyStan sind Bibliotheken zur Schätzung der Parameter statistischer Modelle, die als MCMC-Sampler bezeichnet werden. Natürlich müssen Sie das statistische Modell selbst erstellen. PyStan ist eine Schnittstelle für Python einer Bibliothek namens Stan, und Stan selbst kann auch von C ++ und R aus verwendet werden.
Wenn Sie es anpassen möchten, können Sie gensim verwenden, wenn Sie es einfacher machen möchten, und PyMC / PyStan, wenn Sie es anpassen möchten, indem Sie Ihr eigenes Modell erstellen (die Installation ist übrigens auch in dieser Reihenfolge problematisch). Dieses Mal möchte ich Gensim mit Schwerpunkt auf Benutzerfreundlichkeit verwenden. Von hier aus werde ich anhand des tatsächlichen Codes erklären. Der Erklärungscode befindet sich im folgenden Repository. Bitte beziehen Sie sich bei Bedarf darauf.
icoxfog417/gensim_notebook (Es wird ermutigend sein, wenn Sie mir einen Stern m (_ _) m geben)
Informationen zu den Umgebungseinstellungen bei der Entwicklung mit maschinellem Lernen mit Python finden Sie in hier. Einführung in die Verwendung eines Pakets namens Miniconda. Wenn Sie die Umgebung wie im obigen Artikel beschrieben erstellen, kann gensim auf einmal mit "conda install gensim" eingegeben werden (dasselbe gilt für PyMC. PyStan ist nicht so einfach einzugeben ...). Im obigen Repository wird iPython Notebook, ein Tool zum Erstellen von Dokumenten mit Python-Code, zum Erstellen erklärender Dokumente verwendet. Auf dieser Grundlage werden wir Folgendes erklären.
gensim_notebook/topic_model_evaluation.ipynb
Holen Sie sich zuerst die Zieldaten.
Die Daten für die Erstellung des Themenmodells wurden dieses Mal von Hot Pepper Beauty API von Recruit bereitgestellt. Die Motivation war, dass die Daten mir völlig unbekannt waren, also war ich neugierig, wie sie aussehen würden. Nehmen Sie eine neue Registrierung von der oben genannten Site vor und erhalten Sie einen API-Schlüssel. Sie können dann die Friseursalondaten herunterladen, indem Sie "scripts / download_data.py" im Repository ausführen.
Als nächstes verarbeiten Sie die Daten vor. Insbesondere wird ein Satz in einen Wort- / Vorkommenssatz konvertiert. Diese Menge wird als Korpus bezeichnet, und Wörter werden im Korpus durch IDs dargestellt. Die Verknüpfung zwischen dieser ID und dem eigentlichen Wort wird hier als Wörterbuch bezeichnet. Der Prozess zum Erstellen dieses Korpus / Wörterbuchs ist wie folgt.
Das Aufteilen eines Satzes in Wörter wird auf Englisch durch ein Leerzeichen getrennt, auf Japanisch ist dies jedoch nicht so einfach. Daher ist es üblich, eine Bibliothek zu verwenden, die morphologische Analysen durchführen kann. MeCab ist als diese Bibliothek bekannt, und ein Wörterbuch namens mecab-ipadic-neologd, das neu auftretende Wörter registriert, wird ebenfalls bereitgestellt.
Insbesondere unter Windows ist die Installation jedoch mühsam. Daher halte ich es für gut, janome zu verwenden, das nur mit Python erstellt und einfach zu installieren ist. In dieser Probe wird keine morphologische Analyse unter Verwendung der obigen Bibliothek durchgeführt, so dass sie leicht ausgeführt werden kann. Da die "besonderen Bedingungen" in den Daten nur durch Schrägstriche getrennte Informationen waren, verwende ich sie separat.
Wenn Sie unnötige Wörter entfernen, müssen Sie Wörter entfernen, die Ihrer Meinung nach für die Klassifizierung nicht erforderlich sind. Insbesondere sind die Wörter wie folgt.
Und die Wörter zu vereinen bedeutet, Dinge zu vereinen, die sich nur in der Verwendungsform unterscheiden, wie "lecker" und "lecker". Dies nennt man Stemming.
Bei der Verarbeitung natürlicher Sprache ist es keine Übertreibung zu sagen, dass die Genauigkeit fast davon abhängt, wie viel diese Vorverarbeitung durchgeführt werden kann.
Mit dem Skript scripts / make_corpus.py
zum Erstellen eines Korpus können Sie die oben genannten Vorgänge mit verschiedenen Optionen ausführen. Probieren Sie daher verschiedene Einstellungen aus.
Wenn Sie einen Korpus und ein Wörterbuch haben, erstellen Sie ein darauf basierendes Modell. Mit gensim ist das Erstellen eines Modells jedoch nur eine Zeile.
m = models.LdaModel(corpus=corpus, id2word=dictionary, num_topics=3)
"Angenommen, wie viele Themen es gibt (num_topics)" muss festgelegt werden. Mit anderen Worten, Sie müssen schätzen, wie viele Themen wahrscheinlich im gesamten Dokument vorhanden sind (tatsächlich gibt es auch eine Methode namens Diricre-Prozess, mit der geschätzt wird, wie viele Themen gut sind).
Um zu überlegen, wie viele Sie festlegen sollten, müssen Sie das Modell bewerten.
Um eine Bewertung vorzunehmen, wird der Korpus zunächst wie beim normalen maschinellen Lernen in Lernen und Bewertung unterteilt. Die Klassifizierung wird zum Lernen gelernt und als Ergebnis wird untersucht, ob die Bewertung (= unbekannter Satz) richtig klassifiziert werden kann.
Für diese Auswertung wird ein Index namens Ratlosigkeit verwendet. Die umgekehrte Anzahl der Ratlosigkeit gibt an, inwieweit das Auftreten eines Wortes in einem Dokument vorhergesagt werden kann. Der höchste Wert ist also 1, und der Wert wird größer, wenn das Modell weniger genau wird (2 Ziffern sind in Ordnung und die erste Hälfte von 3 Ziffern ist in Ordnung). Danach halte ich es für schlecht, und im Fall einer Ziffer ist es besser, das Modell und die Berechnungsmethode der Ratlosigkeit auf Fehler zu überprüfen.
In Teil des Themenmodells im Kommentar erstellen wird die Ratlosigkeit berechnet, während die Anzahl der Themen geändert wird. Überprüfen Sie dies. bitte versuche.
Die Visualisierung des Themas erleichtert die Bewertung des Modells. Die Methode wird unten erklärt.
Da das Thema eine Klassifizierung von Sätzen ist, ist es besser, ohne Auslassung / Vervielfältigung zu klassifizieren, dh wenn es klar getrennt ist. Mit anderen Worten, es ist ein gutes Modell, einen angemessenen Abstand zwischen Themen und Klassifikationen zu haben.
Es gibt KL-Divergenz als Index, um den Abstand zwischen jeder Klassifizierung zu messen (= Wortverteilung jedes Themas). Auf diese Weise wird im Folgenden der Abstand zwischen Themen veranschaulicht (erstellt mit 3 Themen, der Achsenwert ist die Themennummer).
Die obige Abbildung ist ein schlechtes Beispiel. Je weiter die Themen entfernt sind, desto heller wird die Farbe. Die Tatsache, dass die gesamte Figur dunkel ist, bedeutet, dass ähnliche Themen (= Kategorien) aufgetreten sind. In diesem Fall sollten Sie die Anzahl der Themen reduzieren.
Wenn Sie Sätze tatsächlich klassifizieren, ist es besser, klar zu sagen, dass das Thema dieses Satzes xx ist. Mit anderen Worten, es ist besser, für jeden Satz ein klares Hauptthema zu haben.
Daher ist das Folgende eine Illustration der Themen, aus denen jeder Satz besteht (nach der obigen Überprüfung wurde die Anzahl der Themen auf 2 reduziert). 200 Dokumente werden zufällig ausgewählt und das Zusammensetzungsverhältnis der Themen in jedem Dokument wird angezeigt.
Lassen Sie uns abschließend sehen, welche Wörter in den einzelnen Themen wahrscheinlich vorkommen. Die Wörter werden nicht zwischen Themen dupliziert, und es ist so gut, dass Sie aus einer Sammlung von Wörtern erraten können, um welche Art von Thema es sich handelt.
Wenn man dies betrachtet, kann zumindest Thema Nr. 1 aus den Schlüsselwörtern "kleiner Salon" und "von einem Stylisten" als kleiner Salon abgeleitet werden (unter Berücksichtigung des Schlüsselworts "vollständiges Reservierungssystem" ist es hochklassig. Es kann ein Laden sein). Thema Nr. 0 hat den Eindruck, dass es sich um einen relativ großen Friseursalon mit vielen Mitarbeitern handelt, der das ganze Jahr über geöffnet ist. Wenn ich mir tatsächlich die Homepage des Friseursalons ansehe, habe ich das Gefühl, dass Thema Nr. 0 ein großes Gefühl hat und Thema Nr. 1 das Gefühl eines Fachgeschäfts.
Darüber hinaus wird eine Methode, mit der das System selbst die Merkmale von Daten erkennen und klassifizieren kann, ohne von einer Person wie einem Themenmodell unterrichtet zu werden, als unbeaufsichtigtes Lernen bezeichnet (umgekehrt eine Methode, mit der Daten und ihre Klassifizierung als Satz trainiert werden). Wird betreutes Lernen genannt). Während diese Art des unbeaufsichtigten Lernens den Vorteil hat, dass es sofort gestartet werden kann, wenn Daten vorliegen, gibt es auch den Nachteil, dass es schwierig ist, die Ergebnisse zu interpretieren, da ** "wie zu klassifizieren" dem Modell wie oben beschrieben * überlassen bleibt. *.
Auf diese Weise können Sie mit gensim auf einfache Weise ein Themenmodell erstellen, die Eigenschaften von Sätzen erfassen und klassifizieren. Wenn ich dies auf die Anwendung anwende, denke ich, dass die folgenden Funktionen implementiert werden können.
Wie eingangs erwähnt, ist das Themenmodell ein sehr vielseitiges Modell, daher gibt es viele Entwicklungen.
Insbesondere gibt es ein Korrespondenzthemenmodell, mit dem Sie neben Textinformationen wie Rezensionen zusätzliche Informationen wie Bewertungsindizes berücksichtigen können, und ein Autorenthemenmodell, das den Autor berücksichtigt, der den Text geschrieben hat. Modell) usw. Es wurden auch Versuche unternommen, die Bildklassifizierung anzupassen, indem Bildmerkmale wie Wörter behandelt wurden (dies ermöglicht die gleichzeitige Verarbeitung von Text und Bildern, sodass Bilder automatisch begrenzt werden. Es wird angewendet, um Anmerkungen zu recherchieren usw.).
Ich hoffe, dieser Kommentar hilft Ihnen dabei, Ihre Ideen in Form zu bringen.
Hier sind einige nützliche Bücher / Artikel für diejenigen, die mehr wissen wollen.
In den folgenden Artikeln werden grundlegende Ideen wie die Wahrscheinlichkeit sorgfältig erläutert.
Wenn Sie es mit PyMC implementieren möchten, ist dieses Tutorial hilfreich.
Recommended Posts