Top2Vec 错误 - 'KeyedVectors' 对象没有属性 'vectors_docs'
Top2Vec error - 'KeyedVectors' object has no attribute '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'
我安装了以下软件包:
- 将 numpy 导入为 np
- 导入 pandas 作为 pd
- 从复制导入深度复制
- 从 top2vec 导入 Top2Vec
- 导入gensim
我将使用以下代码开始训练:
model = Top2Vec(documents=data, speed="learn", 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
class。
但是,如果为使用 gensim-3.8.3
中的某些 properties/methods 而编写的代码未针对最近发布的 gensim-4.0.0
进行调整,则该错误将是预期的并重命名了一些功能以保持一致性。
具体来说,vectors_docs
属性 已被删除。 (此外,vectors_docs_norms
属性 在未执行的分支中提到了上面的几行。)
Migrating from Gensim 3.x to 4 wiki page 中涵盖了调用代码中所需的小改动,我刚刚对其进行了更新以确保它特别提到了 vectors_docs
。
如果您觉得自己对 Top2Vec
代码进行此更改和任何其他更改感到不舒服,您可能只想将问题报告给 author/maintainer,作为临时解决方法,现在明确安装旧的 Gensim。对于通常的基于 pip
的安装,您可以指定一个旧版本:
pip install gensim==3.8.3
在 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'
我安装了以下软件包:
- 将 numpy 导入为 np
- 导入 pandas 作为 pd
- 从复制导入深度复制
- 从 top2vec 导入 Top2Vec
- 导入gensim
我将使用以下代码开始训练:
model = Top2Vec(documents=data, speed="learn", 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
class。
但是,如果为使用 gensim-3.8.3
中的某些 properties/methods 而编写的代码未针对最近发布的 gensim-4.0.0
进行调整,则该错误将是预期的并重命名了一些功能以保持一致性。
具体来说,vectors_docs
属性 已被删除。 (此外,vectors_docs_norms
属性 在未执行的分支中提到了上面的几行。)
Migrating from Gensim 3.x to 4 wiki page 中涵盖了调用代码中所需的小改动,我刚刚对其进行了更新以确保它特别提到了 vectors_docs
。
如果您觉得自己对 Top2Vec
代码进行此更改和任何其他更改感到不舒服,您可能只想将问题报告给 author/maintainer,作为临时解决方法,现在明确安装旧的 Gensim。对于通常的基于 pip
的安装,您可以指定一个旧版本:
pip install gensim==3.8.3