python - 使用 word2vec 确定最相似的短语

标签 python doc2vec

我创建了一个 Python 脚本,用于使用 doc2vec 训练和推断测试文档向量。

我的问题是,当我尝试确定最相似的短语(例如“世界”)时,它仅向我显示最相似单词的列表。它没有显示最相似短语的列表。

我的代码中是否缺少某些内容?

#python example to infer document vectors from trained doc2vec model
import gensim.models as g
import codecs

#parameters
model="toy_data/model.bin"
test_docs="toy_data/test_docs.txt"
output_file="toy_data/test_vectors.txt"

#inference hyper-parameters
start_alpha=0.01
infer_epoch=1000

#load model
m = g.Doc2Vec.load(model)
test_docs = [ x.strip().split() for x in codecs.open(test_docs, "r", "utf-8").readlines() ]

#infer test vectors
output = open(output_file, "w")
for d in test_docs:
    output.write( " ".join([str(x) for x in m.infer_vector(d, alpha=start_alpha, steps=infer_epoch)]) + "\n" )
output.flush()
output.close()


m.most_similar('the word'.split())

我得到这个列表:

[('refutations', 0.9990279078483582),
 ('volume', 0.9989271759986877),
 ('italic', 0.9988381266593933),
 ('syllogisms', 0.998751699924469),
 ('power', 0.9987285137176514),
 ('alibamu', 0.9985184669494629),
 ("''", 0.99847412109375),
 ('roman', 0.9984466433525085),
 ('soil', 0.9984269738197327),
 ('plants', 0.9984176754951477)]

最佳答案

Doc2Vec 模型收集其文档向量,以便以后在属性 .docvecs 中查找或搜索。要获取文档向量结果,您需要对该属性执行 most_similar() 。如果您的 Doc2Vec 实例保存在变量 d2v_model 中,并且 doc_id 保存训练中的已知文档标签之一,则可能是:

d2v_model.docvecs.most_similar(doc_id)

如果您为新文档推断向量,并查找与推断向量类似的训练文档,您的代码可能如下所示:

new_dv = d2v_model.infer_vector('some new document'.split())
d2v_model.docvecs.most_similar(positive=[new_dv])

(Doc2Vec 模型类派生自非常相似的 Word2Vec 类,因此继承了默认情况下引用的 most_similar()只是内部词向量。这些词向量在某些 Doc2Vec 模式下可能有用,或者是随机的 - 但最好使用 d2v_model.wv.most_similar()d2v_model.docvecs.most_similar() 清楚。)

基本Doc2Vec示例,例如在docs/notebooks目录中使用gensim安装的笔记本 doc2vec-lee.ipynb ,包含有用的示例。

关于python - 使用 word2vec 确定最相似的短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55949196/

相关文章:

python - Gensim Doc2Vec most_similar() 方法没有按预期工作

python - Beautiful Soup 在 """和 "<"等特殊字符上崩溃

python - 在python中使用pip安装pylibmc报错

python - alpha 和 min_alpha 的 doc2vec 默认值

python - Gensim:如何使用以前的 word2vec 模型重新训练 doc2vec 模型

python - 如何提取用于 Doc2Vec 的单词

python - 如何在一个GUI中显示两个或更多视频流

python - 如何在 VIM 中设置文件的正确路径?

python - 如何将 Excel 中的一列文本分解为 django 中的 2 个模型?

python - doc2vec 如何聚类 DocvecsArray