Ich möchte nichtatomare Daten als Merkmal für eine Vorhersage verwenden. Angenommen, ich habe eine Tabelle mit folgenden Funktionen:
- Column 1: Categorical - House
- Column 2: Numerical - 23.22
- Column 3: A Vector - [ 12, 22, 32 ]
- Column 4: A Tree - [ [ 2323, 2323 ],[2323, 2323] , [ Boolean, Categorical ] ]
- Column 5: A List [ 122, Boolean ]
Ich möchte zum Beispiel Spalte 2 vorhersagen / klassifizieren.
Ich mache etwas, um automatisch auf Fragen zu antworten, jede Art von Frage, wie "Wo wurde Foo geboren?" ...
Ich stelle zuerst eine Abfrage an eine Suchmaschine, erhalte dann einige Textdaten als Ergebnis und erledige dann das gesamte Parsing (Tagging, Stemming, Parsing, Splitting ...).
Mein erster Ansatz war es, eine Tabelle zu erstellen, jede Zeile mit einer Textzeile und vielen Funktionen wie "Erstes Wort", "Tag des ersten Wortes", "Chunks" usw.
Aber bei diesem Ansatz fehlen mir die Beziehungen zwischen den Sätzen.
Ich würde gerne wissen, ob es einen Algorithmus gibt, der in die Baumstrukturen (oder Vektoren) schaut und die Beziehungen herstellt und alles extrahiert, was für die Vorhersage / Klassifizierung relevant ist. Ich würde lieber etwas über eine Bibliothek wissen, die das macht, als über einen Algorithmus, den ich implementieren muss.
quelle
Antworten:
Wenn es um den Umgang mit vielen unterschiedlichen Arten von Daten geht, insbesondere wenn die Beziehungen zwischen ihnen unklar sind, würde ich dringend eine Technik empfehlen, die auf Entscheidungsbäumen basiert. Die heute beliebtesten sind nach meinem besten Wissen zufällige Wälder und extrem randomisiert Bäume .
Beide haben Implementierungen in sklearn und sind ziemlich einfach zu bedienen. Auf einer sehr hohen Ebene liegt der Grund dafür, dass ein
decision tree
basierter Ansatz für mehrere unterschiedliche Arten von Daten vorteilhaft ist, darin, dass Entscheidungsbäume weitgehend unabhängig von den spezifischen Daten sind, mit denen sie sich befassen, solange sie Ihre Darstellung verstehen können.Sie müssen Ihre Daten immer noch in einen Feature-Vektor einpassen, aber basierend auf Ihrem Beispiel scheint dies eine ziemlich einfache Aufgabe zu sein, und wenn Sie bereit sind, Ihre Implementierung etwas tiefer zu vertiefen, könnten Sie sich sicherlich etwas einfallen lassen Eine benutzerdefinierte Baumaufteilungsregel, ohne dass der zugrunde liegende Algorithmus geändert werden muss. Das Originalpapier ist ein ziemlich anständiger Ausgangspunkt, wenn Sie es ausprobieren möchten.
Wenn Sie jedoch pseudostrukturelle Daten aus Ihren Textdaten wünschen, kann ich Ihnen empfehlen
doc2vec
, diese kürzlich von Google entwickelten Daten zu untersuchen . Ich denke, es gibt derzeit keine guten Open-Source-Implementierungen, aber es ist eine ziemlich einfache Verbesserung desword2vec
Algorithmus, der Implementierungen in mindestensC
und enthältpython
.Hoffentlich hilft das! Lassen Sie mich wissen, wenn Sie weitere Fragen haben.
quelle