Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用gensim模型时出错_Python_Gensim_Word2vec - Fatal编程技术网

在python中使用gensim模型时出错

在python中使用gensim模型时出错,python,gensim,word2vec,Python,Gensim,Word2vec,在处理doc2vec文件时,我现在使用gensim模型对数据进行训练,从而生成了doc2vec文件。我犯了一个错误。 我正在运行以下代码:- 模型=Doc2Vec.load('140.d2v') 如果len(sys.argv)

在处理doc2vec文件时,我现在使用gensim模型对数据进行训练,从而生成了doc2vec文件。我犯了一个错误。 我正在运行以下代码:-

模型=Doc2Vec.load('140.d2v')

如果len(sys.argv)<4:
打印(“请输入序列号、序列号和分类器!”)
sys.exit()
列车位置计数=整数(系统argv[1])
列车负计数=int(系统argv[2])
测试位置计数=144
测试负计数=144
打印(列车位置计数)
打印(列负计数)
vec_dim=100
打印(“生成培训数据集…”)
序列数组=整数零((序列位置计数+序列负计数,矢量尺寸))
列车标签=整数零(列车位置计数+列车负计数)
对于范围内的i(列车位置计数):
前缀“列车位置=”列车位置+str(一)
列车数组[i]=model.docvecs[前缀列车位置]
列车标签[i]=1
对于范围内的i(列负计数):
前缀_train_neg='train_neg_'+str(i)
列车数组[列车位置计数+i]=model.docvecs[前缀列车负]
列车标签[列车位置计数+i]=0
打印(“生成测试数据集…”)
测试数组=numpy.zero((测试正计数+测试负计数,向量维数))
测试标签=numpy.zero(测试正计数+测试负计数)
对于范围内的i(测试位置计数):
前缀_test_pos='test_pos_'+str(i)
测试数组[i]=model.docvecs[前缀测试位置]
测试标签[i]=1
对于范围内的i(测试负计数):
前缀_test_neg='test_neg_'+str(i)
test_数组[test_pos_count+i]=model.docvecs[前缀为test_neg]
测试标签[测试位置计数+i]=0
打印(“开始分类…”)
分类器=无
如果sys.argv[3]='-lr':
打印(“使用逻辑回归…”)
分类器=逻辑回归()
elif sys.argv[3]='-svm':
打印(“使用支持向量机…”)
分类器=SVC()
elif sys.argv[3]='-knn':
打印(“使用K-最近邻…”)
分类器=Kneighbors分类器(n_=10)
elif sys.argv[3]='-rf':
打印(“使用随机林…”)
分类器=随机森林分类器()
fit(序列数组、序列标签)
打印(“精度:”,分类器。分数(测试数组,测试标签))
我收到一个键错误-“测试位置72”


我想知道我做错了什么。

这个错误实际上意味着没有带键('tag')
TEST\u POS\u 72的文档向量是模型的一部分。培训期间不应该有任何带有该标签的文件

您可以在
model.docvecs.offset2doctag
中看到模型中所有已知文档标记的列表。如果不存在
TEST\u POS\u 72
,则无法通过
model.docvecs['TEST\u POS\u 72']
访问文档向量。(如果该列表为空,则文档向量被训练为通过普通int键访问,并且
model.docvecs[72]
将是访问文档向量的更合适的方式。)

(另外,Doc2Vec不能很好地处理几百个文档的小微粒,屏幕截图中的警告“正在使用gensim.models.Doc2Vec的慢速版本”意味着gensim优化的C编译例程不属于安装的一部分,培训将慢100倍或更多。)

if len(sys.argv) < 4:
    print ("Please input train_pos_count, train_neg_count and classifier!")
    sys.exit()

train_pos_count = int(sys.argv[1])
train_neg_count = int(sys.argv[2])
test_pos_count = 144
test_neg_count = 144

print (train_pos_count)
print (train_neg_count)

vec_dim = 100

print ("Build training data set...")
train_arrays = numpy.zeros((train_pos_count + train_neg_count, vec_dim))
train_labels = numpy.zeros(train_pos_count + train_neg_count)

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

for i in range(train_neg_count):
    prefix_train_neg = 'TRAIN_NEG_' + str(i)
    train_arrays[train_pos_count + i] = model.docvecs[prefix_train_neg]
    train_labels[train_pos_count + i] = 0


print ("Build testing data set...")
test_arrays = numpy.zeros((test_pos_count + test_neg_count, vec_dim))
test_labels = numpy.zeros(test_pos_count + test_neg_count)

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

for i in range(test_neg_count):
    prefix_test_neg = 'TEST_NEG_' + str(i)
    test_arrays[test_pos_count + i] = model.docvecs[prefix_test_neg]
    test_labels[test_pos_count + i] = 0


print ("Begin classification...")
classifier = None
if sys.argv[3] == '-lr':
    print ("Logistic Regressions is used...")
    classifier = LogisticRegression()
elif sys.argv[3] == '-svm':
    print ("Support Vector Machine is used...")
    classifier = SVC()
elif sys.argv[3] == '-knn':
    print ("K-Nearest Neighbors is used...")
    classifier = KNeighborsClassifier(n_neighbors=10)
elif sys.argv[3] == '-rf':
    print ("Random Forest is used...")
    classifier = RandomForestClassifier()

classifier.fit(train_arrays, train_labels)

print ("Accuracy:", classifier.score(test_arrays, test_labels))