我不想查找两个字符串之间的相似性,而是想查找这两个字符串含义的相似性,例如:
- 超线程的类型有哪些
- 超线程是否有任何分类
应该具有相似性。到目前为止,我尝试了余弦相似度和词移动距离,但对于某些字符串,我没有得到准确的结果
回答:
这确实是一件很难做到的事情。也很难确定你所说的两个短语之间的“准确”语义相似度是什么意思。你需要找到一个“好”的度量方法来做到这一点
无论如何,如果你有一个有限的上下文(你不需要做一个通用的语义相似度计算器),一个非常基本的方法可以是构建一个文本分类器(使用机器学习),在其中你定义你想要使用的主要类别。
例如,对于你的示例短语,你可以有两个文本类别:
-
询问关于超线程的问题
-
询问关于食物的信息
然后,你用大量的短语训练你的模型,你的模型会为你的示例短语输出概率,如下所示:
-
“超线程的类型有哪些”:
-
询问关于超线程的问题 0.9
-
询问关于食物的信息 0.5
-
-
“超线程是否有任何分类”
-
询问关于超线程的问题 0.8
-
询问关于食物的信息 0.4
-
两个短语都被分类为“询问关于超线程的问题”(因为它们在这些类别中得分较高),然后可以假设它们是相似的。也可以使用概率分数来做一些更复杂的事情(使用分数差异等)