使用句子级相似度的释义识别
Posted
技术标签:
【中文标题】使用句子级相似度的释义识别【英文标题】:Paraphrase recognition using sentence level similarity 【发布时间】:2011-06-05 17:25:02 【问题描述】:我是 NLP(自然语言处理)的新成员。作为一个启动项目,我正在开发一个释义识别器(一个可以识别两个相似句子的系统)。对于那个识别器,我将应用各种在三个级别进行度量,即词汇,语法,语义。在词汇级别,有多种相似性度量,例如余弦相似度,匹配系数,jaccard 系数...等。对于这些度量,我使用的是大学开发的 simMetrics 包sheffield..它是用于不同相似性度量的绝妙包。它包含许多相似性度量。但是对于 levenshtein 距离和 jaro-winkler 距离度量,代码仅在 *字符级别*。我需要代码在句子级别(即考虑单个单词而不是字符)。SimMetrics 中也没有曼哈顿距离的代码......我请求专家给我一个建议来开发所需的代码(或)给我提供代码在上面的句子级别提到的措施。
非常感谢您花时间和精力帮助我。
【问题讨论】:
这是一个不平凡的问题。我怀疑你会在这个领域找到很多专业知识或现有技术。 如果你是 NLP 的新手,我真的认为你应该尝试一个更小、更有界的项目 请注意,“JNLP”与“NLP”无关。删除标签。 【参考方案1】:我已经在 NLP 领域工作了几年,我完全同意那些提供答案/cmets 的人。这真的是一个难以破解的难题!但是,让我仍然提供一些指示:
(1) 词汇相似性:与其尝试将 Jaro-Winkler 距离推广到句子级别,不如开发一个字符级别或单词级别的语言模型,并计算对数似然,这可能会更有成效。让我进一步解释一下:基于语料库训练你的语言模型。然后取一大堆被注释为与语料库中的句子相似/不相似的候选句子。计算每个测试句子的对数似然,并建立一个截止值来确定相似度。
(2) 句法相似性:到目前为止,只有文体相似性才能捕捉到这一点。为此,您将需要使用 PCFG 解析树(或 TAG 解析树。TAG = 树邻接语法,CFG 的泛化)。
(3) 语义相似度:突然想到,我只能想到使用 Wordnet 等资源,并识别同义词集之间的相似度。但这也不简单。您的第一个问题是确定两个(或更多)句子中的哪些词是“对应词”,然后才能继续检查它们的语义。
【讨论】:
【参考方案2】:正如 Chris 所建议的,对于初学者来说,这是一个不平凡的项目。我建议你从更简单的(如果相对无聊的话)开始,比如分块。
查看 Python NLTK 库的文档和书籍 - 有一些示例与您正在寻找的内容相近。例如,遏制:一个陈述包含另一个陈述是否合理。请注意那里的“似是而非”,对于简单的是/否甚至概率来说,最先进的技术还不够好。
【讨论】:
以上是关于使用句子级相似度的释义识别的主要内容,如果未能解决你的问题,请参考以下文章