是否有任何算法可以衡量文本之间的概念相似度?

人工智能 神经网络 自然语言处理 算法请求
2021-10-18 00:29:43

是否有任何算法(或软件库)可用于检测文本中概念的相似性,而不考虑发音、语法、同义词等?

例如,这些短语:

外面,很暖和。

外面,很热。

外面,并不冷。

外面并不冷。

应该类似于这句话:

外面很暖和。

理想情况下,算法(或软件)将能够基于概念相似性生成从 0 到 1 的分数。目标是使用此算法或软件将大量语句映射到单个相似的原始语句。正是为了给定语句到原始语句的这种映射,才会生成上述相似度分数。

这样的算法(或软件)是否已经存在?

2个回答

Doc2Vec

我想到了 Doc2Vec,这是原始出版物该方法已被证明对于某些基于 NLP 的问题非常成功,尽管我还没有亲自将它用于项目。

Doc2Vec 有许多实现。如果您使用的是 Python,请查看gensim

Word2Vec

Word2Vec 类似于 Doc2Vec 并且可能更符合您的要求。这是原始出版物,以及另一个很好地解释它的出版物。

Tensorflow 有一个设置 Word2Vec 模型的教程。Gensim 也有一个Word2Vec 实现

在机器翻译中,有一个广泛使用的 BLEU 分数(https://en.wikipedia.org/wiki/BLEU)。它只是计算两个文本段之间的匹配 n-gram 并基于此返回 0-1 分数。

这种方法的问题在于,它会给“它很热”/“它很冷”和“它很热”/“它很温暖”对给出相同的分数。拼写或同义词没有细微差别:对于每个单词,您要么有文字匹配,要么没有。

最近对 BLEU 的改进是 BLEURT ( https://arxiv.org/abs/2004.04696 )。关键思想是还要查看两个文本段的 BERT 嵌入,现在您可以注意到“热/暖”比“热/冷”更相似,并产生更细微的分数。

这都是针对机器翻译评估的,可能适用于您的特定应用程序,也可能不适用于您的特定应用程序。