superword开源项目中的定义相似规则
superword开源项目中的定义相似规则
杨尚川 发表于2年前
superword开源项目中的定义相似规则
  • 发表于 2年前
  • 阅读 1315
  • 收藏 42
  • 点赞 1
  • 评论 1

【腾讯云】如何购买服务器最划算?>>>   

摘要: 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、使用有道词典的定义

在线使用地址





共有 人打赏支持
杨尚川
粉丝 1048
博文 210
码字总数 1618030
作品 10
评论 (1)
zhonghai
79膜拜
×
杨尚川
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: