文档章节

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

杨尚川
 杨尚川
发布于 2015/12/07 18:44
字数 481
阅读 1340
收藏 42

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

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

在线使用地址





© 著作权归作者所有

共有 人打赏支持
杨尚川

杨尚川

粉丝 1093
博文 220
码字总数 1624053
作品 12
东城
架构师
加载中

评论(1)

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

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

杨尚川
2015/12/14
1K
18
Java8全新打造,英语学习supertool

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

杨尚川
2015/03/29
0
0
superword中的模板抽取实践

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

杨尚川
2016/04/02
606
0
jsearch v1.0 发布,基于java8的高性能全文检索工具包

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

杨尚川
2015/11/25
1K
2
GRE必备神器superword

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

杨尚川
2015/11/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

请在移动端使用 先选择画笔

先选择画笔 请在移动端使用 https://lxz096.github.io/Canvas-/画板.html

壹峰
8分钟前
0
0
getSupportFragmentManager().beginTransaction().add报错cannot resolve method 'add'

getSupportFragmentManager().beginTransaction().add报错cannot resolve method 'add' 是导包的问题,所有包要保持一致,有app下的包,要保证都为app下的包 v4的包要保证都为v4的包...

lanyu96
22分钟前
0
0
linux 安装redis

Redis的安装 http://redis.io/download 官方安装例子 $ wget http://download.redis.io/releases/redis-4.0.11.tar.gz $ tar xzf redis-4.0.11.tar.gz $ cd redis-4.0.11 $ make //启动 $ sr......

苏牧影子
24分钟前
1
0
图(graph)

图(graph) 图是非线性数据结构,是一种较线性结构和树结构更为复杂的数据结构,在图结构中数据元素之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。 1、概念 1.定义 图(g...

星汉
28分钟前
1
0
好用的vue组件

http://elickzhao.github.io/2017/08/vue%E4%B8%80%E4%BA%9B%E7%89%B9%E5%88%AB%E6%9C%89%E7%94%A8%E7%9A%84%E6%8F%92%E4%BB%B6/...

Littlebox
44分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部