如何解决Top2Vec 错误 - 'KeyedVectors' 对象没有属性 'vectors_docs'
在 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'
我安装了以下软件包:
我正在使用以下代码开始训练:
model = Top2Vec(documents=data,workers=12)
它通过模型训练做到了这一点:
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
有什么想法吗?
解决方法
我不熟悉您使用的 Top2Vec
类。
但是,如果为使用 gensim-3.8.3
中的某些属性/方法而编写的代码尚未针对最近发布的 gensim-4.0.0
(已删除并重命名某些函数)进行了调整,则会出现该错误为了一致性。
具体来说,vectors_docs
属性已被删除。 (此外,vectors_docs_norms
属性在未执行的分支中提到了上面几行。)
调用代码中所需的小改动包含在 Migrating from Gensim 3.x to 4 wiki page 中,我刚刚对其进行了更新以确保它特别提到了 vectors_docs
。
如果您不喜欢自己应用此代码以及对 Top2Vec
代码进行任何其他更改,您可能只想向其作者/维护者报告问题,作为临时解决方法,请明确安装较旧的暂时的 Gensim。使用通常的基于 pip
的安装,您可以使用以下命令指定旧版本:
pip install gensim==3.8.3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。