我在做project.i需要任何开源工具或技术来找到语句之间的语义相似度,我将输入作为两个语句并输出为分数(即语义相似度)。任何人都可以知道这些信息我希望我能很快得到答复。谢谢大家。语句之间的语义相似性
回答
萨尔玛,恐怕这不是你的问题的正确论坛,因为它与编程没有直接关系。我建议您在corpora list上再次提出您的问题。你也可能想先搜索他们的档案。
除此之外,你的问题还不够精确,我会解释我的意思。我假设你的项目是关于计算语句之间的语义相似度,而不是关于其他语义相似度只是其中的一个。如果是这样的话,那么有几件事情需要考虑:首先,从计算语言学和理论语言学的角度来看,“语义相似性”这个术语究竟意味着什么。它有许多不同的观点和定义,全部取决于要解决的问题的类型,手头的工具和技术以及接近此任务的人的背景等。考虑以下示例:
- 皮特和罗布在车站附近找到一只狗。
- 皮特和罗布从来没有在车站附近发现一只狗。
- 皮特和罗伯都喜欢编程很多。
- 帕特里夏在车站附近发现一只狗。
- 这是一只在雪地上发现皮特和罗布的狗。
哪个句子2-4与1相似? 2与1完全相反,仍然是关于皮特和罗布(不)找到一条狗。 3是关于皮特和罗布,但在完全不同的情况下。 4是关于在车站附近找到一只狗,虽然发现者是别人。 5是关于皮特,罗布,一只狗,还有一个'发现'事件,但采用与1不同的方式。就我而言,即使不必编写计算机程序,我也无法根据它们的相似性对这些示例进行排序。
为了计算语义相似性,您需要先决定要将什么视为'语义相似',哪些不是。为了计算句子级别上的语义相似度,理想情况下,你会比较句子的某种意义表示。含义表示通常以逻辑公式形式出现,并且非常复杂。但是,有些工具试图做到这一点,例如Boxer
作为一种过于简单但常常实用的方法,您将语义相似性定义为一个句子和另一个句子中词语之间相似度的总和。这使得问题变得更加容易,但仍然有一些难以解决的问题需要解决,因为单词的语义相似性与句子的语义相似性一样严重。如果你想得到这个印象,请看看D.A.的书“词汇语义学”。 Cruse(1986)。然而,有相当多的工具和技术来计算单词之间的语义相似度。他们中的一些人基本上将其定义为类似于Word Net或维基百科分类的两个词的负距离(参见this paper,其描述了用于此的API)。其他人通过使用在大型文本语料库上计算的一些统计度量来计算语义相似度。他们基于类似的词语出现在相似的背景下的见解。计算句子或之间的语义相似度的第三种方法涉及从信息检索中可能知道的向量空间模型。要了解后面的这些技术,请看第8章。5在书统计自然语言处理的基础曼宁和Schütze。
希望这能让你暂时摆脱困境。
这非常有趣,谢谢回答! – sp00m 2017-06-08 12:50:17
我照着类别开发了一个简单的开源工具,做语义比较: https://sourceforge.net/projects/semantics/files/
它适用于任何长度的句子,简单,稳定,速度快,体积小... 下面是一个示例输出:
句子之间的相似性
-Pete和Rob在车站附近找到了一条狗。
-Pete and Rob从未在车站附近发现过一只狗。
是:句子
-Patricia之间1.0000000000
相似发现车站附近的狗。
- 这是一只狗在雪地下发现了皮特和罗布。
是:句子
-Patricia之间0.405107239
相似发现车站附近的狗。
- 我很好,谢谢!
是:0.0
句子
你好之间有相似性,你怎么样?
- 我很好,谢谢!
是:0.29160592175990213
USAGE:
import semantics.Compare;
public class USAGE {
public static void main(String[] args) {
String a = "This is a first sentence.";
String b = "This is a second one.";
Compare c = new Compare(a,b);
System.out.println("Similarity between the sentences\n-"+a+"\n-"+b+"\n is: " + c.getResult());
}
}
不错的lib :)你是如何生成字典/单词列表的?我需要一个德国人。 – schokocappucino 2013-08-05 10:03:25
使用DISCO实用程序并从字典中为每个单词找到最接近的单词。 DISCO确实支持德语,所以你可以这样做。 – 2014-01-09 16:14:13
- 1. 两个“词”之间的语义相似性/相关性的Java API
- 2. 查找不同词语之间的语义相似性和关系
- 3. 如何计算两个句子之间的相似度(句法和语义)
- 4. 计算两个句子之间的语法相似度
- 5. 与COLT的2个语义向量之间的相似度量
- 6. 相似和语义搜索
- 7. 两个非常相似的选择语句不同的性能
- 8. .NET语言之间有什么区别和相似之处?
- 9. 简单语句和复杂语句之间的区别 - Javascript
- 10. 语义相似的结果解释
- 11. catch语句之前的返回语句
- 12. 使用WordNet来确定两个文本之间的语义相似度?
- 13. 在cakephp中的语句之间的mysql
- 14. IF语句的值之间的数字
- 15. 颜色之间的相似性
- 16. 跨多种语言的语义相似度
- 17. 'wait'和'@'语句之间的区别
- 18. 语句和函数之间的区别
- 19. 2 select语句之间的tsql UNION
- 20. 英语和JAX-B之间的语义/语法冲突
- 21. 语义语句和yacc
- 22. SP的exec与运行语句之间的性能差异
- 23. NLP:找到单词之间的语义相似性的任何简单而好的方法?
- 24. 枚举和定义语句之间的区别
- 25. SQL类似语句问题
- 26. 用(或类似)语句
- 27. 查找句子与句子列表之间的相似度
- 28. 是否有语义相似性方法在语义准确性方面优于word2vec方法?
- 29. 程序中if语句检查期间的语义错误
- 30. 两个词之间的语义距离
一种幼稚方法可以是第一至[从输入提取关键词(https://stackoverflow.com/q/17447045/1225328),然后比较获得的关键字。 – sp00m 2017-06-08 12:54:13
结帐https://markroxor.github.io/gensim/static/notebooks/WMD_tutorial.html – 2017-12-10 09:50:45