在使用doc2vec
进行培训时,我收到了此错误:
AttributeError: 'list' object has no attribute 'words' in python gensim module
这是我的代码:
# Extracting titles from csv to list
with open(query+'_titles.csv', 'rb') as f:
reader = csv.reader(f)
titlelist = list(reader)
# build
model = doc2vec.Doc2Vec(size=30, window=1, alpha=0.01, min_count=2, sample=1e-5, workers=100)
model.build_vocab(titlelist)
titlearray = np.asarray(titlelist)
print 'Training Model...'
我使用python 2.7.11 ,如果有帮助,gensim版本是 3.2.0 。必须有一些我真正缺少的东西。
答案 0 :(得分:1)
Doc2Vec
不仅需要句子列表,还需要标记的句子列表。来自this discussion on DS.SE:
在
word2vec
中,没有必要标记单词,因为每个单词 在词汇表中有自己的语义。但是如果是的话doc2vec
,需要指定多少个单词或 句子传达语义,因此算法可以 将其识别为单个实体。出于这个原因,我们正在指定 句子或段落的标签或标签取决于级别 传达了语义。
因此,Gensim期待以下输入:
sentences = [doc2vec.TaggedDocument(sentence, 'tag') for sentence in titlelist]
model.build_vocab(sentences)
显然,您可能希望根据句子设置不同的标签以获得有意义的向量。那么,您确定要以二进制模式读取CSV吗?