Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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.Doc2Vec中应用相似函数_Python_Gensim_Doc2vec - Fatal编程技术网

Python 在Gensim.Doc2Vec中应用相似函数

Python 在Gensim.Doc2Vec中应用相似函数,python,gensim,doc2vec,Python,Gensim,Doc2vec,我试图让doc2vec函数在python 3中工作。 我有以下代码: tekstdata = [[ index, str(row["StatementOfTargetFiguresAndPoliciesForTheUnderrepresentedGender"])] for index, row in data.iterrows()] def prep (x): low = x.lower() return word_tokenize(low) def cleanMuch(da

我试图让doc2vec函数在python 3中工作。 我有以下代码:

tekstdata = [[ index, str(row["StatementOfTargetFiguresAndPoliciesForTheUnderrepresentedGender"])] for index, row in data.iterrows()]
def prep (x):
    low = x.lower()
    return word_tokenize(low)

def cleanMuch(data, clean):
    output = []
    for x, y in data:
        z = clean(y)
        output.append([str(x), z])
    return output

tekstdata = cleanMuch(tekstdata, prep)

def tagdocs(docs):
    output = []    
    for x,y in docs:
        output.append(gensim.models.doc2vec.TaggedDocument(y, x))
    return output
    tekstdata = tagdocs(tekstdata)

    print(tekstdata[100])

vectorModel = gensim.models.doc2vec.Doc2Vec(tekstdata, size = 100, window = 4,min_count = 3, iter = 2)


ranks = []
second_ranks = []
for x, y in tekstdata:
 print (x)
 print (y)
 inferred_vector = vectorModel.infer_vector(y)
 sims = vectorModel.docvecs.most_similar([inferred_vector], topn=1001,   restrict_vocab = None)
rank = [docid for docid, sim in sims].index(y)
ranks.append(rank)
就我所能理解的而言,在使用秩函数之前,一切都是有效的。 我得到的错误是,我的列表中没有零,例如,我放入的文档列表中没有10个:

  File "C:/Users/Niels Helsø/Documents/github/Speciale/Test/Data prep.py", line 59, in <module>
rank = [docid for docid, sim in sims].index(y)

ValueError: '10' is not in list
文件“C:/Users/Niels Helsø/Documents/github/Speciale/Test/Data prep.py”,第59行,在
秩=[docid代表docid,sims中的sim]。索引(y)
ValueError:“10”不在列表中
在我看来,是类似的功能不起作用。 该模型对我的数据(1000个文档)进行训练,并构建一个带标签的vocab。 我主要使用的文档如下:

我希望有人能帮忙。如果需要任何其他信息,请让我知道。 最好的
Niels

如果您得到的是
ValueError:“10”不在列表中
,您可以依靠
'10'
不在列表中这一事实。那么你有没有看过这个列表,看看有什么,它是否符合你的期望

从您的代码摘录中不清楚是否调用过
tagdocs()
,因此不清楚
tekstdata
在提供给
Doc2Vec
时是什么形式。意图有点复杂,没有任何东西可以显示数据以原始原始形式显示的内容

但是,您提供给
TaggedDocument
标记可能不是必需的标记列表,而是一个简单的字符串,它将被解释为字符列表。因此,即使您提供了
标记
'10'
,它也将被视为
['1','0']
len(vectorModel.doctags)
仅为10(对于10个单位数字符串)

有关设置的单独注释:

  • 对于
    Doc2Vec
    ,1000个文档相当小,其中大多数已发布的结果使用数万到数百万个文档
  • 10-20的
    iter
    Doc2Vec
    工作中更为常见(对于较小的数据集,更大的值可能会有所帮助)
  • expert_vector()
    通常在可选参数中使用非默认值时效果更好,尤其是步骤更大(20-200)的
    步骤或更像批量训练默认值(
    0.025