项目集成自动分词系统ansj,实现自定义词库
一,分词系统地址:https://github.com/NLPchina/ansj_seg
二,为什么选择ansj?
1.项目需求:
我们平台要做手机售后的舆情分析,即对购买手机的用户的评论进行分析。分析出手机每个模块(比如:相机,充电等。这些大模块还需要细分,比如充电又可以分:充电慢,没有快充等)的好差评,并且计算差评率,供开发后续改进。之前一直是人工分析,随着评论的增加,这一块也是一个很大的工作量。因此我们想到了做评论的自动分析。这就要用到自然语言处理的技术了。
2.ansj的优点
分词效率高,支持自定义词典(这是最重要的,我们需要根据我们的业务自定义自己的词库,方便我们进行观点分析)
三,业务分析
首先这个系统肯定不能完全代替人工作,我们的目标是尽可能的减少人的工作量。通过统计源声发现,很多评论就一两句话。通过正则表达式把把评论分句。发现小于3句的评论占比将近70%。只要重点处理这种评论就行。把评论分句后,提取出名词和观点匹配。提取出形容词和情感匹配(好评或差评)。这就是评论分析的思路。
四,项目集成分析系统
1.引入jar包
<!-- nps 自然语言处理 -->
<dependency>
<groupId>org.nlpcn</groupId>
<artifactId>nlp-lang</artifactId>
<version>1.7.7</version>
<scope>compile</scope>
</dependency>
2.拷贝org.ansj包到src目录下
3.在resources目录下创建ansj_library.properties文件。这个文件项目里也有(注意这里要写绝对路径,不然会读不到自定义的文件。这是一个坑)
#path of userLibrary this is default library #dic=library/default.dic dic=D:/Lure_workspace/iFocusStruc/src/main/resources/library/default.dic #path of crfModel #crf_dic1=library/crf.model userLibrary=D:/Lure_workspace/iFocusStruc/src/main/resources/userLibrary.dic #stop_dic1=library/stop.dic #redress dic file path #ambiguity=library/ambiguity.dic ambiguity=D:/Lure_workspace/iFocusStruc/src/main/resources/library/ambiguity.dic synonyms=library/synonyms.dic #set real name isRealName=true #isNameRecognition default true isNameRecognition=true #isNumRecognition default true isNumRecognition=true #digital quantifier merge default true isQuantifierRecognition=true
3.把library文件夹拷贝到resources目录下,(这个library文件夹项目中有)
自定义词典:default.dic
连网 n 8000 发热 n 80000 这是 n 1000
4.把resource目录拷贝到本地resource目录。
5.测试:ToAnalysis方法
@Test
public void wordTest2333() {
String str = "数据结构效果不好,连网太慢,发热严重";
Result result = ToAnalysis.parse(str);
List<Term> termList = result.getTerms();
for (Term term : termList) {
System.out.println(term.getName() + ":" + term.getNatureStr());
}
}
结果:
数据结构:n
效果不好:a
,:w
连网:vn
太慢:d
,:w
发热:v
严重:a
数据结构:n 这个自定义的词生效了
连网:vn 没有生效
发热:v 没有生效
发现有问题,我明明把连网设置为了n,为什么还是vn。其实ToAnalysis只能使自定义的词在默认字典中不存在时,这个自定义的词才会生效(这个问题困扰了很久)。
测试二:DicAnalysis方法
@Test
public void wordTest2333() {
String str = "数据结构效果不好,连网太慢,发热严重";
Result result = DicAnalysis.parse(str);
List<Term> termList = result.getTerms();
for (Term term : termList) {
System.out.println(term.getName() + ":" + term.getNatureStr());
}
}
结果:
数据结构:n 效果不好:a ,:w 连网:n 太慢:d ,:w 发热:n 严重:a
可以看到我们已经实现自定义的词库中的词全部生效了。
项目集成自动分词系统ansj,实现自定义词库的更多相关文章
- paip.禁用IKAnalyzer 的默认词库.仅仅使用自定义词库.
paip.禁用IKAnalyzer 的默认词库.仅仅使用自定义词库. 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...
- paip..禁用mmseg 的默认词库. . 仅仅使用自定义词库from数据库.
paip..禁用mmseg 的默认词库. . 仅仅使用自定义词库from数据库. mmseg默认词库只能是文件格式...不好维护..要是不个词库放的个数据库里面走好维护兰.. 要实现2个目标..: 1 ...
- Java——word分词·自定义词库
word: https://github.com/ysc/word word-1.3.1.jar 需要JDK8word-1.2.jar c语言给解析成了“语言”,自定义词库必须为UTF-8 程序一旦运 ...
- 【自定义IK词典】Elasticsearch之中文分词器插件es-ik的自定义词库
Elasticsearch之中文分词器插件es-ik 针对一些特殊的词语在分词的时候也需要能够识别 有人会问,那么,例如: 如果我想根据自己的本家姓氏来查询,如zhouls,姓氏“周”. 如 ...
- 31.IK分词器配置文件讲解以及自定义词库
主要知识点: 知道IK默认的配置文件信息 自定义词库 一.ik配置文件 ik配置文件地址:es/plugins/ik/config目录 IKAnalyzer.cfg.xml:用 ...
- 30.IK分词器配置文件讲解以及自定义词库
主要知识点: 知道IK默认的配置文件信息 自定义词库 一.ik配置文件 ik配置文件地址:es/plugins/ik/config目录 IKAnalyzer.cfg.xml:用 ...
- ElasticSearch7.3学习(十五)----中文分词器(IK Analyzer)及自定义词库
1. 中文分词器 1.1 默认分词器 先来看看ElasticSearch中默认的standard 分词器,对英文比较友好,但是对于中文来说就是按照字符拆分,不是那么友好. GET /_analyze ...
- Java——ikanalyzer分词·只用自定义词库
需要包:IKAnalyzer2012_FF_hf1.jarlucene-core-5.5.4.jar需要文件: IKAnalyzer.cfg.xmlext.dicstopword.dic 整理好的下载 ...
- solr添加中文IK分词器,以及配置自定义词库
Solr是一个基于Lucene的Java搜索引擎服务器.Solr 提供了层面搜索.命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式).它易于安装和配置,而且附带了一个基于H ...
随机推荐
- 使用 cmd连接 Oracle,MySql,SQL Server 数据库
1. Oracle cmd连接数据库 语法: sqlplus 用户/口令(密码)@服务器IP/数据库实例名(SID) 1.1 方式一 数据库服务在本机上IP可以用localhost替换 sqlplus ...
- JavaScript -- 时光流逝(四):js中的 Math 对象的属性和方法
JavaScript -- 知识点回顾篇(四):js中的 Math 对象的属性和方法 1. Math 对象的属性 (1) E :返回算术常量 e,即自然对数的底数(约等于2.718). (2) LN2 ...
- Linux中的文件查找技巧
前言 Linux常用命令中,有些命令可以帮助我们查找二进制文件,帮助手册或源文件的位置,也有的命令可以帮助我们查找磁盘上的任意文件,今天我们就来看看这些命令如何使用. witch witch命令会在P ...
- 《Java大学教程》—第24章 Java的背景
本章主要介绍的是Java的背景知识,通过了解历史知道Java与其他语言的区别,以便更好选择在什么场景下使用Java. 24.2 语言的尺寸Java语言短小.紧凑,以C++为基础,放弃了一些特定的 ...
- JavaScript的基本包装类型概述与基本包装类型_Number类型
JavaScript的基本包装类型示例 为了便于操作基本类型值,javaScript 提供了 3 个特殊的引用类型:Boolean.Number和 String. 这些类型与其他引用类型相似,但同时也 ...
- Scrapy 框架 CrawlSpider 全站数据爬取
CrawlSpider 全站数据爬取 创建 crawlSpider 爬虫文件 scrapy genspider -t crawl chouti www.xxx.com import scrapy fr ...
- Linux之初识磁盘
磁盘知识体系概括 机械硬盘和固态硬盘 机械磁盘剖开图 磁盘工作的视频动画,主轴转动,机械手读写 模拟磁盘工作视频,点击中间三角播放 磁盘结构详解 磁盘外部结构 组成 主要由三部分组成:盘片.主轴(机械 ...
- UML各种图
UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明.可视化.和编制文档的一种标准语言.下面将对UML的九种图+包图的基本概念进行介绍以及各 ...
- 【转】FFmpeg获取DirectShow设备数据(摄像头,录屏)
这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1. 列设备 ffmpeg -list_devic ...
- 一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装(转载 https://www.cnblogs.com/alangur/p/8339905.html)
(一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装 (1)下载erlang: http://www.erlang.org/download/otp_win64 ...