当前位置: 首页 > news >正文

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

相关文章:

  • 程序员入行须知
  • Material Design
  • c++ Map使用
  • 打造终端下mutt收发邮件环境(fbterm,fetchmail,msmtp,procmail,mutt)
  • hosts文件位置
  • jvm调优——eclipse示例
  • 解决boost::asio的WinSock.h has already been included
  • zuul入门(4)zuul的注解@EnableZuulServer和@EnableZuulProxy
  • 《 民办非企业单位许可业务目标文档》
  • Bootstrap图像
  • 将php分页类YII绑定框架,就需要改变风格的基础
  • 我们为什么要了解一下智能家居的技术标准
  • Netflix已经全部迁移到云端
  • grep 信息提取
  • 利用大数据加强医疗保障
  • php的引用
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • canvas 五子棋游戏
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Java读取Properties文件的六种方法
  • Magento 1.x 中文订单打印乱码
  • Shell编程
  • SpingCloudBus整合RabbitMQ
  • 从零搭建Koa2 Server
  • 从零开始学习部署
  • 机器学习中为什么要做归一化normalization
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 坑!为什么View.startAnimation不起作用?
  • 如何使用 JavaScript 解析 URL
  • 温故知新之javascript面向对象
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • Android开发者必备:推荐一款助力开发的开源APP
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (Java)【深基9.例1】选举学生会
  • (poj1.2.1)1970(筛选法模拟)
  • (python)数据结构---字典
  • (SpringBoot)第七章:SpringBoot日志文件
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)PySpark3:SparkSQL编程
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (理论篇)httpmoudle和httphandler一览
  • (四)Linux Shell编程——输入输出重定向
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET CORE Aws S3 使用
  • .NET Core跨平台微服务学习资源
  • .Net IOC框架入门之一 Unity
  • .Net 代码性能 - (1)
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .NET中的十进制浮点类型,徐汇区网站设计
  • @DataRedisTest测试redis从未如此丝滑