gensim.models.FatText.wv.wmdistance 两个文档之间如何计算?
How does gensim.models.FatText.wv.wmdistance calculate between two documents?
我已经有了使用 gensim 的 fastText 训练模型,并且
我可以得到两个句子之间的距离,如下所述,
sentence_1 = "Today is very cold."
sentence_2 = "I'd like something to drink."
print(model.wv.wmdistance(sentence_1.split(" "), sentence_2.split(" ")))
# 0.8446287678977793 # for example
但是vmdistance
如何计算这个值?
我想知道公式。
wmdistance()
函数计算两组词之间的"Word Mover's Distance"。
您可以查看创造 "Word Mover's Distance"(大规模杀伤性武器)措施的学术论文,该论文通过将运筹学中称为 "Earth Mover's Distance" 的旧思想应用于文本,网址为:
From Word Embeddings To Document Distances,马特·库斯纳 (Matt Kusner) 等人
您可以在以下位置查看 gensim 的 wmdistance()
函数使用的确切代码:
WMD 计算起来相当耗时,因为它涉及搜索 "piles of meaning" 中的许多可能 "shifts" 以获得最小支出方法。随着文本变长,它变得特别耗时。 (短句比完整的段落或文档更实用。)
通常将文本汇总为单个向量——通过对它们的词向量进行平均,或者像 Doc2Vec
这样的浅文本到向量算法,或者深度学习模型(BERT, ELMo 等)。然后可以通过简单的余弦相似性更快地比较这些单个向量。 (这就是 gensim 向量模型的普通 similarity()
或 distance()
方法所做的。)
我已经有了使用 gensim 的 fastText 训练模型,并且
我可以得到两个句子之间的距离,如下所述,
sentence_1 = "Today is very cold."
sentence_2 = "I'd like something to drink."
print(model.wv.wmdistance(sentence_1.split(" "), sentence_2.split(" ")))
# 0.8446287678977793 # for example
但是vmdistance
如何计算这个值?
我想知道公式。
wmdistance()
函数计算两组词之间的"Word Mover's Distance"。
您可以查看创造 "Word Mover's Distance"(大规模杀伤性武器)措施的学术论文,该论文通过将运筹学中称为 "Earth Mover's Distance" 的旧思想应用于文本,网址为:
From Word Embeddings To Document Distances,马特·库斯纳 (Matt Kusner) 等人
您可以在以下位置查看 gensim 的 wmdistance()
函数使用的确切代码:
WMD 计算起来相当耗时,因为它涉及搜索 "piles of meaning" 中的许多可能 "shifts" 以获得最小支出方法。随着文本变长,它变得特别耗时。 (短句比完整的段落或文档更实用。)
通常将文本汇总为单个向量——通过对它们的词向量进行平均,或者像 Doc2Vec
这样的浅文本到向量算法,或者深度学习模型(BERT, ELMo 等)。然后可以通过简单的余弦相似性更快地比较这些单个向量。 (这就是 gensim 向量模型的普通 similarity()
或 distance()
方法所做的。)