• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

JAVA开发示例之IK分词器的初步使用

java 佚名 2年前 (2023-03-11) 112次浏览 已收录 0个评论

标签:java 示例 analyzer util IK words org import JAVA

开发步骤

添加依赖

<code>// IK中文分词相关依赖
implementation 'com.github.m<a href="https://www.gaodaima.com/tag/age" title="查看更多关于age的文章" target="_blank">age</a>se:ik-analyzer:8.5.0'

可配置需要的扩展词及停止词

<?xml version="1.0" en<a href="https://www.gaodaima.com/tag/coding" title="查看更多关于coding的文章" target="_blank">coding</a>="utf-8" ?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>IK Analyzer 扩展配置</comment>
    <!--用户可以在这里配置自己的扩展字典 -->
    <entry key="ext_dict">extwords.dic;</entry>
    <!--用户可以在这里配置自己的扩展停止词字典-->
    <entry key="ext_stopwords">stopwords.dic;</entry>
</properties>

代码示例

package com.wywtime.toolbox;

import org.junit.jupiter.api.Test;
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;
import org.wltea.analyzer.dic.Dictionary;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class WordAnalyzerTest {

    @Test
    public void testWordAnalyzer() throws IOException {
        String text = "人生如逆旅,我亦是行人";
        StringReader sr=new StringReader(text);
        IKSegmenter ik=new IKSegmenter(sr, true);
        // 如果不加下面这句,解析结果是:人|生如|逆旅|我|亦是|行人
        Dictionary.getSingleton().disableWords(Arrays.asList("生如","亦是"));
        Lexeme lex=null;
        List<String> words = new ArrayList<>();
        while((lex=ik.next())!=null){
            words.add(lex.getLexemeText());
        }
        // 输出结果为:人生|如|逆旅|我亦|是|行人
        System.out.println(words.stream().collect(Collectors.joining("|")));
    }
}

遇到的问题

解析得到的结果一直不是想要的,然后自定义了扩展词,还是不行,最后,也是深入源码,才发现Dictionary类里有个disableWords方法。这说明词与词之间是有优先级的,实际应用时,肯定需要根据不同场景去确定分词的优先级。

标签:java,示例,analyzer,util,IK,words,org,import,JAVA

来源: https://www.cnblogs.com/bsmn/p/16270248.html


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:JAVA开发示例之IK分词器的初步使用
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址