文档章节

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

杨尚川
 杨尚川
发布于 2015/12/07 18:44
字数 481
阅读 1330
收藏 42
点赞 1
评论 1

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

本文描述了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、使用有道词典的定义

在线使用地址





© 著作权归作者所有

共有 人打赏支持
杨尚川

杨尚川

粉丝 1074
博文 212
码字总数 1620047
作品 11
东城
架构师
加载中

评论(1)

zhonghai
zhonghai
79膜拜
superword v1.0 发布,基于 Java8 的英语词汇分析和辅助阅读开源项目

superword是一个Java实现的英文单词分析和辅助阅读开源项目,主要研究英语单词音近形似转化规律、前缀后缀规律、词之间的相似性规律和辅助阅读等等。 使用Java8实现,Clean code、Fluent st...

杨尚川 ⋅ 2015/12/14 ⋅ 18

Java8全新打造,英语学习supertool

superword是一个Java实现的英文单词分析软件,主要研究英语单词音近形似转化规律、前缀后缀规律、词之间的相似性规律等等。Clean code、Fluent style、Java8 feature: Lambdas, Streams and...

杨尚川 ⋅ 2015/03/29 ⋅ 0

superword中的模板抽取实践

superword这个项目,全使用JAVA8新特性: https://github.com/ysc/superword ,一开始只是我的一个英语单词分析工具,用于生成HTML片段然后发到博客中,后来功能越来越强于是我就做成一个项目...

杨尚川 ⋅ 2016/04/02 ⋅ 0

jsearch v1.0 发布,基于java8的高性能全文检索工具包

jsearch是一个高性能的全文检索工具包,基于倒排索引,基于java8,类似于lucene,但更轻量级。 jsearch起源于superword项目。在superword项目的辅助阅读模块中,需要对大量的PDF电子文本进行...

杨尚川 ⋅ 2015/11/25 ⋅ 2

GRE必备神器superword

superword是一个Java实现的英文单词分析和辅助阅读开源项目,主要研究英语单词音近形似转化规律、前缀后缀规律、词之间的相似性规律和辅助阅读等等。支持最权威的2部中文词典和9部英文词典,...

杨尚川 ⋅ 2015/11/28 ⋅ 0

利用 superword 轻松记单词学英语

superword是一个Java实现的英文单词分析软件,主要研究英语单词音近形似转化规律、前缀后缀规律、词之间的相似性规律等等。Clean code、Fluent style、Java8 feature: Lambdas, Streams and...

杨尚川 ⋅ 2015/03/27 ⋅ 0

312个免费高速HTTP代理IP(能隐藏自己真实IP地址)

124.88.67.20:843190.36.223.93:8080117.147.221.38:8123122.228.92.103:3128183.247.211.159:8123124.88.67.35:81112.18.51.167:8123218.28.96.39:312849.94.160.198:3128183.207.228.114:8......

杨尚川 ⋅ 2015/04/12 ⋅ 18

网络机器人的识别与攻防的经典案例(也即爬虫与反爬虫的经典案例)

本文我们介绍一个网络机器人的识别与攻防的经典案例(也即爬虫与反爬虫的经典案例)。使用到的代码见本人的superword项目: https://github.com/ysc/superword/blob/master/src/main/java/o...

杨尚川 ⋅ 2015/04/11 ⋅ 0

正确地猜测用户的意图

当我们在Collins词典中输入“voilent”的时候,会有如下提示: 当我们在Google中搜索“voilent”的时候,也会有如下提示: Collins和Google是如何做到的呢?它是怎么知道我们把i和o的位置弄反...

杨尚川 ⋅ 2015/06/03 ⋅ 1

自动更改IP地址反爬虫封锁,支持多线程

8年多爬虫经验的人告诉你,国内ADSL是王道,多申请些线路,分布在多个不同的电信机房,能跨省跨市更好,我这里写好的断线重拨组件,你可以直接使用。 ADSL拨号上网使用动态IP地址,每一次拨号...

杨尚川 ⋅ 2015/03/25 ⋅ 8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

一篇文章学懂Shell脚本

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用...

Jake_xun ⋅ 22分钟前 ⋅ 0

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 54分钟前 ⋅ 0

Kylin 对维度表的的要求

1.要具有数据一致性,主键值必须是唯一的;Kylin 会进行检查,如果有两行的主键值相同则会报错。 2.维度表越小越好,因为 Kylin 会将维度表加载到内存中供查询;过大的表不适合作为维度表,默...

无精疯 ⋅ 58分钟前 ⋅ 0

58到家数据库30条军规解读

军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及...

kim_o ⋅ 今天 ⋅ 0

代码注释中顺序更改 文件读写换行

`package ssh; import com.xxx.common.log.LogFactory; import com.xxx.common.log.LoggerUtil; import org.apache.commons.lang3.StringUtils; import java.io.*; public class DirErgodic ......

林伟琨 ⋅ 今天 ⋅ 0

linux实用操作命令

参考 http://blog.csdn.net/qwe6112071/article/details/50806734 ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 同-a,但不列出"."和"...

简心 ⋅ 今天 ⋅ 0

preg_match处理中文符号 url编码方法

之前想过直接用符号来替换,但失败了,或者用其他方式,但有有些复杂,这个是一个新的思路,亲测可用 <?php$str='637朗逸·超速新风王(300)(白光)'; $str=iconv("UTF-8","GBK",$s...

大灰狼wow ⋅ 今天 ⋅ 0

DevOps 资讯 | PostgreSQL 的时代到来了吗 ?

PostgreSQL是对象-关系型数据库,BSD 许可证。拼读为"post-gress-Q-L"。 作者: Tony Baer 原文: Has the time finally come for PostgreSQL?(有删节) 近30年来 PostgreSQL 无疑是您从未听...

RiboseYim ⋅ 今天 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 今天 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部