1. 程式人生 > >中文分詞之Java實現使用IK Analyzer實現

中文分詞之Java實現使用IK Analyzer實現

需要在專案中引入:

IKAnalyzer.cfg.xml

IKAnalyzer2012.jar

lucene-core-3.6.0.jar

stopword.dic

什麼都不用改

示例程式碼如下(使用IK Analyzer): 

package com.haha.test;

import java.io.IOException;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.wltea.analyzer.lucene.IKAnalyzer;

public class Test2 {
	public static void main(String[] args) throws IOException {
		String text="基於java語言開發的輕量級的中文分詞工具包";
		//建立分詞物件
		Analyzer anal=new IKAnalyzer(true);		
		StringReader reader=new StringReader(text);
		//分詞
		TokenStream ts=anal.tokenStream("", reader);
		CharTermAttribute term=ts.getAttribute(CharTermAttribute.class);
		//遍歷分詞資料
		while(ts.incrementToken()){
			System.out.print(term.toString()+"|");
		}
		reader.close();
		System.out.println();
	}

}


執行後結果:

基於|java|語言|開發|的|輕量級|的|中文|分詞|工具包|

使用(lucene)實現:

package com.haha.test;

import java.io.IOException;
import java.io.StringReader;

import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;

public class Test3 {
	
	public static void main(String[] args) throws IOException {
		String text="基於java語言開發的輕量級的中文分詞工具包";
		StringReader sr=new StringReader(text);
		IKSegmenter ik=new IKSegmenter(sr, true);
		Lexeme lex=null;
		while((lex=ik.next())!=null){
			System.out.print(lex.getLexemeText()+"|");
		}
	}

}