Java 开源中文分词器 Jcseg

Java 开源中文分词器 Jcseg

Apache
Java
跨平台
2012-10-19
狮子的魂

Jcseg 是什么?

Jcseg 是基于 mmseg 算法的一个轻量级开源中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了最新版本的 lucene, solr, elasticsearch 的分词接口。Jcseg 自带了一个 jcseg.properties 文件用于快速配置而得到适合不同场合的分词应用,例如:最大匹配词长、是否开启中文人名识别、是否追加拼音、是否追加同义词等。

Jcseg 核心功能:

  • 中文分词:mmseg 算法 + Jcseg 独创的优化算法。

  • 关键字提取:基于textRank算法。

  • 关键短语提取:基于textRank算法。

  • 关键句子提取:基于textRank算法。

  • 文章自动摘要:基于BM25+textRank算法。

  • 自动词性标注:目前只是基于词库,效果不是很理想。

  • Restful api:嵌入 jetty 提供了一个绝对高性能的 server 模块,包含全部功能的 http 接口,标准化 json 输出格式,方便各种语言客户端直接调用。

Jcseg 中文分词:

四种切分模式:

  • 简易模式:FMM 算法,适合速度要求场合

  • 复杂模式:MMSEG 四种过滤算法,具有较高的歧义去除,分词准确率达到了98.41%

  • 检测模式:只返回词库中已有的词条,很适合某些应用场合

  • 检索模式:细粒度切分,专为检索而生,除了中文处理外(不具备中文的人名,数字识别等智能功能)其他与复杂模式一致(英文,组合词等)

  • 分隔符模式:按照给定的字符切分词条,默认是空格,特定场合的应用

  • NLP 模式:继承自复杂模式,更改了数字,单位等词条的组合方式,增加电子邮件,大陆手机号码,网址,人名,地名,货币等以及无限种自定义实体的识别与返回

  1. 支持自定义词库。在 lexicon 文件夹下,可以随便添加/删除/更改词库和词库内容,并且对词库进行了分类。

  2. 支持词库多目录加载,配置 lexicon.path 中使用';'隔开多个词库目录。

  3. 词库分为简体/繁体/简繁体混合词库:可以专门适用于简体切分、繁体切分、简繁体混合切分,并且可以利用下面提到的同义词实现,简繁体的相互检索,Jcseg 同时提供了词库两个简单的词库管理工具来进行简繁体的转换和词库的合并。

  4. 中英文同义词追加/同义词匹配 + 中文词条拼音追加。词库整合了《现代汉语词典》和 cc-cedict 辞典中的词条,并且依据 cc-cedict 词典为词条标上了拼音,依据《中华同义词词典》为词条标上了同义词(尚未完成)。更改 jcseg.properties 配置文档可以在分词的时候加入拼音和同义词到分词结果中。

  5. 中文数字和中文分数识别,例如:"一百五十个人都来了,四十分之一的人。"中的"一百五十"和"四十分之一"。并且 Jcseg 会自动将其转换为阿拉伯数字加入到分词结果中。如:150, 1/40。

  6. 支持中英混合词和英中混合词的识别(维护词库可以识别任何一种组合)。例如:B超, x射线, 卡拉ok, 奇都ktv, 哆啦a梦。

  7. 更好的英文支持,电子邮件,域名,小数,分数,百分数,字母和标点组合词(例如C++, c#)的识别。

  8. 自定义切分保留标点。例如: 保留 &,就可以识别 k&r 这种复杂词条。

  9. 复杂英文切分结果的二次切分:可以保留原组合,同时可以避免复杂切分带来的检索命中率下降的情况,例如QQ2013会被切分成: qq2013/ qq/ 2013,chenxin619315@gmail.com会被切分成:chenxin619315@gmail.com/ chenxin/ 619315/ gmail/ com。

  10. 支持阿拉伯数字/小数/中文数字基本单字单位的识别,例如2012年,1.75米,38.6℃,五折,并且 Jcseg 会将其转换为“5折”加入分词结果中。

  11. 智能圆角半角, 英文大小写转换。

  12. 特殊字母识别:例如:Ⅰ,Ⅱ;特殊数字识别:例如:①,⑩。

  13. 配对标点内容提取:例如:最好的 Java 书《java编程思想》,‘畅想杯黑客技术大赛’,被《,‘,“,『标点标记的内容。(1.6.8版开始支持)。

  14. 智能中文人名/外文翻译人名识别。中文人名识别正确率达 94% 以上。(中文人名可以维护 lex-lname.lex,lex-dname-1.lex,lex-dname-2.lex 来提高准确率),(引入规则和词性后会达到 98% 以上的识别正确率)。

  15. 自动中英文停止词过滤功能(需要在 jcseg.properties 中开启该选项,lex-stopwords.lex 为停止词词库)。

  16. 词库更新自动加载功能, 开启一个守护线程定时的检测词库的更新并且加载。

  17. 自动词性标注(目前基于词库)。

  18. 自动实体的识别,默认支持:电子邮件,网址,大陆手机号码,地名,人名,货币等;词库中可以自定义各种实体并且再切分中返回。

Jcseg 快速体验:

终端测试:

  1. cd 到 Jcseg 根目录。

  2. ant all(或者使用 maven 编译)

  3. 运行:java -jar jcseg-core-{version}.jar

  4. 你将看到如下的终端界面

  5. 在光标处输入文本开始测试

+--------Jcseg chinese word tokenizer demo---------------+
|- @Author chenxin<chenxin619315@gmail.com>              |
|- :seg_mode  : switch to specified tokenizer mode.      |
|- (:complex,:simple,:search,:detect,:delimiter,:NLP)    |
|- :keywords  : switch to keywords extract mode.         |
|- :keyphrase : switch to keyphrase extract mode.        |
|- :sentence  : switch to sentence extract mode.         |
|- :summary   : switch to summary extract mode.          |
|- :help      : print this help menu.                    |
|- :quit      : to exit the program.                     |
+--------------------------------------------------------+
jcseg~tokenizer:complex>>

测试样板:

分词文本

歧义和同义词:研究生命起源,混合词: 做B超检查身体,x射线本质是什么,今天去奇都ktv唱卡拉ok去,哆啦a梦是一个动漫中的主角,单位和全角: 2009年8月6日开始大学之旅,岳阳今天的气温为38.6℃, 也就是101.48℉, 中文数字/分数: 你分三十分之二, 小陈拿三十分之五,剩下的三十分之二十三全部是我的,那是一九九八年前的事了,四川麻辣烫很好吃,五四运动留下的五四精神。笔记本五折包邮亏本大甩卖。人名识别: 我是陈鑫,也是jcseg的作者,三国时期的诸葛亮是个天才,我们一起给刘翔加油,罗志高兴奋极了因为老吴送了他一台笔记本。外文名识别:冰岛时间7月1日,正在当地拍片的汤姆·克鲁斯通过发言人承认,他与第三任妻子凯蒂·赫尔墨斯(第一二任妻子分别为咪咪·罗杰斯、妮可·基德曼)的婚姻即将结束。配对标点: 本次『畅想杯』黑客技术大赛的得主为电信09-2BF的张三,奖励C++程序设计语言一书和【畅想网络】的『PHP教程』一套。特殊字母: 【Ⅰ】(Ⅱ),英文数字: bug report chenxin619315@gmail.com or visit http://code.google.com/p/jcseg, we all admire the hacker spirit!特殊数字: ① ⑩ ⑽ ㈩.

分词结果:

歧义/n 和/o 同义词/n :/w 研究/vn 琢磨/vn 研讨/vn 钻研/vn 生命/n 起源/n ,/w 混合词 :/w 做/v b超/n 检查/vn 身体/n ,/w x射线/n x光线/n 本质/n 是/a 什么/n ,/w 今天/t 去/q 奇都ktv/nz 唱/n 卡拉ok/nz 去/q ,/w 哆啦a梦/nz 是/a 一个/q 动漫/n 中/q 的/u 主角/n ,/w 单位/n 和/o 全角/nz :/w 2009年/m 8月/m 6日/m 开始/n 大学/n 之旅 ,/w 岳阳/ns 今天/t 的/u 气温/n 为/u 38.6℃/m ,/w 也就是/v 101.48℉/m ,/w 中文/n 国语/n 数字/n //w 分数/n :/w 你/r 分/h 三十分之二/m ,/w 小陈/nr 拿/nh 三十分之五/m ,/w 剩下/v 的/u 三十分之二十三/m 全部/a 是/a 我的/nt ,/w 那是/c 一九九八年/m 1998年/m 前/v 的/u 事/i 了/i ,/w 四川/ns 麻辣烫/n 很/m 好吃/v ,/w 五四运动/nz 留下/v 的/u 五四/m 54/m 精神/n 。/w 笔记本/n 五折/m 5折/m 包邮 亏本/v 大甩卖 甩卖 。/w 人名/n 识别/v :/w 我/r 是/a 陈鑫/nr ,/w 也/e 是/a jcseg/en 的/u 作者/n ,/w 三国/mq 时期/n 的/u 诸葛亮/nr 是个 天才/n ,/w 我们/r 一起/d 给/v 刘翔/nr 加油/v ,/w 罗志高/nr 兴奋/v 极了/u 因为/c 老吴/nr 送了 他/r 一台 笔记本/n 。/w 外文/n 名/j 识别/v :/w 冰岛/ns 时间/n 7月/m 1日/m ,/w 正在/u 当地/s 拍片/vi 的/u 汤姆·克鲁斯/nr 阿汤哥/nr 通过/v 发言人/n 承认/v ,/w 他/r 与/u 第三/m 任/q 妻子/n 凯蒂·赫尔墨斯/nr (/w 第一/a 二/j 任/q 妻子/n 分别为 咪咪·罗杰斯/nr 、/w 妮可·基德曼/nr )/w 的/u 婚姻/n 即将/d 结束/v 。/w 配对/v 标点/n :/w 本次/r 『/w 畅想杯/nz 』/w 黑客/n 技术/n 大赛/vn 的/u 得主/n 为/u 电信/nt 09/en -/w bf/en 2bf/en 的/u 张三/nr ,/w 奖励/vn c++/en 程序设计/gi 语言/n 一书/ns 和/o 【/w 畅想网络/nz 】/w 的/u 『/w PHP教程/nz 』/w 一套/m 。/w 特殊/a 字母/n :/w 【/w Ⅰ/nz 】/w (/w Ⅱ/m )/w ,/w 英文/n 英语/n 数字/n :/w bug/en report/en chenxin/en 619315/en gmail/en com/en chenxin619315@gmail.com/en or/en visit/en http/en :/w //w //w code/en google/en com/en code.google.com/en //w p/en //w jcseg/en ,/w we/en all/en admire/en appreciate/en like/en love/en enjoy/en the/en hacker/en spirit/en mind/en !/w 特殊/a 数字/n :/w ①/m ⑩/m ⑽/m ㈩/m ./w
的码云指数为
超过 的项目
加载中

评论(31)

xmhexi
xmhexi
使用sudo mvn compile 编译时报错: [INFO] Reactor Summary: [INFO] [INFO] jcseg .............................................. SUCCESS [ 0.003 s] [INFO] jcseg-core ......................................... FAILURE [ 1.753 s] [INFO] jcseg-analyzer ..................................... SKIPPED [INFO] jcseg-elasticsearch ................................ SKIPPED [INFO] jcseg-server ....................................... SKIPPED [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.913 s [INFO] Finished at: 2019-03-07T09:47:35+08:00 [INFO] Final Memory: 17M/634M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:compile (default-compile) on project jcseg-core: Compilation failure: Compilation failure: [ERROR] /mnt/sda1/jcseg/jcseg/jcseg-co
f
feifei159
怎么使用啊
巴拉迪维
巴拉迪维
勉为其难表扬一下 @狮子的魂 童鞋!经我讨债鬼一般不断催促,终于修复了 #Jcseg# 分词器在 #ElasticSearch# 6.1.0 版本中分词时出现 offset 异常的问题。作为社区优秀的开源项目,新版代码自然已提交至码云 https://gitee.com/lionsoul/jcseg
emily13961
emily13961
张华平10月8号结婚了.这句话用NLP分词,怎么会把结婚这个词给去掉呢?希望高手能给个思路
易爆炸
易爆炸
at org.lionsoul.jcseg.tokenizer.ASegment.next(ASegment.java:206) at com.recommendengine.compute.utils.TextSplit$.process(TextSplit.scala:45) 多线程处理的时候,就出现这个错误
mogakun
mogakun
用来分词1.5G的文件,大概需要10个小时。。一直运行会烧cpu吗?需要用线程来让电脑工作一会再休息一会吗?
鸠魄
鸠魄
Unsupported major.minor version 52.0 (unable to load class org.lionsoul.jcseg.tokenizer.core.JcsegTaskConfig)
KDash
KDash
棒棒的,公司的分词和关键字提取就用的这个!
冬芽
冬芽
正在使用 很方便

Jcseg 2.5.0 发布,Java 轻量级开源自然语言处理包

Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同...

09/09 10:07

Jcseg 2.4.0 发布,Java 轻量级开源自然语言处理包

Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同...

2018/11/07 09:34

Jcseg 2.3.0 发布,Java 轻量级开源自然语言处理包

Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同...

2018/05/28 10:09

Jcseg 2.2.0 发布,Java 轻量级开源自然语言处理包

Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同...

2017/09/06 14:03

Jcseg 2.1.1 发布,Java 轻量级开源自然语言处理包

Jcseg 2.1.1 发布了。Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大...

2017/04/05 10:46

Jcseg 2.1.0 发布 - Java 开源中文分词器

Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同...

2017/01/09 10:44

Jcseg 2.0.0 发布,自定义词库开发支持优化

Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同...

2016/11/04 11:06

Jcseg 1.9.9 发布,Maven 仓库上传+无痛安装与测试

Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同...

2016/07/07 14:26

Jcseg 1.9.8 发布,新增检索模式/细粒度切分

Jcseg是基于mmseg算法的一个轻量级开源中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了最新版本的lucene, solr, elasticsearch的分词接口。...

2016/06/13 11:13

Jcseg 新提交提供对 lucene-6.0.0,solr-6.0.0 和 elasticsearch-2.3.1 的支持

收到很多邮件提及要Jcseg对最新版本的lucene,solr,elasticsearch的支持,昨儿发布了新的提交,Jcseg主版本号未变,因为1.9.8的功能还在开发,特此通知! Jcseg新提交: 1,提供了对lucene-...

2016/04/20 13:42

没有更多内容

加载失败,请刷新页面

2
回答
jcseg自定义新词失败

@狮子的魂 你好,我在词库中加入 炎性肌纤维母细胞瘤 这个词,但是它还是切分了,请问怎么做才能让它完整不切分呢?我用的是最新1.9.5版本的jcseg

2015/03/06 16:51
4
回答
请问elasticsearch中如下curl的请求怎么转化为java的写法?
fir01 的回答 2015/04/02 18:37
最佳答案
TermVectorRequestBuilder requestBuilder = client.prepareTermVector("mishu_index", "cert", "14").setSelectedFields("change"); TermVectorResponse res...
14
回答
solr jcseg 词库自动加载的问题

@狮子的魂 你好,最近项目的搜索需要分词,试了好几种,碰到jcseg觉得很不错。 我现在的问题是按照配置顺序来的 但是还是没办法自动加载词库 solr启动...

2015/09/10 17:57
2
回答
为什么jcseg的重新加载更改的词库功能在elasticsearch中不能生效?
狮子的魂 的回答 2014/12/30 22:02
最佳答案
我自己用的elasticsearch,但是还没用到过词库自动更新。 elasticsearch启动会让Jcseg创建几份词库,然后你描述的问题就来了,可能只有一个线程更新词库成功。解决办法: 1. 更改elasticsearch插件中的Jcseg使用单例词库。
4
回答
关于jcseg,我该用什么方式导入到哪里来进行使用呢?
狮子的魂 的回答 2015/08/22 23:47
最佳答案
1. 直接使用eclipse选择导入-》导入maven项目即可! 2. 不习惯maven就直接使用你自己熟悉的IDE建立一个项目,把Jcseg的中的jcseg-core内的源码导入或者直接拷贝到你的项目即可。 3. 参考或者直接运行org.lionsoul.jcseg.test.JcsegTe...
2
回答
jcseg是用哪个方法获取到词性呢
狮子的魂 的回答 2016/12/07 19:25
最佳答案
词条相关的信息都是统一从IWord接口获取: //method prototype public String[] getPartSpeech(); String pos = word.getPartSpeech(); if ( pos != null ) { //有可能没有词性 System...
1
回答
关于jcseg线程安全的问题
狮子的魂 的回答 2016/11/30 22:46
最佳答案
1,ADictionary词库对象,一般一个项目只使用一个词库实例即可,这个可以提前创建并且加载词库,然后全局使用。 2,JcsegTaskConfig也可以提前创建然后设置好然后全局使用。 3,但是,ASegment对象不能并发调用,建议是一个线程得创建一个,也可以需要的时候随时创建,如下:...
2
回答
jcseg中10以内的中文数字该如何设置直接转换成阿拉伯数字
狮子的魂 的回答 2016/11/03 18:24
最佳答案
默认的单字的中文数字是不会转成阿拉伯数字的,语义上讲“四”不一定代表4。你可以该更下代码,将next返回的结果增加如下判断: if ( w.getLength() == 1 && NumericUtil.isCNNumeric(w.getValue()) > -1 ) { //单字数字 } 具...
7
回答
[转]与Lucene 4.10配合的中文分词比较(标准详细的比较)

本文转自: http://www.hansight.com/blog-lucene4.10-with-chinese-segment.html 感谢原作者...

2015/01/18 14:47
2
回答
Token menchuang exceeds length of provided text sized 8

@狮子的魂 你好,想跟你请教个问题:我在索引库添加了拼音库的后,然后搜索,开启高亮时,就报 ERROR - 2016-03-10 13:42:59.185...

2016/03/10 14:01

没有更多内容

加载失败,请刷新页面

jcseg歧义句子分词测试

今天在晚上看到一些网友测试分词器常用的起义语句, 我拿jcseg去试了下: 1. 结婚的和尚未结婚的 jcseg分词: 结婚 的 和 尚未 结婚 的 Done, total:10, split:6, cost: 0.00026sec 2. 他说的确...

2013/06/05 13:56
1K
1
Solr 服务器搭建

一、安装solr(未集成Tomcat,服务器上Tomcat不能安装成功) 参考网址:http://blog.csdn.net/clebeg/article/details/21241195 1. 安装 Solr5 step1: 下载Solr5 wget http://mirrors.hust....

2015/04/24 16:51
59
0
lucene5.5版本中文jcseg分词器

lucene5.5中文分词

2016/03/13 02:09
698
1
Lucene 5.2.1 + jcseg 1.9.6中文分词索引(Lucene 学习序列2)

Lucene 5.2.1 + jcseg 1.9.6中文分词索引(Lucene 学习序列2) jcseg是使用Java开发的一个开源的中文分词器,使用流行的mmseg算法实现。是一款独立的分词组件,不是针对lucene而开发,但是提供...

2016/01/30 10:57
98
1
elasticsearch 碰坑笔记

启动es,结果遇到这个错误 已经存在一个节点,于是乎ps -ef各种命令找不到已经启动的节点!!!! google一番,找到了其api,http://192.168.1.165:9200/article/_search 解决这个问题之后,再...

2018/12/29 11:10
57
1
solr词库实时更新维护

solr源码编译与词库实时更新维护

2016/04/19 16:43
337
2
中文文本分词,关键词提取工具jcseg使用方法

jcseg可以从文章或者语句中提取出关键词.并且能把中文数字自动转换成阿拉伯数字 效果如下: 目录结构: 实现: 注意:此处的jcsegTaskConfig 和 ADictionary主要用来加载词库和其它配置文件,是线...

2016/11/05 17:48
331
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部