tensorflow - 两个文档列表之间的相似性
问题描述
我需要在 Python 中找到两个短文本列表之间的相似性。文本可以是 1-4 个字长。每个列表的长度可以是 10K。我没有找到如何在 spaCy 中有效地做到这一点。也许其他软件包可以做到这一点?我假设这些词由一个向量 (300d) 表示,但任何其他选项也可以。这个任务可以循环完成,但肯定有更有效的方法。这个任务适合 TensorFlow、pyTorch 和类似的包,但我不熟悉这些包的细节。
解决方案
我认为您的问题模棱两可-您可能的意思是为列表 1 的平均值与列表 2 的平均值的相似性生成一个相似性分数。我假设您想要两者中的每个项目组合的相似性分数列表。对于每个列表的 10K 项,这将产生 10K pow 2 = 100M 相似度分数。
import spacy
spacyModel = spacy.load('en')
list1 = ["hello, example 1", "right, second example"]
list2 = ["hello, example 1 in the second list", "And now for something completely different"]
list1SpacyDocs = [spacyModel(x) for x in list1]
list2SpacyDocs = [spacyModel(x) for x in list2]
similarityMatrix = [[x.similarity(y) for x in list1SpacyDocs] for y in list2SpacyDocs]
print(similarityMatrix)
[[0.8537950408055295, 0.8852732956832498], [0.5802435148988874, 0.7643245611465626]]
推荐阅读
- python - 如何将透明的png蒙版与另一张图片匹配?
- html - Can't change cursor to jpg file
- laravel - 当我在 foreach 外部声明变量时,为什么在 foreach 内部没有读取我的变量?
- material-ui - 与内联样式或 css 类相比,使用 makeStyles 有什么优势?
- html - 输入元素文本预测
- javascript - Image-Plugin 的大错误
- java - Spring mock mvc 测试返回 404 @withmockuser
- javascript - 如何打开和关闭反应引导模式?
- javascript - RangeSlider 使用 HTML、CSS 和 JS 的组合在 Squarespace 中不起作用
- typescript - 通过 discord.js 流式传输 youtube 直播