python-3.x - gensim.models.FatText.wv.wmdistance 如何计算两个文档之间的距离?
问题描述
我已经有了一个带有 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 距离”。
您可以通过将运筹学中称为“Earth Mover's Distance”的旧思想应用于文本来查看创造“Word Mover's Distance”(WMD)度量的学术论文,网址为:
从词嵌入到文档距离,作者:Matt Kusner 等人
您可以在以下位置查看 gensimwmdistance()
函数使用的确切代码:
大规模杀伤性武器的计算相当耗时,因为它涉及对“意义堆”的许多可能“转变”进行搜索,以寻求最低支出的方法。随着文本变得更长,它变得特别耗时。(短句比完整的段落或文档更实用。)
通常,文本会被总结为单个向量——通过对它们的词向量进行平均,或者通过浅层文本到向量算法(如Doc2Vec
)或深度学习模型(BERT、ELMo 等)。然后可以通过简单的余弦相似度更快地比较这些单个向量。(这就是 gensim 的向量模型的普通similarity()
或distance()
方法所做的。)
推荐阅读
- android - 在视图寻呼机布局中加载滑翔图像
- arrays - 在嵌套数组 MongoDB 中更新或插入新数据
- javascript - JavaScript Media Source API - 噼里啪啦的音频
- macos - 如何配置 Jenkins(在 macOS 上运行)以使用 Docker
- aws-lambda - AWS:用于 Lambda 的 CodeDeploy 无法读取 appspec
- gremlin - 边缘遍历后的'textContains'返回不同的结果
- python - Pandas 将字符串比率评估为浮点数
- javascript - 是否有一种简化的方法来检查数据是否呈现?
- unity3d - 为什么我会在统一中获得额外的动画?
- node.js - 当我编写 {{bookings|json}} 时,它会向我显示对象数组。但是当我只写 {{bookings}} 时,它什么也没显示