1

Ich habe mehr moderne Beiträge über Stimmungseinstufung (Analyse) wie this gelesen.Ist Doc2Vec für die Stimmungsanalyse geeignet?

Unter dem IMDB-Datensatz als Beispiel finde ich, dass ich eine ähnliche Genauigkeit Prozentsatz mit Doc2Vec (88%) erhalte, jedoch ein weit besseres Ergebnis ein einfaches TFIDF vectoriser mit Tri-Gramm zur Merkmalsextraktion (91%) mit . Ich denke, das ist ähnlich zu Tabelle 2 in Mikolov's 2015 paper.

Ich dachte, dass durch die Verwendung eines größeren Datensatzes dies ändern würde. Also habe ich mein Experiment mit einer Aufschlüsselung von 1Mill Training und 1 Mill Test von here wiederholt. Unglücklicherweise stieg in diesem Fall meine tfidf-Vektorisierer-Merkmalsextraktionsmethode auf 93%, doc2vec fiel jedoch auf 85%.

Ich fragte mich, ob das zu erwarten ist und dass andere tfidf überlegen zu Doc2vec sogar für ein großes Korpus sind?

Meine Daten-Reinigung ist einfach: mit 400 und 1200 Features für das Doc2Vec Modell

def clean_review(review): 
    temp = BeautifulSoup(review, "lxml").get_text() 
    punctuation = """.,?!:;(){}[]""" 
    for char in punctuation 
     temp = temp.replace(char, ' ' + char + ' ') 
    words = " ".join(temp.lower().split()) + "\n" 
    return words 

Und ich habe versucht:

model = Doc2Vec(min_count=2, window=10, size=model_feat_size, sample=1e-4, negative=5, workers=cores) 

Während mein TFIDF vectoriser hat 40.000 max Features:

vectorizer = TfidfVectorizer(max_features = 40000, ngram_range = (1, 3), sublinear_tf = True) 

Für die Klassifizierung experimentierte ich mit ein paar linearen Met Hods, fand jedoch einfache logistische Regression OK ...

Antwort

2

Der Beispielcode Mikolov einmal geschrieben zu tun (https://groups.google.com/d/msg/word2vec-toolkit/Q49FIrNOQRo/J6KG8mUj45sJ) verwendeten Optionen -cbow 0 -size 100 -window 10 -negative 5 -hs 0 -sample 1e-4 -threads 40 -binary 0 -iter 20 -min-count 1 -sentence-vectors 1 - die in GENSIM zu dm=0, dbow_words=1, size=100, window=10, hs=0, negative=5, sample=1e-4, iter=20, min_count=1, workers=cores ähnlich sein würde.

Meine Vermutung ist, dass optimale Werte könnte eine kleinere window und höhere min_count beinhalten und vielleicht ein size irgendwo zwischen 100 und 400, aber es her, seit ich eine Weile habe diese Experimente durchgeführt.

Es kann auch manchmal helfen, ein wenig auf Vektoren im endgültigen Modell zu referenzieren, indem ein Parameter verwendet wird, der größer ist als der Standardwert passes, statt die Vektoren, die auf Volumen trainiert wurden, wiederzuverwenden. Dennoch können diese bei Tfidf nur mit einer ähnlichen Leistung konvergieren - sie sind alle abhängig von denselben Worteigenschaften und nicht sehr vielen Daten.

Der Übergang zu einem semi-überwachten Ansatz, bei dem einige der Dokument-Tags Empfindungen darstellen, wo bekannt ist, hilft manchmal auch.

+0

Das ist sehr hilfreich - ich werde es versuchen! Denken Sie jedoch, dass das Konzept, Kontext zu verwenden, um ähnliche Wörter zu folgern, natürlich Synonyme und Antonyme mischt. Zum Beispiel: "Das ist Film ist gut", "Dieser Film ist schlecht" -> gut und schlecht wird einen hohen Kosinus haben. Dies bedeutet, dass im guten Vektorraum die guten und schlechten Gefühle sehr nahe beieinander liegen und schwerer zu trennen/zu klassifizieren sind. –

+0

Es stimmt, dass Verteilungsmodelle Antonyme häufig als ähnlich betrachten. Und oft sind solche Wörter sehr ähnlich - außer in dem einen Vordergrund, in dem sie sich unterscheiden. Ob dies ein Problem für die Stimmungseinteilung darstellt oder ob noch genügend Kontrast vorhanden ist, müsste experimentell gelöst werden. Der Akt des Trainings induziert immer noch verschiedene Vektoren für Wort-Vecs/Doc-Vecs, die in der Nähe "gut" oder "schlecht" vorhersagen müssen. – gojomo