无法将文档向量直接转换回原始文本(有关单词顺序等的信息在文本缩减过程中丢失-->向量)。
然而,你
创建文档时,通过在语料库列表中为每个文档添加索引来检索原始文本
TaggedDocument
代表
Doc2Vec()
texts
. 使用
enumerate()
这样可以生成唯一的索引
i
对于每个句子,并将其作为
tags
论据
标记文件
tagged_data = []
for i, t in enumerate(texts):
tagged_data.append(TaggedDocument(words=word_tokenize(c.lower()), tags=[str(i)]))
model = Doc2Vec(vector_size=VEC_SIZE,
window=WINDOW_SIZE,
min_count=MIN_COUNT,
workers=NUM_WORKERS)
model.build_vocab(tagged_data)
然后在训练之后,当你从
model.docvecs.most_similar()
,每个元组中的第一个数字将是原始语料库文本列表的索引。例如,如果你跑步
model.docvecs.most_similar([some_vector])
并获得:
[('624319', 0.7534812092781067), ('566511', 0.7333904504776001), ('517382', 0.7264763116836548), ('523368', 0.7254455089569092), ('494248', 0.7212602496147156), ('382920', 0.7092794179916382), ('530910', 0.7086726427078247), ('513421', 0.6893941760063171), ('196931', 0.6776881814002991), ('196947', 0.6705600023269653)]
('624319', 0.7534812092781067)
texts[624319]
.
或者,如果您想循环浏览并获取所有最相似的文本,您可以执行以下操作:
most_similar_docs = []
for d in model.docvecs.most_similar([some_vector]):
most_similar_docs.append(texts[d[0]])