欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

给IKAnalyzer分词添加自定义扩展词库,ikanalyzer分词,IKAnalyzer是一

来源: javaer 分享于  点击 6665 次 点评:127

给IKAnalyzer分词添加自定义扩展词库,ikanalyzer分词,IKAnalyzer是一


IKAnalyzer是一款优秀的中文分词组件,其内置了词库,内置的词库在其jar包内内嵌,所以你不会看到内置词库。 我们也可以给IKAnalyzer添加自定义词库,添加的方法说明如下:

首先需要在项目中新建一个词库配置文件,要放在资源文件的跟目录,文件名为固定的IKAnalyzer.cfg.xml,在文件中添加如下内容:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  <properties>  <comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">cn/outofmemory/my.dic;cn/outofmemory/mine.dic;</entry> <!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords">cn/outofmemory/stopword.dic</entry> </properties>

注意两个entry节点中分别配置了扩展词典,和扩展的stopwords, 多个词典之间用英文半角分号;分割。

然后是添加自定义扩展词库,需要放在对应的资源文件目录下,词库的格式是一行一个词,例如:

马云马化腾内存溢出

下面是一段测试分词的java代码:

package cn.outofmemory;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;import org.wltea.analyzer.core.IKSegmenter;import org.wltea.analyzer.core.Lexeme;public class App {    public static void main(String[] args) {        String str = "马云和马化腾是两个牛人";        IKAnalysis(str);    }    public static String IKAnalysis(String str) {        StringBuffer sb = new StringBuffer();        try {            byte[] bt = str.getBytes();            InputStream ip = new ByteArrayInputStream(bt);            Reader read = new InputStreamReader(ip);            IKSegmenter iks = new IKSegmenter(read, false);            Lexeme t;            while ((t = iks.next()) != null) {                sb.append(t.getLexemeText() + " , ");            }            sb.delete(sb.length() - 1, sb.length());        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        System.out.println(sb.toString());        return sb.toString();    }}

运行之后可以看到IKAnalyzer的分词结果。

相关栏目:

用户点评