Ich arbeite an der Stimmungsanalyse über Tweets mit word2vec als Wortdarstellung.
Ich habe mein word2vec-Modell trainiert. Aber wenn ich meinen Klassifikator trainiere, habe ich das Problem, dass jeder Tweet eine andere Länge hat und der Klassifikator (RandomForest) alle Beispiele benötigt, um die gleiche Größe zu haben.
Derzeit mittle ich für jeden Tweet die Vektoren aller seiner Wörter, um eine Vektordarstellung des Tweets zu erhalten.
Beispiel: Mein word2vec-Modell repräsentiert jedes Wort als Vektoren der Größe 300.
Ich habe Tweet1
aus 10 Wörtern und Tweet2
aus 5 Wörtern gebildet.
Also, was ich tue, ist für Tweet1
(v1_Tweet1 + v2_Tweet1 + ... +v10_Tweet1)/10 = v_Tweet1 #avg vector of 300 elements.
Für Tweet2
:
(v1_Tweet2 + v2_Tweet2 + ... +v5_Tweet1)/5 = v_Tweet2 #avg vector of 300 elements.
* Als v1_TweetX der Vektor des ersten Wortes des TweetX und so weiter.
Das funktioniert gut, aber ich würde gerne wissen, welche anderen Ansätze Sie wählen, um die unterschiedlichen Größen im Zug und die Textbeispiele für den Klassifikator zu überwinden.
Vielen Dank.
In meiner Arbeit habe ich den gleichen Weg gemacht, indem ich die Wortvektoren gemittelt habe. Aber es gibt noch eine andere Idee, die ich ausprobieren wollte. Es ist mit Hilfe von POS-Tags.
Erstellen Sie zunächst einen möglichst komplizierten Satz mit allen POS-Tags und legen Sie diese POS-Tags als Vorlage fest. Für jeden Satz im Twitter-Korpus markiert POS alle darin enthaltenen Wörter und wendet die Wortvektoren an, die den POS-Tags in der Vorlage entsprechen. Die unsichtbaren POS-Tags haben also Nullen.
Zum Beispiel:
NNP PDT DT NNS VB MD JJS CC PRP RBS
ist die Vorlage. Somit enthält jede Position einen 300-dimensionalen Vektor, der vollständig ein 3000-dimensionaler Vektor ist. Und wenn die POS-Tags des ersten Tweets sindNNP VB JJS PRP
, werden die Wortvektoren auf diese Positionen angewendet und haben Vektoren aufNNP VB JJS PRP
Positionen und 300-dimensionale Nullvektoren auf anderen Positionen.Diese Methode löst nicht nur das Problem der Darstellung des Satzes durch einen einzelnen Vektor, sondern bewahrt auch die syntaktische Struktur des Satzes durch Positionierung im rechten POS.
Natürlich gibt es Probleme, wenn mehr als ein POS-Tag oder eine durcheinandergebrachte Position der Tags vorhanden ist. Dies ist nur eine der Möglichkeiten.
quelle
Ich kann mir einige Möglichkeiten vorstellen, die zu Ihrem Anwendungsfall passen könnten:
quelle