从word2vec获得正/负百分比

时间:2016-03-10 13:10:30

标签: python sentiment-analysis gensim word2vec

我正在玩Linan Qiu的example word2vec实现(Github),其最终目标是分析一堆推文。

我面临的问题是我不知道如何从word2vec的实现中提取正/负/极性百分比。代码提供了准确率,所以我认为它必须检查预测值(POS / NEG)与已知值(在这种情况下整个.txt用POS或NEG填充)。因此,我的方法是获得每个文档的预测POS / NEG评级(在这种情况下每次评审),然后当然只需添加(评级数,我的意思)并从中划分POS和NEG以获得百分比。然后,该百分比将涵盖该文件中的所有文档。由此,也可以计算极性,但我试图首先计算出POS / NEG。

有人会对如何获得预测评级有任何想法吗?下面是后矢量化代码,但它与使用的标准非常相似(咳嗽)。

非常感谢你!

# gensim modules
from gensim import utils
from gensim.models.doc2vec import LabeledSentence
from gensim.models import Doc2Vec

# numpy
import numpy

# shuffle
from random import shuffle

# logging
import logging
import os.path
import sys
import cPickle as pickle

# logres
from sklearn.linear_model import LogisticRegression

#commit

model = Doc2Vec.load('./imdb.d2v')

train_arrays = numpy.zeros((25000, 100))
train_labels = numpy.zeros(25000)

for i in range(12500):
    prefix_train_pos = 'TRAIN_POS_' + str(i)
    prefix_train_neg = 'TRAIN_NEG_' + str(i)
    train_arrays[i] = model.docvecs[prefix_train_pos]
    train_arrays[12500 + i] = model.docvecs[prefix_train_neg]
    train_labels[i] = 1
    train_labels[12500 + i] = 0



test_arrays = numpy.zeros((25000, 100))
test_labels = numpy.zeros(25000)

for i in range(12500):
    prefix_test_pos = 'TEST_POS_' + str(i)
    prefix_test_neg = 'TEST_NEG_' + str(i)
    test_arrays[i] = model.docvecs[prefix_test_pos]
    test_arrays[12500 + i] = model.docvecs[prefix_test_neg]
    test_labels[i] = 1
    test_labels[12500 + i] = 0


classifier = LogisticRegression()
classifier.fit(train_arrays, train_labels)

print classifier.score(test_arrays, test_labels)

1 个答案:

答案 0 :(得分:0)

临安在这里。我刚用最新的代码更新了我的回购。

预测在LogisticRegression步骤中完成。具体而言,在https://github.com/linanqiu/word2vec-sentiments/blob/master/word2vec-sentiment.ipynb中,在以下行:

classifier = LogisticRegression() classifier.fit(train_arrays, train_labels)

classifier.fit符合LogisticRegression()行中创建的分类器。然后可以使用此分类器使用此处描述的预测方法预测值:

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

分类器的得分方法在幕后进行。