ansj提供的分词工具
名称 | 用户自定义词典 | 数字识别 | 人名识别 | 机构名识别 | 新词发现 |
---|---|---|---|---|---|
BaseAnalysis | X | X | X | X | X |
ToAnalysis | √ | √ | √ | X | X |
DicAnalysis | √ | √ | √ | X | X |
IndexAnalysis | √ | √ | √ | X | X |
NlpAnalysis | √ | √ | √ | √ | √
|
亲测了3种:ToAnalysis、DicAnalysis、NlpAnalysis
感受:Nlp比前两种都要慢很多。所以选择使用了前两者。
使用步骤:
1、在项目目录/src/main/resources下创建文件夹library,并在该文件夹下添加userLibrary.dic文件:
userLibrary.dic文件中,自定义字典格式为:
这是 r 1000
一个 r 1000
西红柿女郎 r 1000
其中 r表示当前词语的词性,1000为词频,可自行设置。
注意:
1)、词典各字段之间使用tab(\t
)分割,如“这是 r 1000”三个字段之间的间隔是一个tab分隔符。
2)、词性需小写(如n)。
2、在项目目录/src/main/resources下创建文件library.properties,并设置内容
userLibrary=/library/userLibrary.dic
isRealName=true
3、在运行文件中添加如下方法:
import org.nlpcn.commons.lang.tire.domain.Forest;
import org.nlpcn.commons.lang.tire.library.Library;
static List<Term> ansj(String string) {
Result result = DicAnalysis.parse(string,Inner.forest);// 将DicAnalysis换成ToAnalysis也可以,二者区别请读者自查
return result.getTerms();
}
private static class Inner {
static Forest forest;
static {
try {
forest = Library.makeForest(Utils.class.getResourceAsStream("/library/userLibrary.dic"));
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
4、调用:
public class TestAnsj {
@org.junit.Test
public void testDicAnalysis() {
String str = "这是一个西红柿女郎";
List<Term> termList = dicAnsj(str);
for (Term term : termList) {
System.out.println(term.getName() + ":" + term.getNatureStr());
}
}
}
5、结果如下:
这是:n
一个:n
西红柿女郎:n