Top2Vec 错误 - 'KeyedVectors' 对象没有属性 'vectors_docs'

1 python topic-modeling doc2vec

在 Python 3.9.2 中训练 Top2Vec 模型时,出现以下错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-17-edc5d3cec713> in <module>
----> 1 model = Top2Vec(documents=data, speed="learn", workers=12)

~/opt/anaconda3/envs/py39/lib/python3.9/site-packages/top2vec/Top2Vec.py in __init__(self, documents, min_count, embedding_model, embedding_model_path, speed, use_corpus_file, document_ids, keep_documents, workers, tokenizer, use_embedding_model_tokenizer, umap_args, hdbscan_args, verbose)
    353                          'metric': 'cosine'}
    354 
--> 355         umap_model = umap.UMAP(**umap_args).fit(self._get_document_vectors(norm=False))
    356 
    357         # find dense areas of document vectors

~/opt/anaconda3/envs/py39/lib/python3.9/site-packages/top2vec/Top2Vec.py in _get_document_vectors(self, norm)
    545                 return self.model.docvecs.vectors_docs_norm
    546             else:
--> 547                 return self.model.docvecs.vectors_docs
    548         else:
    549             return self.document_vectors

AttributeError: 'KeyedVectors' object has no attribute 'vectors_docs'
Run Code Online (Sandbox Code Playgroud)

我安装了以下软件包:

  • 将 numpy 导入为 np
  • 将 pandas 导入为 pd
  • 从复制导入深复制
  • 从 top2vec 导入 Top2Vec
  • 导入gensim

我使用下面的代码开始训练:

model = Top2Vec(documents=data, speed="learn", workers=12)
Run Code Online (Sandbox Code Playgroud)

通过模型训练,它已经走到了这一步:

2021-03-31 16:36:03,014 - top2vec - INFO - Pre-processing documents for training
2021-03-31 16:36:25,865 - top2vec - INFO - Creating joint document/word embedding
2021-03-31 17:02:53,874 - top2vec - INFO - Creating lower dimension embedding of documents
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

goj*_*omo 6

我不熟悉Top2Vec你正在使用的课程。

但是,如果为使用某些属性/方法而编写的代码gensim-3.8.3尚未针对最近发布的 进行调整gensim-4.0.0,则可能会出现该错误,最近发布的 已删除并重命名了一些函数以保持一致性。

具体来说,该vectors_docs属性已被删除。(此外,该vectors_docs_norms属性在未执行的分支中提到了上面的几行。)

从 Gensim 3.x 迁移到 4 wiki 页面中介绍了调用代码所需的小更改,我刚刚更新了该页面以确保其vectors_docs具体提及。

如果您自己对代码进行此更改和任何其他更改感到不舒服Top2Vec,您可能只想将问题报告给其作者/维护者,并且作为临时解决方法,现在显式安装旧版 Gensim。使用通常的pip基于安装,您可以使用以下命令指定旧版本:

pip install gensim==3.8.3
Run Code Online (Sandbox Code Playgroud)