给IKAnalyzer分词添加自定义扩展词库,ikanalyzer分词,IKAnalyzer是一
分享于 点击 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的分词结果。
用户点评