paoding下载
http://code.google.com/p/paoding/
paoding分词的默认配置
paoding-analysis-default.properties
配置全局的规则,{字典目录,切词规则}
paoding分词的字典指定
paoding-dic-home.properties
paoding自己的字典文件paoding/dic
x-noise-*.dic是过滤字典,存放分词时过滤词和字;其他dic是定义一个完整的词。
paoding分词的切词策略
paoding-knives.properties
paoding/dic/.compiled目录是生成二进制字典的目录,每次字典,过滤字典添加新词的时候,需要删除,运行paoding分词的时候会重新生成新的字典。
net.paoding.analysis.dictionary包目录维护字典的类
net.paoding.analysis.knife包目录定义了一些分词策略
net.paoding.analysis.knife.FileDictionaries
程序分词时,主要加载的字典
/**
* 中文字典缓存根据地,为{@link CJKKnife}所用。<br>
* 从本对象可以获取中文需要的相关字典。包括词汇表、姓氏表、计量单位表、忽略的词或单字等。
* <p>
*
* @author Zhiliang Wang [qieqie.wang@gmail.com]
*
* @see CJKKnife
*
* @since 1.0
*/
public class FileDictionaries implements Dictionaries {
// -------------------------------------------------
protected Log log = LogFactory.getLog(this.getClass());
// -------------------------------------------------
/**
* 词汇表字典
*/
protected Dictionary vocabularyDictionary;
/**
* lantin+cjk的词典
*/
protected Dictionary combinatoricsDictionary;
/**
* 姓氏字典
*
*/
protected Dictionary confucianFamilyNamesDictionary;
/**
* 忽略的单字
*/
protected Dictionary noiseCharactorsDictionary;
/**
* 忽略的词语
*
*/
protected Dictionary noiseWordsDictionary;
/**
* 计量单位
*/
protected Dictionary unitsDictionary;
//分词
private String[] wordSegmentation(String text) {
//应该用一个全局变量,可以复用
Analyzer analyzer = new PaodingAnalyzer();
List<String> tags = new ArrayList<String>();
TokenStream tokenStream = analyzer.tokenStream("text",
new StringReader(text));
CharTermAttribute termAtt = (CharTermAttribute) tokenStream
.getAttribute(CharTermAttribute.class);
try {
while (tokenStream.incrementToken()) {
tags.add(termAtt.toString());
}
} catch (IOException e) {
e.printStackTrace();
}
String[] asdfasdf = new String[tags.size()];
tags.toArray(asdfasdf);
return asdfasdf;
}