1

このような感情分類 (分析) に関する最新の投稿を読んでいます。

IMDB データセットを例にとると、Doc2Vec を使用しても同様の精度 (88%) が得られますが、特徴抽出にトライグラムを使用した単純な tfidf ベクトライザー (91%) を使用すると、はるかに優れた結果が得られますこれは、 Mikolov の 2015 年の論文の表 2 に似ていると思います。

より大きなデータセットを使用することで、これが変わると思いました。そこで、ここから 1 ミルのトレーニングと 1 ミルのテストの内訳を使用して、実験を再実行しました。残念ながら、その場合、私の tfidf vectoriser 機能抽出メソッドは 93% に増加しましたが、doc2vec は 85% に低下しました。

これが予想されることであり、他の人は大規模なコーパスであっても tfidf が doc2vec よりも優れていると考えているのでしょうか?

私のデータクリーニングは簡単です:

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

そして、Doc2Vec モデルに 400 および 1200 の機能を使用してみました。

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

私の tfidf vectoriser には最大 40,000 個の機能があります。

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

分類のために、私はいくつかの線形方法を試しましたが、単純なロジスティック回帰でうまくいくことがわかりました...

4

1 に答える 1

3

Mikolov がかつて投稿したサンプル コード ( https://groups.google.com/d/msg/word2vec-toolkit/Q49FIrNOQRo/J6KG8mUj45sJ ) ではオプション-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が使用されていましたdm=0, dbow_words=1, size=100, window=10, hs=0, negative=5, sample=1e-4, iter=20, min_count=1, workers=cores

私の推測では、最適な値には、より小さくwindowてより高いmin_count、おそらくsize100 から 400 の間のどこかが含まれる可能性がありますが、これらの実験を実行してからしばらく経ちました。

passesまた、バルク トレーニングされたベクトルを再利用するのではなく、デフォルトよりも大きなパラメータを使用して、最終モデルのベクトルを再推定することが少し役立つ場合もあります。それでも、これらは Tfidf と同様のパフォーマンスに収束する可能性があります。それらはすべて同じ単語機能に依存しており、データはあまり多くありません。

一部のドキュメントタグが既知の感情を表す半教師付きアプローチに行くことも役立つ場合があります。

于 2016-07-29T02:33:21.340 に答える