java ansj加入自定义词典使用(DicAnalysis和ToAnalysis)(加载词典方法一)

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 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 termList = dicAnsj(str);
        for (Term term : termList) {
            System.out.println(term.getName() + ":" + term.getNatureStr());
        }
    }
}

5、结果如下:

这是:n
一个:n
西红柿女郎:n

 

你可能感兴趣的:(JAVA学习)