Ich fange gerade an zu lernen, wie ein neuronales Netzwerk Muster erkennt und Eingaben kategorisiert, und ich habe gesehen, wie ein künstliches neuronales Netzwerk Bilddaten analysieren und die Bilder kategorisieren kann ( Demo mit convnetjs ) und den Schlüssel dort wird das Bild heruntergemustert und jedes Pixel stimuliert ein Eingangsneuron in das Netzwerk.
Ich versuche jedoch, den Kopf herumzureißen, wenn dies mit Zeichenfolgen möglich ist. Der Anwendungsfall, den ich habe, ist eine "Empfehlungsmaschine" für Filme, die ein Benutzer gesehen hat. Filme haben viele String-Daten (Titel, Handlung, Tags), und ich könnte mir vorstellen, den Text auf ein paar Schlüsselwörter herunterzusampeln, die den Film beschreiben Denken Sie, ich brauche Eingabe-Neuronen für jedes englische Wort, um eine Reihe von Filmen zu vergleichen? Ich könnte die Eingabe-Neuronen nur auf die Wörter beschränken, die im Set verwendet werden, aber könnte es dann wachsen / lernen, indem neue Filme hinzugefügt werden (Benutzer sieht sich einen neuen Film mit neuen Wörtern an)? Die meisten Bibliotheken, die ich gesehen habe, erlauben es nicht, neue Neuronen hinzuzufügen, nachdem das System trainiert wurde?
Gibt es eine Standardmethode zum Zuordnen von Zeichenfolgen-, Wort- und Zeichendaten zu Eingaben in ein neuronales Netzwerk? Oder ist ein neuronales Netzwerk wirklich nicht das richtige Werkzeug zum Analysieren von Zeichenfolgendaten (was ist ein besseres Werkzeug für den Mustervergleich in Zeichenfolgendaten)?
quelle
Sowohl die Antworten von @Emre als auch von @Madison können gute Argumente für das vorliegende Problem liefern. Das Problem besteht darin, Ihre Zeichenfolge als Merkmalsvektor für die Eingabe in den NN darzustellen.
Erstens hängt das Problem von der Größe der Zeichenfolge ab, die Sie verarbeiten möchten. Lange Zeichenfolgen, die möglicherweise Tokens (normalerweise Wörter) enthalten, werden in dieser Einstellung häufig als Dokumente bezeichnet. Es gibt separate Methoden für den Umgang mit einzelnen Token / Wörtern.
Es gibt verschiedene Möglichkeiten, Dokumente darzustellen. Viele von ihnen gehen von einem Wortschwall aus. Die einfachsten Typen repräsentieren das Dokument als Vektor der Wortanzahl oder der Termhäufigkeit (tf). Um die Auswirkungen der Dokumentlänge auszuschließen, wird normalerweise die Anzahl der Dokumente, in denen ein Begriff vorkommt, als Dokumenthäufigkeit ( tf-idf ) angegeben.
Ein weiterer Ansatz ist die Themenmodellierung, bei der eine latente Darstellung der Daten in einer niedrigeren Dimension erlernt wird. LDA und LSI / LSA sind typische Auswahlmöglichkeiten, es ist jedoch wichtig, sich daran zu erinnern, dass dies nicht überwacht wird. Die erlernte Darstellung ist nicht unbedingt ideal für das betreute Lernen, das Sie mit Ihrem NN durchführen. Wenn Sie Themenmodelle erstellen möchten, können Sie auch betreute Themenmodelle ausprobieren .
Für einzelne Wörter können Sie word2vec verwenden , das NNs verwendet , um Wörter in einen Raum beliebiger Größe einzubetten. Die Ähnlichkeit zwischen zwei Wortvektoren in diesem erlernten Raum entspricht tendenziell der semantischen Ähnlichkeit.
Ein jüngerer Zeit Pionierarbeit Ansatz ist , dass der Absatz Vektoren , die zunächst ein word2vec artigen Wortmodell lernt, dann auf dieser Darstellung bildet eine verteilte Darstellung von Sätzen von Wörtern (Dokumente jeder Größe) zu lernen. Dies hat in vielen Anwendungen den Stand der Technik gezeigt.
Bei der Verwendung von NNs in NLP werden häufig unterschiedliche Architekturen verwendet, z. B. wiederkehrende neuronale Netze (z. B. Langzeit-Kurzzeitspeicher- Netze). In einigen Fällen haben Leute sogar Faltungsneuronale Netze für Text verwendet.
quelle
Hierbei handelt es sich nicht um neuronale Netze an sich, sondern um die Darstellung von Textdaten beim maschinellen Lernen. Sie können die Filme, die Besetzung und das Thema als kategoriale Variablen darstellen. Die Handlung ist komplizierter; Sie würden wahrscheinlich wollen Thema Modell für das, aber ich würde das auslassen , bis man den Dreh Dinge. Es führt genau das von Ihnen erwähnte "Downsampling" durch.
In diesem Tutorial erfahren Sie, wie Sie kategoriale Variablen für neuronale Netze codieren. Und viel Glück!
quelle
Ich habe die folgenden zwei Möglichkeiten für die Trial-n-Test-Implementierung neuronaler Netze mit Text ausprobiert. Letzteres funktioniert ziemlich gut, aber mit Einschränkungen.
Erstellen Sie Vokabeln mit word2vect oder NLTK / custom word tokens und weisen Sie jedem Wort einen Index zu. Es ist dieser Index, der das Wort als Zahl darstellt.
Herausforderungen:
Identitätsmatrix verwenden, z. B. für "n" Wörter "nx n" oder (n-1 x n-1) Matrix verwenden, wobei jede Zeile und Spalte ein Wort darstellt. Setzen Sie "1" in die Kreuzungszelle und "0" in die Ruhepositionen. ( Referenz )
Herausforderungen:
quelle