Doc2Vec输入格式

时间:2018-06-22 16:29:53

标签: gensim doc2vec

在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)

但这通常是不可能的

1 个答案:

答案 0 :(得分:1)

Gensim的Doc2Vec要求每个文档都必须是具有words属性(它是字符串标记的列表)和tags属性(是标签的列表)的对象的形式。这些标签通常是字符串,但是拥有大型数据集的专业用户可以使用从0开始的plain-ints节省一些内存。

包含了TaggedDocument类,该类具有正确的“形状”,并在大多数Gensim文档/教程示例中使用-但考虑到Python的“鸭子类型”,任何带有wordstags个属性即可。

但是没有一个简单的清单。

如果我理解正确,brown.tagged_sents()将返回(单词,词性标记)元组的列表,这甚至不是那种可以用作words,并且不提供Doc2Vec所需的任何完整文档标签作为要训练的文档向量的键。

另外:您不太可能想要使用min_count=1。丢弃非常低频率的单词通常会使保留的Word2Vec / Doc2Vec向量更好。