【问题标题】:Type error when trying to create a doc2vec model in gensim尝试在 gensim 中创建 doc2vec 模型时出现类型错误
【发布时间】:2019-11-12 10:38:53
【问题描述】:

我正在尝试使用 gensim 训练 Doc2Vec 模型。

我使用的数据集是 20 个新闻组数据集 [1],它包含在 sklearn 的数据集模块中。

我已使用 gensim 文档中的示例来创建模型。

docs = newsgroups_train['data']
enumerated_docs = enumerate(docs)
documnets= [TaggedDocument(doc.split(),i) for i, doc in enumerated_docs]
model = Doc2Vec(documnets, vector_size=20, window=2, min_count=30, workers=4)

我检查了每一行代码,似乎都在初始化模型的那一行。

我收到一个类型错误: TypeError: 'int' object is not iterable

[1]https://scikit-learn.org/0.19/datasets/twenty_newsgroups.html

【问题讨论】:

    标签: python gensim doc2vec


    【解决方案1】:

    Enumerate 返回一个整数计数器和列表中的值。因此,在您的第三行代码中,i 是一个整数。但是TaggedDocument函数的第二个参数应该是一个可迭代的。

    【讨论】:

    • 更具体地说,TaggedDocument 的第二个 tags 参数应该是一个真正的列表——因为后面的代码需要获取它的长度,并通过索引而不是按顺序访问它迭代。 (在每个文档都有一个唯一 ID 的常见情况下,它将是一个只有一项的列表。)
    猜你喜欢
    • 1970-01-01
    • 2018-03-04
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多