【发布时间】:2016-03-10 13:10:30
【问题描述】:
我正在玩 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)
【问题讨论】:
标签: python sentiment-analysis gensim word2vec