我是 NLP(自然语言处理)的新手。作为一个启动项目,我正在开发一个释义识别器(一个可以识别两个相似句子的系统)。对于那个识别器,我将在三个级别,即词法、语法、语义。在词汇级别上,有多种相似性度量,如余弦相似度、匹配系数、jaccard 系数等。对于这些度量,我使用了谢菲尔德大学开发的 simMetrics 包。这是一个用于不同相似性度量的绝妙包。它包含很多相似性度量。但是对于 levenshtein 距离和 jaro-winkler 距离度量,代码仅在*字符级别*仅。我需要句子级别的代码(即考虑单个单词作为一个单位而不是字符。而且 SimMetrics 中也没有曼哈顿距离的代码......我请求专家给我一个建议来开发所需的代码(或)为我提供上述 m 的句子级别的代码放心。

非常感谢您花时间和精力帮助我。

最佳答案

我已经在 NLP 领域工作了几年,我完全同意那些提供答案/评论的人。这真的是一个难以破解的难题!但是,让我仍然提供一些提示:

(1) 词法相似度:与其尝试将 Jaro-Winkler 距离推广到句子级别,不如开发一个字符级别或单词级别的语言模型,并计算对数似然,这可能会更有成效。让我进一步解释一下:基于语料库训练您的语言模型。然后取大量已被注释为与语料库中的句子相似/不相似的候选句子。计算每个测试句子的对数似然,并建立一个临界值来确定相似性。

(2) 句法相似性:到目前为止,只有文体相似性才能捕捉到这一点。为此,您将需要使用 PCFG 解析树(或 TAG 解析树。TAG = 树邻接语法,CFG 的概括)。

(3)语义相似度:在我的脑海里,我只能想到使用诸如Wordnet之类的资源,并识别synsets之间的相似度。但这也不简单。您的第一个问题是确定两个(或更多)句子中的哪些词是“对应词”,然后才能继续检查它们的语义。

关于nlp - 使用句子级相似度的复述识别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4633391/

10-11 02:55
查看更多