ansj添加自定义词典以及解决ansj加载自定义词典不起作用问题
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加载自定义词典不起作用问题相关推荐
- Ansj动态加载自定义词典
Ansj动态加载自定义词典 直奔主题 直奔主题 之前看的官网,加载userLibrary.dic,使用配置文件的方式,不过试了好多次没成功,后来看到有动态加载的方式,于是尝试使用动态加载字典. tal ...
- Linux系统 安装飞桨PaddleHub+LAC实现词法分析 实现加载自定义词典分词 (解决Lac服务启动报错问题、解决自定义词典空格无法分词问题)
1.先上链接:飞桨PaddlePaddle-源于产业实践的开源深度学习平台 2.LAC模型简介:Lexical Analysis of Chinese,简称 LAC,是一个联合的词法分析模型,能整体性 ...
- 解决GitHub加载和下载慢问题
解决GitHub加载和下载慢问题 参考文章: (1)解决GitHub加载和下载慢问题 (2)https://www.cnblogs.com/wghao/p/10858558.html (3)https ...
- 解决pjax加载页面不执行js插件的问题
解决pjax加载页面不执行js插件的问题 参考文章: (1)解决pjax加载页面不执行js插件的问题 (2)https://www.cnblogs.com/fanwenhao/p/9643549.ht ...
- 解决GitHub加载不出图片问题
解决GitHub加载不出图片问题 参考文章: (1)解决GitHub加载不出图片问题 (2)https://www.cnblogs.com/jooy/p/12090882.html 备忘一下.
- 使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题
使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题 参考文章: (1)使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题 ( ...
- pytorch 驱动不兼容_解决Pytorch 加载训练好的模型 遇到的error问题
这是一个非常愚蠢的错误 debug的时候要好好看error信息 提醒自己切记好好对待error!切记!切记! -----------------------分割线---------------- py ...
- Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题
今天在交流群里,有人问我他经常遇到加载图片时内存溢出的问题,遇到的情况还是在自己的测试机或者手机里没有问题,做好了, 到了客户手机里就内存溢出了.其实有时候不同的手机和不同的系统对内存的要求不一样,尤 ...
- 使用vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
使用vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题 当你的SPA(单页应用程序)变得复杂时,打包构建后的Javascript包会变得非常大,以至于严重影响页面的加载时间.vue-r ...
最新文章
- C语言指针(就做个笔记)
- lxml xpath 爬取并正常显示中文内容
- resnet50 自定义
- js变量作用域和变量提升
- 忘记农民就是忘本-农业大健康·万祥军:不要说自己是教授
- AV1解码器dav1d性能提升100%
- Python版九九乘法表
- 挂机宝和网站服务器,挂机宝SSD硬盘vs普通硬盘访问官网哪个快?
- 二进制文件mysql创表_MySQL_MYSQL中如何存取二进制文件,首先创建测试表testtable CREATE TA - phpStudy...
- 办公自动化-实测doc文档-创建文档添加内容-0223
- Linux 下几款程序内存泄漏检查工具
- Restorator 2007 3.70.1729
- idea 配置maven插件
- Little Keng
- BOX3开发者工具使用说明
- 深度学习——图像分类相关模型一览
- Elasticsearch深度探秘搜索技术基于multi_match语法实现dis_max+tie_breaker
- 天翼云服务器安装宝塔面板
- win10安装opcenum_Windows10镜像安装失败的两种解决方法
- 【腾讯Bugly干货分享】手游热更新方案xLua开源:Unity3D下Lua编程解决方案