`

superword开源项目中的定义相似规则

阅读更多

两个词之间的关系有同义、反义、近义(有多近?)、相关(有多相关?)等等。我们如何来判断两个词之间的关系呢?利用计算机能自动找出这种关系吗?当然可以,不仅能找出来,而且还能量化出有多近和有多相关。

本文描述了superword开源项目中的定义相似规则,利用词的定义计算词和词之间的相似性。词的定义使用的是韦氏词典,同时也支持牛津词典。相似性算法使用的是word分词提供的10大相似性算法。

定义相似规则主要包括以下6步:

1、获取要计算的词的定义:

String wordDefinition = MySQLUtils.getWordDefinition(word, WordLinker.Dictionary.WEBSTER.name());

 

2、获取分级词汇,分级词汇的具体定义见这里

Set<Word> words = (Set<Word>)application.getAttribute("words_"+request.getAttribute("words_type"));

 

3、获取分级词汇的定义,代码见这里

List<String> allWordDefinition = MySQLUtils.getAllWordDefinition(WordLinker.Dictionary.WEBSTER.name(), words);

 

4、从word分词提供的10大相似性算法中任选一个,同时指定使用word分词提供的针对纯英文的分词器:

TextSimilarity textSimilarity = new CosineTextSimilarity();
textSimilarity.setSegmentationAlgorithm(SegmentationAlgorithm.PureEnglish);

 

5、计算相似性,返回最相似的100个单词:

int count = 100;
Hits result = textSimilarity.rank(wordDefinition, allWordDefinition, count);

 

6、输出计算结果:

StringBuilder temp = new StringBuilder();
int i=1;
temp.append("<table border=\"1\">\n");
for(Hit hit : result.getHits()){
    String[] attrs = hit.getText().split("_");
    String w = attrs[0];
    StringBuilder definition = new StringBuilder(attrs[1]);
    for(int j=2; j<attrs.length; j++){
        definition.append(attrs[j]).append("_");
    }
    temp.append("<tr>");
    temp.append("<td> ").append(i++)
            .append(". </td><td> ")
            .append(WordLinker.toLink(w))
            .append(" </td><td> ")
            .append(definition)
            .append(" </td><td> ")
            .append(hit.getScore())
            .append("</td><td> ")
            .append("<a target=\"_blank\" href=\"definition-similar-rule.jsp?word=" + hit.getText() + "&count=" + count + "&words_type=" + request.getAttribute("words_type") + "\">相似</a>")
            .append(" </td>\n");
    temp.append("</tr>\n");
}
temp.append("</table>\n");
htmlFragment = temp.toString();

 

计算效果如下图所示:

1、使用韦氏词典的定义

2、使用爱词霸的定义

3、使用有道词典的定义

在线使用地址

 

 

 

 

 

2
4
分享到:
评论

相关推荐

    JAVA之hashmap源码分析-superword:Superword是一个Java开源项目,致力于英语单词分析和辅助阅读的研究

    JAVA之hashmap源码分析Superword是Java开源项目,致力于研究英语单词分析和辅助阅读,包括但不限于拼写相似度,定义相似度,发音相似度,拼写转换规则,前缀和动态前缀,后缀以及动态后缀,词根,复合词,文本辅助...

    Java最著名的开源项目

    在Java的生态系统中,存在诸多著名的开源项目,这些项目各有特色,为Java开发人员提供了丰富的开发工具和应用架构。以下是对一些Java著名开源项目的详细介绍,它们分别在不同的开发领域中扮演着重要角色。 首先,...

    开源项目-smallnest-gofsm.zip

    项目提供了接口供用户自定义这些元素,允许在状态机中灵活地定义状态间的转换规则。 3. **状态机接口**:gofsm库提供了一个基本的`FSM`接口,包含初始化、切换状态、注册事件处理函数等方法。这使得开发者能够轻松...

    商用、开源规则引擎资料汇总

    2. **可重用性**:除了可配置性之外,规则引擎还应支持规则的复用,避免重复编写相似的规则逻辑。 3. **高性能**:高效的规则引擎能够在短时间内处理大量的数据和规则,确保系统的响应速度。 4. **易于集成**:...

    5个好玩的github游戏区开源项目

    在 IT 领域,开源项目一直扮演着重要的角色,它们不仅推动了技术的发展,也为开发者提供了学习和实践的平台。对于游戏爱好者来说,GitHub 上有许多有趣的开源游戏项目,能够让我们深入了解游戏开发的过程,甚至参与...

    视频通话 sipandroid 开源项目源码

    原来的网上的开源项目很多都跑不起来,这个项目,经本人修改,经测试在android4.0系统上运行已经没问题,研究了下,发现对需要做视频通话的人来讲还是有很大帮助,特此贡献出来,供大家研究学习,压缩文件是在linux...

    pc远控android开源项目

    PC远程登录手机 登录之后,必然涉及到按键的模拟等操作。 三个开源的软件一个是SmartDog Studio的Remote Control Add-on 另一个是Webkey 最后一个是Android自带monkey

    GitHub开源项目SlidingMenu类库

    GitHub开源项目SlidingMenu的类库,导入之后可以直接使用 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9255829

    NLP开源项目链接汇总

    NLP开源项目链接汇总,中英文的都有,包括分词,词性标注,注重算法介绍

    开源项目-weberc2-tdl.zip

    社区的贡献和支持是开源项目持续发展的重要驱动力,用户可以通过参与讨论、报告问题、提交修复或添加新功能来参与到项目中。 TDL的适用场景广泛,它可以用于API接口定义、数据库模式映射、协议解析等。通过TDL,...

    FaceBook开源项目文档

    硬件文档--FaceBook开源项目文档

    开源项目是指其源代码可以被公众自由查看、修改和使用的软件项目.docx

    定义:开源项目是指那些源代码公开,允许用户自由查看、修改、分发和使用的软件项目。 特点: 开放性:源代码对公众开放,任何人都可以查看和修改。 协作性:鼓励社区成员共同参与开发,促进技术创新和进步。 可定制...

    A-2017-Google 开源项目风格指南

    每个源文件通常只有一个头文件,头文件中定义了函数声明和变量声明。源文件中包含实现代码。 注释风格 注释风格是指在代码中添加注释的方式。在 Google 的开源项目中,注释风格是非常重要的。注释应该简洁、明了,...

    开源项目-Juici-cli.zip

    开源项目通常意味着代码是公开的,允许社区成员审查、使用、改进和贡献代码,促进了软件开发的协作与创新。 在命令行界面(CLI)中,用户通过在终端输入命令和参数来与程序交互。例如,`git clone &lt;repo_url&gt;` 就是...

    开源项目-cznic-bc.zip

    3. **Makefile**:定义了编译和链接bc的规则,用户可以通过运行"make"命令来编译整个项目。 4. **测试用例**:通常在"test"或"tests"目录下,用于验证bc的正确性和性能,开发者可以使用这些测试来确保改动没有引入...

    c语言开源项目.zip

    开源C语言项目可以是教学示例,也可以是实际应用中的成熟项目,对于学习C语言的人来说,它们是宝贵的参考资料。 【标签】:虽然没有提供具体的标签,我们可以推测这个压缩包可能涉及到的关键词,如“C语言编程”、...

    TR069(CWMP)开源项目

    1. mini-cwmp-master:这个子项目基于gsoap库,gsoap是一个开源的SOAP(Simple Object Access Protocol)和XML(eXtensible Markup Language)工具包,用于在C和C++中生成跨平台的网络服务客户端和服务器。...

    近百个Android优秀开源项目总结

    安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域

    微软开源ASP.NET MVC项目

    在“微软开源ASP.NET MVC项目”中,我们可以推测这可能是一个示例或模板项目,用于展示如何使用ASP.NET MVC框架来开发Web应用。这个项目可能是微软为了促进开发者对ASP.NET MVC的理解和使用而提供的资源。"Oxite...

Global site tag (gtag.js) - Google Analytics