分词基于java的中文分词工具ANSJ

分词工具  时间:2021-03-07  阅读:()

基于j ava的中文分词工具ANSJ

ANSJ

这是一个基于n-Gra m+C RF+HMM的中文分词的j a va实现.

分词速度达到每秒钟大约200万字左右mac air下测试 准确率能达到96%以上

目前实现了.中文分词.中文姓名识别.用户自定义词典,关键字提取 自动摘要关键字标记等功能

可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目.分词的目的是创建一个高稳定可用的中文分词工具,可以利用到各种需要文字处理的场景中下面简单介绍一下Ansj中文分词的主要算法及特点.

数据结构

高度优化Trie树

在用户自定义词典以及各种类似于Map的场景中,大量使用的一个工具,众所周知,Tr ie具有高速的文本扫描能力,和较低的内存占用率,是最好的AC机之一,弦外之音,在我的认知范围内,貌似没有之一.相比其它结构在性能和构造上做到了很好的平衡,但是在j ava中,大量构建map尤其是has hmap,是一个非常昂贵的操作,通过对于一个map放入大量的key也注定其在自动拆箱装箱,以及解决冲突,大量hash匹配上做了过多的小消耗,虽然多数人认为,这种消耗属于纳秒级别的,但是对于动不动就上GB的文本来说,这个消耗是不可忽略的,所以作者在这里使用了首字母hash次字二分的方式来避免过多的消耗内存,也正应为有了这个机制.可以保证Ansj加载更多的用户自定义词典,有人问我具体的数字.大约500万词,1 Gd e内存.在这里作者强烈推荐这个小家伙,你可以通过nlp-lang包来获取这个小工具,居家神器.

三数组trie树

三数组trie树,好吧我知道你们会吐槽我明明用的DAT(Double Array Tree),为什么在这里改成了TAT(Tree Array Tree)。我也不想如此但是为了严谨一些真实的还原算法 的确是用了三个数组来实现的DA T的主要是为了在判断词语之后避免一次无谓的倒退算是空间换取时间的一个策略吧具体感兴趣的可以参见nlp-lang中DAT的创建。对于DAT算法个人觉得。如非必要勿用其在构造和修改上具有很多不确定性不符合简单可依赖的理念有兴趣的人可以了解下。在我小时候的博客中写了几篇关于DA T的文章虽然很水。据说也有几个人看明白了。

机器学习

隐马尔科夫语言模型最短路径ansj中和ngram一起使用.通过两个词语之间的关联来确定,用来做语义消歧.

TF/I DF词袋模型关键词抽取中用到.用来确定一个词的重要程度.同时利用关键词对文章进行自动摘要

CRF类似CRF的上下文基于词的标注用来实现新词发现功能,同时新词发现也服务于关键词抽取

ToAnalysis精准分词

精准分词是Ansj分词的***店长推荐款***

它在易用性,稳定性.准确性.以及分词效率上.都取得了一个不错的平衡.如果你初次尝试Ansj如果你想开箱即用.那么就用这个分词方式是不会错的.

DicAnalysis用户自定义词典优先策略的分词

用户自定义词典优先策略的分词,如果你的用户自定义词典足够好,或者你的需求对用户自定义词典的要求比较高,那么强烈建议你使用DicAnalysis的分词方式.可以说在很多方面Dic优于ToAnalysis的结果

NlpAnalysis带有新词发现功能的分词nlp分词是总能给你惊喜的一种分词方式.

它可以识别出未登录词.但是它也有它的缺点.速度比较慢.稳定性差.ps:我这里说的慢仅仅是和自己的其他方式比较.应该是40w字每秒的速度吧.

个人觉得nlp的适用方式.1.语法实体名抽取.未登录词整理.主要是对文本进行发现分析等工作

IndexAnalysis面向索引的分词

面向索引的分词。顾名思义就是适合在lucene等文本检索中用到的分词。 主要考虑以下两点

召回率*召回率是对分词结果尽可能的涵盖。 比如对“上海虹桥机场南路”召回结果是[上海/ns,上海虹桥机场/nt,虹桥/ns,虹桥机场/nz,机场/n,南路/nr]准确率*其实这和召回本身是具有一定矛盾性的Ansj的强大之处是很巧妙的避开了这两个的冲突。比如我们常见的歧义句“旅游和服务”->对于一般保证召回。大家会给出的结果是“旅游和服服务”对于a nsj不存在跨te r m的分词。意思就是。召回的词只是针对精准分词之后的结果的一个细分。比较好的解决了这个问题

BaseAnalysis最小颗粒度的分词

基本就是保证了最基本的分词.词语***颗粒度最非常小***的. .所涉及到的词大约是***10万***左右.

基本分词速度非常快.在macAir上.能到每秒300 w字每秒.同时准确率也很高.但是对于新词他的功能十分有限.

功能统计

String str="洁面仪配合洁面深层清洁毛孔清洁鼻孔面膜碎觉使劲挤才能出一点点皱纹脸颊毛孔修复的看不见啦草莓鼻历史遗留问题没辙脸和脖子差不多颜色的皮肤才是健康的长期使用安全健康的比同龄人显小五到十岁28岁的妹子看看你们的鱼尾纹" ;

System.out.println(BaseAnalys is.pars e(str));

洁/ag,面/q,仪/k,配合/v,洁/ag,面/q,深层/b,清洁/a,毛孔/n, ,清洁/a,鼻孔/n,面膜/n,碎/a,觉/v,使劲/v,挤/v,才能/v,出/v,一/m,点点/v,皱纹/n, ,脸颊/n,毛孔/n,修复/v,的/u,看/v,不见/v,啦/y, ,草莓/n,鼻/ng,历史/n,遗留/vn,问题/n,没辙/v, ,脸/n,和/c,脖子/n,差不多/l,颜色/n,的/u,皮肤/n,才/d,是/v,健康/a,的/u, ,长期/d,使用/v,安全/an,健康/a,的/u,比/p,同龄人/n,显/v,小/a,五/m,到/v,十/m,岁/q, ,28/m,岁/q,的/u,妹子/n,看看/v,你们/r,的/u,鱼尾纹/n

Sys te m.o ut.println(To Ana lys is.p arse(str));

洁/ag,面/q,仪/k,配合/v,洁/ag,面/q,深层/b,清洁/a,毛孔/n, ,清洁/a,鼻孔/n,面膜/n,碎/a,觉/v,使劲/v,挤/v,才能/v,出/v,一/m,点点/v,皱纹/n, ,脸颊/n,毛孔/n,修复/v,的/u,看/v,不见/v,啦/y, ,草莓/n,鼻/ng,历史/n,遗留/vn,问题/n,没辙/v, ,脸/n,和/c,脖子/n,差不多/l,颜色/n,的/u,皮肤/n,才/d,是/v,健康/a,的/u, ,长期/d,使用/v,安全/an,健康/a,的/u,比/p,同龄人/n,显/v,小/a,五/m,到/v,十岁/mq, ,28岁/mq,的/u,妹子/n,看看/v,你们/r,的/u,鱼尾纹/n

System.out.println(D icAnalys is.pars e(str));

洁/ag,面/q,仪/k,配合/v,洁/ag,面/q,深层/b,清洁/a,毛孔/n, ,清洁/a,鼻孔/n,面膜/n,碎/a,觉/v,使劲/v,挤/v,才能/v,出/v,一/m,点点/v,皱纹/n, ,脸颊/n,毛孔/n,修复/v,的/u,看/v,不见/v,啦/y, ,草莓/n,鼻/ng,历史/n,遗留/vn,问题/n,没辙/v, ,脸/n,和/c,脖子/n,差不多/l,颜色/n,的/u,皮肤/n,才/d,是/v,健康/a,的/u, ,长期/d,使用/v,安全/an,健康/a,的/u,比/p,同龄人/n,显/v,小/a,五/m,到/v,十岁/mq, ,28岁/mq,的/u,妹子/n,看看/v,你们/r,的/u,鱼尾纹/n

System.out.println(IndexAnalys is.parse(str));

洁/ag,面/q,仪/k,配合/v,洁/ag,面/q,深层/b,清洁/a,毛孔/n, ,清洁/a,鼻孔/n,面膜/n,碎/a,觉/v,使劲/v,挤/v,才能/v,出/v,一/m,点点/v,皱纹/n, ,脸颊/n,毛孔/n,修复/v,的/u,看/v,

不见/v,啦/y, ,草莓/n,鼻/ng,历史/n,遗留/vn,问题/n,没辙/v, ,脸/n,和/c,脖子/n,差不多/l,颜色/n,的/u,皮肤/n,才/d,是/v,健康/a,的/u, ,长期/d,使用/v,安全/an,健康/a,的/u,比/p,同龄人/n,显/v,小/a,五/m,到/v,十岁/mq, ,28岁/mq,的/u,妹子/n,看看/v,你们/r,的/u,鱼尾纹/n

System.out.println(N lpAnalys is.parse(str));

洁/a g,面仪/nw,配合/v,洁面/nw,深层/b,清洁/a,毛孔/n, ,清洁/a,鼻孔/n,面膜/n,碎觉/nw,使劲/v,挤/v,才/d,能/v,出/v,一点点/nw,皱纹/n, ,脸颊/n,毛孔/n,修复/v,的/u,看/v,不/d,见/v,啦/y, ,草莓/n,鼻历史/nw,遗留/vn,问题/n,没辙/v, ,脸/n,和/c,脖子/n,差不多/l,颜色/n,的/u,皮肤/n,才/d,是/v,健康/a,的/u, ,长期/d,使用/v,安全/an,健康/a,的/u,比/p,同龄人/n,显/v,小/a,五/m,到/v,十岁/mq, ,28岁/mq,的/u,妹子/n,看看/v,你们/r,的/u,鱼尾纹/n

停用词过滤

停用词需求是一种及其常见的需求,好处很多很多,令人惊讶的是坏处比好处还多,所以一般情况下不要用这个破玩意.我觉得主要是古时候,计算能力有限,大家不想对于无畏的字符串,计算太多,放给处女座程序员,一般觉得,tmd有个家伙没用一直在耗费我的cpu,删了丫的,好吧,我真不是处女座黑.反正这个功能也得有,并且已经将这个功能移位了.调用如下.

1.实例化一个过滤器

StopReco gnition filter=new S topReco gnition();filter.insertStopNatures("uj"); //过滤词性filter.insertStopNatures("ul");filter.insertStopN atures("nul l");filter.insertStopWord s("我"); //过滤单词

filter.insertStop Re gexes("小.*?"); //支持正则表达式

调用过滤

Result modifResult=ToAnalysis.parse(str).reco gnition(fitler); //过滤分词结果测试例子

欢迎/v,使用/v,ansj/en,_,seg/en,,/w,ansj/en,中文/nz,分词/v,在/p,这里/r,如果/c,遇到/v,什么/r,问题/n,都/d,可以/v,联系/v,./w,一定/d,尽/v,所能/v,./w,帮助/v,大家

/r,./w,ansj/en,_,seg/en,更快/d,,/w,更/d,准/a,,/w,更/d,自由/a, !/w

欢迎/什么/r,问题/n,都/d,可以/v,联系/v,./w,一定/d,尽/v,所能/v,./w,帮助/v,大家

/http://www.sz129.com

[6.18]DogYun:充100送10元,态云7折,经典云8折,独立服务器月省100元,幸运大转盘最高5折

DogYun是一家2019年成立的国人主机商,提供VPS和独立服务器租用等,数据中心包括中国香港、美国洛杉矶、日本、韩国、德国、荷兰等,其中VPS包括常规VPS(经典云)和按小时计费VPS(动态云),使用自行开发的面板和管理系统,支持自定义配置,动态云各个硬件独立按小时计费,带宽按照用户使用量计费(不使用不计费)或者购买流量包,线路也可以自行切换。目前商家发布了6.18促销方案,新购动态云7折,经...

宝塔面板批量设置站点404页面

今天遇到一个网友,他在一个服务器中搭建有十几个网站,但是他之前都是采集站点数据很大,但是现在他删除数据之后希望设置可能有索引的文章给予404跳转页面。虽然他程序有默认的404页面,但是达不到他引流的目的,他希望设置统一的404页面。实际上设置还是很简单的,我们找到他是Nginx还是Apache,直接在引擎配置文件中设置即可。这里有看到他采用的是宝塔面板,直接在他的Nginx中设置。这里我们找到当前...

捷锐数据399/年、60元/季 ,香港CN2云服务器 4H4G10M

捷锐数据官网商家介绍捷锐数据怎么样?捷锐数据好不好?捷锐数据是成立于2018年一家国人IDC商家,早期其主营虚拟主机CDN,现在主要有香港云服、国内物理机、腾讯轻量云代理、阿里轻量云代理,自营香港为CN2+BGP线路,采用KVM虚拟化而且单IP提供10G流量清洗并且免费配备天机盾可达到屏蔽UDP以及无视CC效果。这次捷锐数据给大家带来的活动是香港云促销,总共放量40台点击进入捷锐数据官网优惠活动内...

分词工具为你推荐
京沪高铁上市首秀在中国股市中:京沪高铁概念股有哪些中老铁路地铁路是怎么造的?是钻地吗?同ip网站查询服务器禁PING 是不是就可以解决同IP网站查询问题lunwenjiance知网论文检测查重系统125xx.com115xx.com是什么意思www.78222.com我看一个网站.www.snw58.com里面好有意思呀,不知道里面的信息是不是真实的www.zjs.com.cn怎么查询我的平安信用卡寄送情况www.javmoo.comjavimdb怎么看javbibibibi直播是真的吗www.mfav.org手机登录WWW.brcbc.org 能注册么
广东虚拟主机 mysql虚拟主机 美国便宜货网站 免费名片模板 线路工具 个人免费空间 韩国名字大全 91vps 免费活动 电信虚拟主机 网站在线扫描 新睿云 空间登入 中国电信网络测速 电信网络测速器 秒杀品 lamp是什么意思 徐州电信 腾讯网盘 ssl加速 更多