Python:字符串的语义相似度得分

时间:2013-06-10 11:20:06

标签: python semantics wordnet similarity

是否有用于计算一对句子的语义相似度得分的库?

我知道WordNet的语义数据库,以及如何生成2个单词的分数,但我正在寻找能够完成所有预处理任务的库,如端口阻塞,停止删除单词等等。句子并输出两个句子相关程度的分数。

我发现正在进行的work使用.NET框架编写,该框架使用一系列预处理步骤来计算得分。 是否有任何项目在python中执行此操作?

我不是在寻找能够帮助我找到分数的操作顺序(正如here所要求的那样) 我喜欢自己实现每个阶段,或者粘贴来自不同库的函数,以便它适用于句子对,但我需要这个作为测试数据推断的工具。


编辑:我正在考虑使用NLTK并计算迭代在两个句子上的每对单词的分数,然后从结果的标准偏差中得出推论,但我不知道如果这是对相似性的合理估计。另外,对于长琴弦来说,这需要很多时间 同样,我正在寻找已经智能地实现这一点的项目/库。让我这样做的东西:

import amazing_semsim_package
str1='Birthday party ruined as cake explodes'
str2='Grandma mistakenly bakes cake using gunpowder'

>>similarity(str1,str2)
>>0.889

3 个答案:

答案 0 :(得分:46)

我见过的最好的套餐是Gensim,在Gensim Homepage找到。我已经多次使用它,并且总体上非常满意它的易用性;它是用Python编写的,并且很容易跟随tutorial来启动,比较9个字符串。它可以通过pip安装,所以你希望安装它不会有很多麻烦。

您使用哪种评分算法在很大程度上取决于您的问题的背景,但如果您想要一些基本的东西,我建议您开始使用LSI功能。 (这就是教程引导您完成的工作。)

如果您浏览gensim教程,它将引导您使用相似度函数比较两个字符串。这样你就可以根据它们包含的文字看到你的叮咬如何相互比较,或者与其他刺痛比较。

如果您对其工作背后的科学感兴趣,请查看this paper.

答案 1 :(得分:3)

不幸的是,我无法帮助你使用PY,但是你可以看看我使用词典来完成句子之间语义比较的旧项目(以后可以在PY中实现矢量空间分析)。从JAVA转换到PY应该只需几个小时的编码。 https://sourceforge.net/projects/semantics/

答案 2 :(得分:-3)

AFAIK最强大的Python NLP-Library是http://nltk.org/