在ubuntu上运行gensim Doc2Vec
Doc2Vec拒绝我的输入并出现错误
AttributeError:“列表”对象没有属性“单词”
import gensim from gensim.models
import doc2vec as dtv
from nltk.corpus import brown
documents = brown.tagged_sents()
d2vmodel = > dtv.Doc2Vec(documents, size=100, window=1, min_count=1, workers=1)
我已经尝试过 this SO question以及许多具有相同结果的变体
documents = [brown.tagged_sents()} 添加哈希函数
如果语料库是.txt文件,我可以利用
documents=TaggedLineDocument(documents)
但这通常是不可能的
答案 0 :(得分:1)
Gensim的Doc2Vec
要求每个文档都必须是具有words
属性(它是字符串标记的列表)和tags
属性(是标签的列表)的对象的形式。这些标签通常是字符串,但是拥有大型数据集的专业用户可以使用从0开始的plain-ints节省一些内存。
包含了TaggedDocument
类,该类具有正确的“形状”,并在大多数Gensim文档/教程示例中使用-但考虑到Python的“鸭子类型”,任何带有words
和tags
个属性即可。
但是没有一个简单的清单。
如果我理解正确,brown.tagged_sents()
将返回(单词,词性标记)元组的列表,这甚至不是那种可以用作words
,并且不提供Doc2Vec
所需的任何完整文档标签作为要训练的文档向量的键。
另外:您不太可能想要使用min_count=1
。丢弃非常低频率的单词通常会使保留的Word2Vec
/ Doc2Vec
向量更好。