【发布时间】:2019-07-18 14:44:39
【问题描述】:
我想比较两个字符串之间的相似度,我可以用word2vec模型或gensim中的doc2vec模型计算wmd距离。但我不明白 wmd 如何为 doc2vec 模型工作。
def preprocess(doc):
return doc.lower().split()
s1 = 'i would like five rooms'
s2 = 'i would like four rooms'
s1 = preprocess(s1)
s2 = preprocess(s2)
model1 = gensim.models.KeyedVectors.load_word2vec_format(word2vec_model, binary = False)
d1 = model1.wmdistance(s1, s2)
print('wmd distance using a word2vec model:', d1)
model2 = gensim.models.Doc2Vec.load(doc2vec_model)
d2 = model2.wmdistance(s1, s2)
print('wmd distance using a doc2vec model:', d2)
# wmd distance using a word2vec model: 0.502799493163681
# wmd distance using a doc2vec model: 0.008121068463511764
wmd 是否仍然像使用 word2vec 模型一样从 doc2vec 模型中获取每个词的词嵌入? word2vec 模型或 doc2vec 模型计算 wmd 距离没有区别吗?在下面的例子中,这两个模型计算的 wmd 距离有很大的不同,这是为什么呢?我了解 wmd 通常如何用于两个句子,但我无法弄清楚它如何用于 doc2vec 模型。如果有人能帮助我理解它,我将不胜感激。
【问题讨论】:
标签: gensim