`

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开源项目,致力于研究英语单词分析和辅助阅读,包括但不限于拼写相似度,定义相似度,发音相似度,拼写转换规则,前缀和动态前缀,后缀以及动态后缀,词根,复合词,文本辅助...

    优秀开源项目(基于VC++和MFC)(基于VC++和MFC的一些优秀开源项目)

    基于VC++和MFC的一些优秀开源项目列表 包括7-Zip,eMule,FileZilla,MiKTeX,Nokia Composer等优秀项目,有兴趣的同行可以参考参考。

    BERT中文情感分类开源项目

    标题中的“BERT中文情感分类开源项目”指的是一个利用BERT预训练模型进行中文文本情感分析的开源项目。BERT,全称为Bidirectional Encoder Representations from Transformers,是Google在2018年提出的一种...

    Java最著名的开源项目

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

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

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

    视频通话 sipandroid 开源项目源码

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

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

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

    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,...

    开源项目“单点登陆SSO”

    SSO开源项目,基于https的,大家可以在网上搜索研究一下!

    制造开源软件-如何成功运营自由软件项目

    ### 一、开源项目的定义与价值 首先,我们需要明确开源项目的定义。开源软件是指遵循特定许可协议发布的源代码,允许用户自由查看、修改和分发这些代码。开源项目的价值不仅体现在技术层面,还体现在社区建设和创新...

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

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

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

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

    开源项目-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++中生成跨平台的网络服务客户端和服务器。...

    GitHub上最火的40个Android开源项目源码

    GitHub上最火的40个Android开源项目源码,筛选了下,主要是把可以加到我们项目中的下了下来,这里有40个项目的描述,以及12个项目的源码,省的各位童鞋重复下载了,当然如果有童鞋需要其他的项目,我这里也给出了...

Global site tag (gtag.js) - Google Analytics