Jcseg 是基于 mmseg 算法的一个轻量级开源中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了最新版本的 lucene, solr, elasticsearch 的分词接口。Jcseg 自带了一个 jcseg.properties 文件用于快速配置而得到适合不同场合的分词应用,例如:最大匹配词长、是否开启中文人名识别、是否追加拼音、是否追加同义词等。
中文分词:mmseg 算法 + Jcseg 独创的优化算法。
关键字提取:基于textRank算法。
关键短语提取:基于textRank算法。
关键句子提取:基于textRank算法。
文章自动摘要:基于BM25+textRank算法。
自动词性标注:目前只是基于词库,效果不是很理想。
Restful api:嵌入 jetty 提供了一个绝对高性能的 server 模块,包含全部功能的 http 接口,标准化 json 输出格式,方便各种语言客户端直接调用。
四种切分模式:
简易模式:FMM 算法,适合速度要求场合
复杂模式:MMSEG 四种过滤算法,具有较高的歧义去除,分词准确率达到了98.41%
检测模式:只返回词库中已有的词条,很适合某些应用场合
检索模式:细粒度切分,专为检索而生,除了中文处理外(不具备中文的人名,数字识别等智能功能)其他与复杂模式一致(英文,组合词等)
分隔符模式:按照给定的字符切分词条,默认是空格,特定场合的应用
NLP 模式:继承自复杂模式,更改了数字,单位等词条的组合方式,增加电子邮件,大陆手机号码,网址,人名,地名,货币等以及无限种自定义实体的识别与返回
支持自定义词库。在 lexicon 文件夹下,可以随便添加/删除/更改词库和词库内容,并且对词库进行了分类。
支持词库多目录加载,配置 lexicon.path 中使用';'隔开多个词库目录。
词库分为简体/繁体/简繁体混合词库:可以专门适用于简体切分、繁体切分、简繁体混合切分,并且可以利用下面提到的同义词实现,简繁体的相互检索,Jcseg 同时提供了词库两个简单的词库管理工具来进行简繁体的转换和词库的合并。
中英文同义词追加/同义词匹配 + 中文词条拼音追加。词库整合了《现代汉语词典》和 cc-cedict 辞典中的词条,并且依据 cc-cedict 词典为词条标上了拼音,依据《中华同义词词典》为词条标上了同义词(尚未完成)。更改 jcseg.properties 配置文档可以在分词的时候加入拼音和同义词到分词结果中。
中文数字和中文分数识别,例如:"一百五十个人都来了,四十分之一的人。"中的"一百五十"和"四十分之一"。并且 Jcseg 会自动将其转换为阿拉伯数字加入到分词结果中。如:150, 1/40。
支持中英混合词和英中混合词的识别(维护词库可以识别任何一种组合)。例如:B超, x射线, 卡拉ok, 奇都ktv, 哆啦a梦。
更好的英文支持,电子邮件,域名,小数,分数,百分数,字母和标点组合词(例如C++, c#)的识别。
自定义切分保留标点。例如: 保留 &,就可以识别 k&r 这种复杂词条。
复杂英文切分结果的二次切分:可以保留原组合,同时可以避免复杂切分带来的检索命中率下降的情况,例如QQ2013会被切分成: qq2013/ qq/ 2013,chenxin619315@gmail.com会被切分成:chenxin619315@gmail.com/ chenxin/ 619315/ gmail/ com。
支持阿拉伯数字/小数/中文数字基本单字单位的识别,例如2012年,1.75米,38.6℃,五折,并且 Jcseg 会将其转换为“5折”加入分词结果中。
智能圆角半角, 英文大小写转换。
特殊字母识别:例如:Ⅰ,Ⅱ;特殊数字识别:例如:①,⑩。
配对标点内容提取:例如:最好的 Java 书《java编程思想》,‘畅想杯黑客技术大赛’,被《,‘,“,『标点标记的内容。(1.6.8版开始支持)。
智能中文人名/外文翻译人名识别。中文人名识别正确率达 94% 以上。(中文人名可以维护 lex-lname.lex,lex-dname-1.lex,lex-dname-2.lex 来提高准确率),(引入规则和词性后会达到 98% 以上的识别正确率)。
自动中英文停止词过滤功能(需要在 jcseg.properties 中开启该选项,lex-stopwords.lex 为停止词词库)。
词库更新自动加载功能, 开启一个守护线程定时的检测词库的更新并且加载。
自动词性标注(目前基于词库)。
自动实体的识别,默认支持:电子邮件,网址,大陆手机号码,地名,人名,货币等;词库中可以自定义各种实体并且再切分中返回。
终端测试:
cd 到 Jcseg 根目录。
ant all(或者使用 maven 编译)
运行:java -jar jcseg-core-{version}.jar
你将看到如下的终端界面
在光标处输入文本开始测试
+--------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
Jcseg function 最大匹配长度. (5-7) jcseg.maxlen = 4 认出了中国人的名字.(1 to open and 0 to close it) jcseg.icnname = 1 对标点符号文本的最大长度。 jcseg.pptmaxlen = 7 中文姓氏的最大长度 jcseg.cnmaxlnadron = 1 是否清除停止语。.(set 1 to clear stop
今天给大家介绍一下 Jcseg 分词 首先我先来 让大家跑通一个程序然后大家在慢慢研究 步骤如下 1、解压这个jar包 , jcseg-1.9.4-src-jar-dict.zip 下载路径:http://download.csdn.net/detail/u010310183/8041677 2、自己建立个项目 1) 首先创建一个 config 文件夹 , 文件夹下 创
Jcseg是使用Java开发的一款开源的中文分词器, 基于流行的mmseg算法实现,分词准确率高达98.4%, 支持中文人名识别, 同义词匹配, 停止词过滤等。并且提供了最新版本的lucene,solr,elasticsearch分词接口。 <jcseg.version>1.9.5</jcseg.version> <dependency> <groupId
Lucene 5.2.1 + jcseg 1.9.6中文分词索引(Lucene 学习序列2) jcseg是使用Java开发的一个开源的中文分词器,使用流行的mmseg算法实现。是一款独立的分词组件,不是针对lucene而开发,但是提供了最新版本的lucene和solr分词接口。 Java Code <span style="font-size:14px;">package
前段时间,我在公司接到一项任务,大概功能需求模型如下:比如给一系列字符串,其中包含地区的行政代码、机器ID、机器类型ID、操作人员编号ID等大部分都是一连串的数字。这些信息使用“-”或者“/”分割开,但是这些信息出现的前后顺序是不一定的。 刚领到任务,我连jcesg是什么都没听说过。后来大概看了看有点明白了,尤其是看了jcseg的官方文档N多遍之后。下面我谈谈我的实现思路: Step1
为了解决什么问题 假设字段name包含行政区名字,比如河北省,河北,使用complex模式: name:河北,此时搜索不到包含河北省的结果 name:河北省,此时搜索不到只包含河北的结果 虽然这两个词都在词库中,但是complex模式不会对这个词进行二次切分。 解决方案 使用search模式,对字段进行二次切分 使用complex模式,查询时使用*通配符 以上两种方式效率上都有些影响效率 比较折中
原文地址:这里写链接内容 摘要: 选手:IKanalyzer、ansj_seg、jcseg 硬件:i5-3470 3.2GHz 8GB win7 x64 比赛项目:1、搜索;2、自然语言分析 选手介绍: 1,IKanalyzer IKanalyzer采用的是“正向迭代最细粒度切分算法”,是比较常见而且很容易上手的分词器了。一般新手上路学习lucene或者solr都会用这个。优点是开源(其实
在部署Solr时,启动Tomccat 遇到如下问题: <span style="font-size:14px;">log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. java.io.IOException: Invalid sub lexicon path /java/JavaSE/
Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同时提供了最新版本的lucene,solr和elasticsearch的分词接口! Jcseg 2.4.0更新如下: 1,修复时间组合实体识别的bug,有时候会出现错误组合的情况。 2,优化NLP模式的
Genius Genius是一个开源的python中文分词组件,采用 CRF(Conditional Random Field)条件随机场算法。 Feature 支持python2.x、python3.x以及pypy2.x。 支持简单的pinyin分词 支持用户自定义break 支持用户自定义合并词典 支持词性标注 Source Install 安装git: 1) ubuntu or debian
介绍 现阶段,应用于搜索引擎和自然语言处理的中文分词库五花八门,使用方式各不统一,虽然有适配于Lucene和Elasticsearch的插件,但是我们想在多个库之间选择更换时,依旧有学习时间。 Hutool针对常见中文分词库做了统一接口封装,既定义一套规范,隔离各个库的差异,做到一段代码,随意更换。 Hutool现在封装的引擎有: Ansj HanLP IKAnalyzer Jcseg Jieba
本文向大家介绍PHPAnalysis中文分词类详解,包括了PHPAnalysis中文分词类详解的使用技巧和注意事项,需要的朋友参考一下 PHPAnalysis是目前广泛使用的中文分词类,使用反向匹配模式分词,因此兼容编码更广泛,现将其变量与常用函数详解如下: 一、比较重要的成员变量 $resultType = 1 生成的分词结果数据类型(1 为全部, 2为 词典词汇及单个中日韩简
中文分词是怎么走到今天的 话说上个世纪,中文自动分词还处于初级阶段,每句话都要到汉语词表中查找,有没有这个词?有没有这个词?所以研究集中在:怎么查找最快、最全、最准、最狠......,所以就出现了正向最大匹配法、逆向最大匹配法、双向扫描法、助词遍历法......,用新世纪比较流行的一个词来形容就是:你太low了! 中文自动分词最难的两个问题:1)歧义消除;2)未登陆词识别。说句公道话,没有上个世纪
关于中文分词的详细配置实例和分词词典的自定义设置,可以访问Coreseek网站中文分词核心配置查看。 核心配置: charset_dictpath = /usr/local/mmseg3/etc/ charset_type = zh_cn.utf-8 #charset_table = .................... #需将原有的该配置注释掉 ngram_le
我想从数据帧中的文本中提取特定的单词。这些单词我已经输入到字典的列表中,它们属于某些类别(键)。由此,我想创建与存储单词的类别相对应的列。和往常一样,最好用例子来说明: 我有一个数据框: 它创建表: 还有一本我想从中提取的分类词词典。这些单词都是没有符号的自然语言单词,可以包括短语,例如本例中的“alloy wheels”(这不一定是字典,我只是觉得这是最好的方法): 根据这个,我想创建一个如下所
我已经重新安排并定制了Eclipse布局,使其符合我的喜好。但是每当我打开一个java源文件时,它都会在带有Package Explorer和Outline的框中打开,而不是在左边我想要的大框中(参见屏幕截图)。我怎样才能改变这个?
我一直在尝试用java编写一个简单的词法分析器。 File Token.java如下: Lexer如下:Lexer。JAVA 并且可以用Try.java测试如下: 说出输入。txt有 我期望的输出是 但我面临的问题是:它把每个数字都当作 而且它不能识别实数。我得到: 意外符号:'.' 为了达到预期的效果,需要做哪些改变?