因此,我是Python的新手,这是我要解决的第一个问题。我意识到我有些烦恼,但我确实需要完成此操作(并且我想学习!)。
我正在尝试根据不同的产品描述对它们进行分类。为此,我使用了Gensim Doc2Vec,以及常用的Pandas,Numpy等。
我有大约6000个独特产品说明的文档,并带有各自的商品编号。我毫不费力地读取文件,对其进行格式化和标记化以及删除停用词等。令我头疼的是手动模型训练。为了设置代码,我使用了文档的一部分,只有200篇文章,所以每次我弄错它时,培训都不会花很长时间。
使用model.most_similar(“ word”)函数时,我会得到结果(尽管它们不是那么好,对于这么小的样本来说并不奇怪)。使我困扰的是,我无法使model.docvecs.most_like([doc_id])函数正常工作。
##...Reading and formatting file. Variable 'data' is the df containing tokenized lists etc
.
.
.
def create_taggeddoc (): #Code for creating TaggedDocument-list
tagged = []
i = 0
for row in data['no_stops_nbrs']:
tag = data['artcle'].iloc[i]
tagged.append(TaggedDocument(row, tags = tag))
i += 1
return tagged
def train_data(): #Returns trained model
#...training model...
return model
model.docvecs.most_similar(artnbr) #The one that doesn't work
TaggedDocument方法似乎是正确的(尽管不合法),例如:
print(tagged[:5])
显示正确的单词表和标签。
由于某种原因,最后一行不起作用。当我输入artnbr参数作为字符串时:例如
model.docvecs.most_similar('1234')
我得到:
TypeError:“ str”和“ int”的实例之间不支持“ <”
但是当我将其输入为整数时,例如
model.docvecs.most_similar(1234)
我得到:
KeyError:“ doc'1234'不在训练集中”
我在这里不明白什么?
很抱歉,如果缺少该信息,我会在需要时提供更多信息。谢谢!