pom文件中添加

        <!--        Ansj中文分词--><dependency><groupId>org.ansj</groupId><artifactId>ansj_seg</artifactId><version>5.1.6</version></dependency>

我定义的dict文件内容

推特   n   57969
中华  n   57969
周杰伦 n   57969
时光机 n   57969

 实现

方式1

通过Library加载自定义字典文件,分词的时候将forset对象传入

    @Testpublic void contextLoadsAnalysis() throws Exception {Forest forest = null;String text = "中西西红柿炖牛腩通报推特手机这是一段测试文字周杰伦的时光机";Resource resource = new ClassPathResource("/library/userLibrary.dic");InputStream fis = resource.getInputStream();forest = Library.makeForest(fis);Forest forest1 = Library.makeForest(Objects.requireNonNull(this.getClass().getResourceAsStream("/library/default.dic")));System.out.println("Anysis 分词  -------------");System.out.println("DicAnalysis自定义分词  -------------");System.out.println(DicAnalysis.parse(text,forest1));System.out.println(DicAnalysis.parse(text));System.out.println("NlpAnalysis自定义分词  -------------");System.out.println(NlpAnalysis.parse(text,forest));System.out.println(NlpAnalysis.parse(text));System.out.println("其他自定义分词  -------------");System.out.println(ToAnalysis.parse(text));System.out.println(IndexAnalysis.parse(text));System.out.println(BaseAnalysis.parse(text));}

结果如下:

可能出现的问题:

词典添加的词不生效:编辑的tab其实不是\t,我试了半天就是因为在idea中手动tab结果不是真正的\t,后面直接复制了作者文档里的数据(PS:用户自定义词典这里面有例子数据)改了改数据就成功了

方式2

使用作者说的动态添加词典直接加载词。但是如果数据量大一个个加,肯定很麻烦。

        //动态添加String str ="我觉得中文分词是一个不错的系统";DicLibrary.insert(DicLibrary.DEFAULT, "我觉得", "n", 1000);DicLibrary.insert(DicLibrary.DEFAULT, "是一个不错的系统", "n", 1000);Result terms2 = DicAnalysis.parse(str);System.out.println(terms2);

删除词就只要使用DicLibrary.delete(DicLibrary.DEFAULT, "我是词");

注意!!!

如果是DicLibrary.insert(DicLibrary.DEFAULT, "增加新词", "我是词性", 1000);这样添加词典,使用ToAnalysis 、DicAnalysis 、NlpAnalysis 、IndexAnalysis 都会被影响,使用添加的词分词。比如输入【名称性别电话】一般会拆开成【名称】、【性别】和【电话】,这个时候通过DicLibrary.insert(DicLibrary.DEFAULT, "名称性别", "n", 1000);加入词典,那么除了使用BaseAnalysis之外的所有分词发方式输出的结果都是【名称性别】、【电话】

这是ansj文档里面功能统计:

名称 用户自定义词典 数字识别 人名识别 机构名识别 新词发现
BaseAnalysis X X X X X
ToAnalysis X X
DicAnalysis X X
IndexAnalysis X X
NlpAnalysis

方式2.2

所以为了不影响其他分词方式的使用,最好使用自定义的key,想要使用这个词典的时候直接DicAnalysis.parse("xx",DicLibrary.gets(key));、ToAnalysis.parse("xx",DicLibrary.gets(key));等等都可以,再次使用分词DicAnalysis.parse("xx")也不会这个自定义的词典被影响。

/*** 自定义key*/@Testpublic void keyTest(){String key = "dic_mykey" ;DicLibrary.put(key, key, new Forest());DicLibrary.insert(key, "增加新词", "我是词性", 1000);Result parse = DicAnalysis.parse("这是用户自定义词典增加新词的例子",DicLibrary.gets(key));System.out.println(parse);boolean flag = false;for (Term term : parse) {flag = flag || "增加新词".equals(term.getName());}Assert.assertTrue(flag);}

方式3(我试了不起作用,用方式1保险)

根据网上的方法和作者的操作文档用户自定义词典试了蛮多回,在项目根路径下创建library.properties 并添加

#path of userLibrary this is default library
dic=library/default.dic

试了半天,但并未起作用,迷惑。

看了下别人出现的问题,只找到了一个已经关闭的issues里面的回答

ansj添加自定义词典以及解决ansj加载自定义词典不起作用问题相关推荐

  1. Ansj动态加载自定义词典

    Ansj动态加载自定义词典 直奔主题 直奔主题 之前看的官网,加载userLibrary.dic,使用配置文件的方式,不过试了好多次没成功,后来看到有动态加载的方式,于是尝试使用动态加载字典. tal ...

  2. Linux系统 安装飞桨PaddleHub+LAC实现词法分析 实现加载自定义词典分词 (解决Lac服务启动报错问题、解决自定义词典空格无法分词问题)

    1.先上链接:飞桨PaddlePaddle-源于产业实践的开源深度学习平台 2.LAC模型简介:Lexical Analysis of Chinese,简称 LAC,是一个联合的词法分析模型,能整体性 ...

  3. 解决GitHub加载和下载慢问题

    解决GitHub加载和下载慢问题 参考文章: (1)解决GitHub加载和下载慢问题 (2)https://www.cnblogs.com/wghao/p/10858558.html (3)https ...

  4. 解决pjax加载页面不执行js插件的问题

    解决pjax加载页面不执行js插件的问题 参考文章: (1)解决pjax加载页面不执行js插件的问题 (2)https://www.cnblogs.com/fanwenhao/p/9643549.ht ...

  5. 解决GitHub加载不出图片问题

    解决GitHub加载不出图片问题 参考文章: (1)解决GitHub加载不出图片问题 (2)https://www.cnblogs.com/jooy/p/12090882.html 备忘一下.

  6. 使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题

    使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题 参考文章: (1)使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题 ( ...

  7. pytorch 驱动不兼容_解决Pytorch 加载训练好的模型 遇到的error问题

    这是一个非常愚蠢的错误 debug的时候要好好看error信息 提醒自己切记好好对待error!切记!切记! -----------------------分割线---------------- py ...

  8. Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题

    今天在交流群里,有人问我他经常遇到加载图片时内存溢出的问题,遇到的情况还是在自己的测试机或者手机里没有问题,做好了, 到了客户手机里就内存溢出了.其实有时候不同的手机和不同的系统对内存的要求不一样,尤 ...

  9. 使用vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题

    使用vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题 当你的SPA(单页应用程序)变得复杂时,打包构建后的Javascript包会变得非常大,以至于严重影响页面的加载时间.vue-r ...

最新文章

  1. C语言指针(就做个笔记)
  2. lxml xpath 爬取并正常显示中文内容
  3. resnet50 自定义
  4. js变量作用域和变量提升
  5. 忘记农民就是忘本-农业大健康·万祥军:不要说自己是教授
  6. AV1解码器dav1d性能提升100%
  7. Python版九九乘法表
  8. 挂机宝和网站服务器,挂机宝SSD硬盘vs普通硬盘访问官网哪个快?
  9. 二进制文件mysql创表_MySQL_MYSQL中如何存取二进制文件,首先创建测试表testtable CREATE TA - phpStudy...
  10. 办公自动化-实测doc文档-创建文档添加内容-0223
  11. Linux 下几款程序内存泄漏检查工具
  12. Restorator 2007 3.70.1729
  13. idea 配置maven插件
  14. Little Keng
  15. BOX3开发者工具使用说明
  16. 深度学习——图像分类相关模型一览
  17. Elasticsearch深度探秘搜索技术基于multi_match语法实现dis_max+tie_breaker
  18. 天翼云服务器安装宝塔面板
  19. win10安装opcenum_Windows10镜像安装失败的两种解决方法
  20. 【腾讯Bugly干货分享】手游热更新方案xLua开源:Unity3D下Lua编程解决方案

热门文章

  1. mysql开启审计日志
  2. 如何获取当天某个时间并与时间戳相互转换
  3. unity2017.3配置Android sdk
  4. maven 查看依赖树结构
  5. 数据库应用:MySQL数据库SQL高级语句与操作
  6. 使用 axios 发送请求到servlet ,后端数据接收为null
  7. 【Java基础】接口和抽象类有什么共同点和区别?
  8. 企业qq与私人qq同时登陆的问题
  9. win10浏览器加载很慢_win10系统打开网页慢怎么回事|win10系统打开网页速度慢的解决方法...
  10. Deformable DETR 论文学习