首页 > 解决方案 > 如何在python中找到两个字符串的语义相似度

问题描述

而不是找到两个字符串之间的相似性,我只想找到两个字符串含义的相似性。

  1. 超线程的类型有哪些
  2. 超线程中有没有分类

应该有相似性。直到现在我尝试了余弦相似度和词移动距离,但我没有得到一些字符串的准确结果

标签: pythonmachine-learningnlp

解决方案


这确实是一件很难做到的事情。也很难知道你的意思是两个短语之间的“准确”语义相似性。你需要找到一个“好的”指标来做到这一点

无论如何,如果你有一个有限的上下文(你不必做一个通用的语义相似性计算器),一个非常基本的方法可能是构建一个文本分类器(使用机器学习),你可以在其中定义你的主要类想用。

例如,对于您的示例短语,您可以有两个文本类:

  1. 询问超线程

  2. 询问食物

比您使用大量短语训练模型以及示例短语的模型输出概率如下:

  1. “什么是超线程的类型”

    • 询问超线程 0.9

    • 询问食物 0.5

  2. “超线程中是否有任何类别”

    • 询问超线程 0.8

    • 询问食物 0.4

这两个短语都被归类为“询问超线程”(因为它们在这些类别中得分较高),然后可以假设它们是相似的。也可以使用概率分数来做一些更复杂的事情(使用分数差异等)


推荐阅读