解决 ANSJ分词 自定义词典文件无效

注意:

1、指定配置文件的路径时,建议配置为绝对路径。这种方式最简单,否则需自行解决路径的问题

2、配置文件的内容,词典各字段之间使用tab(\t)分割。一般发现自定义字典无效,就是因为使用的不是tab(\t)而是4个空格等。所以,一定要记住,tab、tab、tab

3、字典中,英文字母,全部转为小写。因为拆词的时候,是先转为小写,然后比较的。输出的结果,拆词后,输出的结果,也都是小写。

字典配置(default.dic)文件,格式如下:

基于java	n	100
西红柿炖牛腩	n	1000
连网	n	8000
いらないよ	n	100

========================= 填坑完毕 =========================

一、文档: 官方文档

二、自定词典的使用方式

方式1、从内存操作词典

这个最简单,官方也有demo,开箱即用

 @Test
    public void test() throws Exception {

        //添加自定义词语 【 英文,按照小写配置。(大写,不识别。拆词的结果,也转为小写了)】
        DicLibrary.insert(DicLibrary.DEFAULT, "基于java", "n", 1);

        String text = "基于Java开发的轻量级的中分分词工具包";

        System.out.println(DicAnalysis.parse(text));

    }
输出结果:

基于java/n,开发/v,的/u,轻量级/b,的/u,中分/n,分词/v,工具包/n

方式2、通过代码方式来加载

@Test
    public void test() throws Exception {
         // 关闭名字识别
         MyStaticValue.isNameRecognition = false;
         // 配置自定义词典的位置。注意是绝对路径
         MyStaticValue.ENV.put(DicLibrary.DEFAULT, "D:\\project\\library\\default.dic");

        String text = "基于Java开发的轻量级的中分分词工具包";

        System.out.println(DicAnalysis.parse(text));
    }

方式3、通过配置文件

在 resource 目录下,建一个 library.properties 配置文件

接着,配置 dic 节点,指定配置文件的绝对路径

dic=D:/project/library/default.dic

就可以直接使用了

@Test
    public void test() throws Exception {

        String text = "基于Java开发的轻量级的中分分词工具包";

        System.out.println(DicAnalysis.parse(text));
    }

 

你可能感兴趣的:(解决 ANSJ分词 自定义词典文件无效)