11款开放中文分词引擎大比拼

在逐渐步入DT(Data Technology)时代的今天,自然语义分析技术越发不可或缺。

对于我们每天打交道的中文来说,并没有类似英文空格的边界标志。而理解句子所包括的词语,则是理解汉语语句的第一步。汉语自己主动分词的任务,通俗地说。就是要由机器在文本中的词与词之间自己主动加上空格。

一提到自己主动分词,一般会遇到两种比較典型的质疑。一种质疑是来自外行人的:这件事看上去平庸之极,好像一点儿也不“fancy”,会有什么用呢?还有一种质疑则是来自业内:自己主动分词研究已经进行了数年,而网上也存在各种不同的开放分词系统。但对于实际商用似乎也未见一个“即插即用”的系统。

那么,眼下常见的开放分词引擎,究竟性能怎样呢?为了进行測试,我们调研了11款网上常见的而且公开提供服务的分词系统。包含:

分词的客观量化測试离不开标注数据,即人工所准备的分词“标准答案”。在数据源方面,我们将測试分为:

  1. 新闻数据:140篇。共30517词语。
  2. 微博数据:200篇。共12962词语;
  3. 汽车论坛数据(汽车之家)100篇:共27452词语。
  4. 餐饮点评数据(大众点评):100条。共8295词语。

精确度计算规则:

  1. 将全部标点符号去除,不做比較
  2. 參与測试的部分系统进行了实体识别。可能造成词语认定的不统一。我们将相应位置替换成了人工标注的结果,得到准确率估算的上界。
  3. 经过以上处理,用SIGHAN 分词评分脚本比較得到终于的准确率,召回率和F1值。

以上全部数据採用北大现代汉语基本加工规范对全部数据进行分词作为标准。详细数据下载地址请參见附录。通过这四类数据综合对照不同分词系统的分词精确度。

上图为參与比較的10款分词引擎在不同数据的分词精确度结果。能够看出。在所測试的四个数据集上,BosonNLP和哈工大语言云都取得了较高的分词准确率。尤其在新闻数据上。由于庖丁解牛是将所有可能成词的词语所有扫描出来(比如:“最不惬意”分为:“最不 不满 惬意”),与其它系统输出规范不同。因而不參与准确率统计。

为了更直接的比較不同数据源的区别。我们从每一个数据源的測试数据中抽取比較典型的演示样例进行更直观的对照。

【新闻数据】

新闻数据的特点是用词规整,符合语法规则,也是普遍做得比較不错的一个领域。对照其它数据源,有7家系统都在新闻领域达到最高。包含IKAnalyzer、盘古分词、搜狗分词、新浪云、NLPIR、语言云、BosonNLP。

而且有三家系统准确率超过90%。

例子:香港 中文 大学 将 来 合肥 一中 进行 招生 宣传 今年 在 皖 招 8 人 万家 热线 安徽 第一 门户

【微博数据】

微博数据用词多样、话题广泛,并常包括错别字及网络流行词。可以比較全面的体现每家分词系统的精确度。

例子:补 了 battle 赛 峰暴班 的 两 个 弟弟 妹妹 @杨宝心 @修儿 一个 是 我 非常 挺 的 好 弟弟 一个 是 我 推荐 进 好声音 的 妹子 尽管 都 在 battle 阶段 都 下来 了 可是 我 依旧 像 之前 那样 认为 你们 非常 棒

【汽车论坛】

汽车数据是针对汽车领域的专业评价数据。会出现非常多的专业术语。比如演示样例中的“胎噪”、“风燥”等。假设系统没有足够强大的训练词库或领域优化,会使准确率有较大程度减少。比較有意思的是,对照其它数据源。有3家系统都在汽车论坛领域达到最高:腾讯文智、SCWS中文分词、结巴分词。

例子:舒适性 胎噪 风噪 偏 大 避震 偏 硬 过 坎 弹跳 明显

【餐饮点评】

餐饮点评数据为顾客评论数据。更偏重口语化。

会出现非常多类似“闺蜜”、“萌萌哒”口语化词语和非常多不规范的表达。使分词更加困难。

例子:跟 闺蜜 在 西单 逛街 想 吃 寿司 了 在 西单 没 搜 到 其它 的 日料店 就 来 禾绿 了 我们 俩 都 认为 没 曾经 好 了

各家系统对于多数简单规范的文本的分词已经达到非常高的水平。

但在细致对照每一家中文分词后依然发现切分歧义词和未登陆词(即未在训练数据中出现的词)仍然是影响分词精确度的两大“拦路虎”。

1.切分歧义:依据測试数据的切分结果,一类属于机器形式的歧义。在真实语言环境下,仅仅有唯一可能的正确切分结果,称其为伪歧义。还有一类有两种以上可实现的切分结果,称为真歧义。因为真歧义数据无法比較正确或者错误。

全部我们着重举例来比較各家系统对伪歧义的处理效果。

正确: 在 伦敦 奥运会 上 将 可能 有 一 位 沙特阿拉伯 的 女子

(BosonNLP、新浪云、语言云、NLPIR、腾讯文智)

错误: 在 伦敦 奥运会 上将 可能 有 一 位 沙特阿拉伯 的 女子

(PHP结巴分词、SCWS中文分词、搜狗分词、庖丁解牛)

演示样例中原意指伦敦奥运会可能有一位沙特阿拉伯的女子。错误分词的意思是指上将(军衔)中有一位是沙特阿拉伯的女子,句意截然不同。当然,分析的层次越深,机器对知识库质量、规模等的依赖性就越强,所须要的时间、空间代价也就越大。

2.未登录词:未登录词大致包括三大类:

a)新涌现的通用词:类似“神马”、“纳尼”、“甩卖”、“玫瑰金”等新思想、新事物所带来的新词汇,无论是文化的、政治的、还是经济的。在人们的生活中不断涌现。同一时候非常多词语也具有一定的时效性。

b)专业术语:是相对日经常使用语而言的,一般指的某一行业各种名称用语。大多数情况为该领域的专业人士所熟知。这样的未登录词理论上是可预期的。可以人工预先加入到词表中(但这也仅仅是理想状态,在真实环境下并不易做到)。

c)专有名词:如中国人名、外国译名、地名、公司名等。这样的词语非常多基本上不可通过词典覆盖。考验分词系统的新词识别能力。

【新涌现的通用词或专业术语】

演示样例中的蓝色字包含专业术语:“肚腩”、“腹肌”、“腹直肌”、“腹外斜肌”、“腹横肌”;新涌现的通用词:“人鱼线”、“马甲线”。大多数的系统对于演示样例文本的分词结果都不够理想,比如:“大肚 腩”(SCWS中文分词) “腹 直 肌 腹 外 斜 肌”(搜狗分词、IKAnalyer、NLPIR、SCWS中文分词)、“人 鱼线”(PHP结巴分词)。总的来说这两种类型的数据每家系统都存在一定的缺陷。相对而言哈工大的语言云在这方面表现的较好。

本 季 最 强 家庭 瘦 腰 计划 彻底 告别 大 肚腩 没有 腹肌 的 人生 是 不 完整 的 平面 模特 yanontheway 亲身 示范 的 9 个 动作 彻底 强化腹直肌 腹外斜肌 腹内斜肌 以及
腹横肌 每一个 动作 认真 做 足 50 次 一定 要 坚持 做 完美 的人鱼线 性感 的
马甲线
都 要 我们 自己 去 争取

【专有名词】

演示样例出现的专有名词包含“蒂莫西伊斯顿”(姓名)、“英国”“意大利”“北欧”(地点)、“金斯敦”(机构名)、“伊丽莎白 格林希尔兹”(机构名)。而这样的用词典无法穷尽的专有名词也成为各家分词准确率减少的重要原因。当中搜狗分词、IKAnalyer、PHP结巴分词、腾讯文智、SCWS中文分词在新词识别时较为慎重,常将这类专有名词切分成多个词语。

油画 英国 画家 蒂莫西伊斯顿 唯美 风 油画 timothy easton 毕业 于 英国 金斯敦 艺术 学院 曾 获伊丽莎白 格林希尔兹 基金会 奖 得以 前往
意大利北欧 学习 一 年 的 机会

当然在分词精确度能够接受的情况下。非常多细节问题,包含是否有出错情况、是否支持各种字符、是否标注词性等都可能让我们望而却步。

在分词颗粒度选择其中,BosonNLP、SCWS、盘古分词、结巴分词、庖丁解牛都提供了多种选择。能够依据需求来採用不同的分词粒度。与北大的分词标准对照来说,新浪云默认的分词粒度较大。而搜狗分词、腾讯文智分词粒度相对较小。除此之外,BosonNLP、新浪云、NLPIR、腾讯文智同一时候提供了实体识别、情感分析、新闻分类等其它扩展服务。下表给出了各家系统在应用方面的具体对照。

中文分词是其它中文信息处理的基础,而且在非常多领域都有广泛的应用,包含搜索引擎、机器翻译(MT)、语音合成、自己主动分类、自己主动摘要、自己主动校对等等。

随着非结构化文本的广泛应用,中文分词等文本处理技术也变得越来越重要。通过评測可以看出,部分开放分词系统在不同领域已经达到较高准确率。

对于数据分析处理的从业者,相信在此之上构建数据分析系统、人机交互平台,更可以起到事半功倍的效果。

注意:分词数据准备及评測由BosonNLP完毕。

附录

评測数据地址

http://bosonnlp.com/dev/resource

各家分词系统链接地址

BosonNLP:http://bosonnlp.com/dev/center

IKAnalyzer:http://www.oschina.net/p/ikanalyzer

NLPIR:http://ictclas.nlpir.org/docs

SCWS中文分词:http://www.xunsearch.com/scws/docs.php

结巴分词:https://github.com/fxsjy/jieba

盘古分词:http://pangusegment.codeplex.com/

庖丁解牛:https://code.google.com/p/paoding/

搜狗分词:http://www.sogou.com/labs/webservice/

腾讯文智:

http://www.qcloud.com/wiki/API%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3

新浪云:http://www.sinacloud.com/doc/sae/python/segment.html

语言云:http://www.ltp-cloud.com/document

时间: 2024-08-03 05:53:25

11款开放中文分词引擎大比拼的相关文章

NLP︱中文分词技术小结、几大分词引擎的介绍与比较

笔者想说:觉得英文与中文分词有很大的区别,毕竟中文的表达方式跟英语有很大区别,而且语言组合形式丰富,如果把国外的内容强行搬过来用,不一样是最好的.所以这边看到有几家大牛都在中文分词以及NLP上越走越远.哈工大以及北大的张华平教授(NLPIR)的研究成果非常棒! 但是商业应用的过程中存在的以下的问题: 1.是否先利用开源的分词平台进行分词后,再自己写一些算法进行未登录词.歧义词的识别? 2.或者直接调用下文介绍的分词引擎来进行分词呢?缴费使用固然很棒,但是是否值得? ---------------

几款开源的中文分词系统

中文分词是做好中文内容检索.文本分析的基础,主要应用于搜索引擎与数据挖掘领域.中文是以词为基本语素单位,而词与词之间并不像英语一样有空格来分隔,因而中文分词的难点在于如何准确而又快速地进行分词 以下介绍4款开源中文分词系统. 1.ICTCLAS – 全球最受欢迎的汉语分词系统 中文词法分析是中文信息处理的基础与关键.中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Le

13 款开源的全文检索引擎

http://www.iteye.com/news/27484 1.  Lucene Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检索程序,它提供了完整的查询引擎和索引引擎,没有中文分词引擎,需要自己去实现,因此用Lucene去做一个搜素引擎需要自己去架构.另外它不支持实时搜索,但linkedin和twitter有分别对Lucene改进的实时搜素. 其中Lucene有一个C++移植版本叫CLucene,CLucene因为使用C+

PHP中文分词扩展 SCWS

1.scws简介 SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统). 这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词. 词是中文的最小语素单位,但在书写时并不像英语会在词之间用空格分开, 所以如何准确并快速分词一直是中文分词的攻关难点. SCWS 采用纯 C 语言开发,不依赖任何外部库函数,可直接使用动态链接库嵌入应用程序, 支持的中文编码包括 GBK.UTF-8 等.此外还提供了 PHP 扩

全文检索引擎Solr系列——整合中文分词组件IKAnalyzer

IK Analyzer是一款结合了词典和文法分析算法的中文分词组件,基于字符串匹配,支持用户词典扩展定义,支持细粒度和智能切分,比如: 张三说的确实在理 智能分词的结果是: 张三 | 说的 | 确实 | 在理 最细粒度分词结果: 张三 | 三 | 说的 | 的确 | 的 | 确实 | 实在 | 在理 整合IK Analyzer比mmseg4j要简单很多,下载解压缩IKAnalyzer2012FF_u1.jar放到目录:E:\solr-4.8.0\example\solr-webapp\webap

【Lucene】Apache Lucene全文检索引擎架构之中文分词和高亮显示

前面总结的都是使用Lucene的标准分词器,这是针对英文的,但是中文的话就不顶用了,因为中文的语汇与英文是不同的,所以一般我们开发的时候,有中文的话肯定要使用中文分词了,这一篇博文主要介绍一下如何使用smartcn中文分词器以及对结果的高亮显示. 1. 中文分词 使用中文分词的话,首先到添加中文分词的jar包. <!-- lucene中文分词器 --> <dependency> <groupId>org.apache.lucene</groupId> <

11大Java开源中文分词器的使用方法和分词效果对比

本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那要用的人结合自己的应用场景自己来判断. 11大Java开源中文分词器,不同的分词器有不同的用法,定义的接口也不一样,我们先定义一个统一的接口: /** * 获取文本的所有分词结果, 对比不同分词器结果 * @author 杨尚川 */ public interface WordSegmenter {

Elasticsearch是一个分布式可扩展的实时搜索和分析引擎,elasticsearch安装配置及中文分词

http://fuxiaopang.gitbooks.io/learnelasticsearch/content/  (中文) 在Elasticsearch中,文档术语一种类型(type),各种各样的类型存在于一个索引中.你也可以通过类比传统的关系数据库得到一些大致的相似之处: 关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns) Elasticsearch ⇒ 索引 ⇒ 类型 ⇒ 文档 ⇒ 字段(Fields)一个Elasticsearch集群可以包含多个索引(数据库),也就是说其

(转)Sphinx中文分词安装配置及API调用

这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂时不要选择原版Sphinx(对中文的支持不是很好).又因为服务器所用 MySQL在当时编译时并没有编译Sphinx扩展,而重新编译MySQL并加入Sphinx暂时又无法实现(项目用到了多台服务器,在不影响现有业务的 情况下不可能去重新编译MySQL的),所以采用的是程序通过API来外部调用Sphin