加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 02:10:53 所属栏目:大数据 来源:网络整理
导读:两个词之间的关系有同义、反义、近义(有多近?)、相关(有多相关?)等等。 我们如何来判断两个词之间的关系呢?利用计算机能自动找出这种关系吗?当然可以,不仅能找出来,而且还能量化 出 有多近和有多相关。 本文描述了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、使用有道词典的定义

在线使用地址

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读