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

本贴最后更新于 3092 天前,其中的信息可能已经时移俗易

在逐渐步入 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%。

【微博数据】
微博数据用词多样、话题广泛,并常包含错别字及网络流行词。能够比较全面的体现每家分词系统的准确度。

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

【餐饮点评】
餐饮点评数据为顾客评论数据,更偏重口语化。会出现很多类似“闺蜜”、“萌萌哒”口语化词语和很多不规范的表达,使分词更加困难。

各家系统对于多数简单规范的文本的分词已经达到很高的水平。但在仔细对比每一家中文分词后依旧发现切分歧义词和未登陆词(即未在训练数据中出现的词)仍然是影响分词准确度的两大“拦路虎”。
1.切分歧义:根据测试数据的切分结果,一类属于机器形式的歧义,在真实语言环境下,只有唯一可能的正确切分结果,称其为伪歧义。另一类有两种以上可实现的切分结果,称为真歧义。由于真歧义数据无法比较正确或者错误。所有我们着重举例来比较各家系统对伪歧义的处理效果。

示例中原意指伦敦奥运会可能有一位沙特阿拉伯的女子,错误分词的意思是指上将(军衔)中有一位是沙特阿拉伯的女子,句意截然不同。当然,分析的层次越深,机器对知识库质量、规模等的依赖性就越强,所需要的时间、空间代价也就越大。
2.未登录词:未登录词大致包含三大类:
a)新涌现的通用词:类似“神马”、“纳尼”、“甩卖”、“玫瑰金”等新思想、新事物所带来的新词汇,不管是文化的、政治的、还是经济的,在人们的生活中不断涌现。同时很多词语也具有一定的时效性。
b)专业术语:是相对日常用语而言的,一般指的某一行业各种名称用语,大多数情况为该领域的专业人士所熟知。这种未登录词理论上是可预期的。能够人工预先添加到词表中(但这也只是理想状态,在真实环境下并不易做到)。
c)专有名词:如中国人名、外国译名、地名、公司名等。这种词语很多基本上不可通过词典覆盖,考验分词系统的新词识别能力。

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

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

当然在分词准确度可以接受的情况下,很多细节问题,包括是否有出错情况、是否支持各种字符、是否标注词性等都可能让我们望而却步。在分词颗粒度选择当中,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
  • 自然语言处理

    自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。

    15 引用 • 10 回帖 • 2 关注
  • 分词引擎
    1 引用 • 1 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • abitmean

    有点意思就行了

    23 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 462 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    198 引用 • 120 回帖
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    35 引用 • 35 回帖
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    131 引用 • 1114 回帖 • 151 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 179 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 619 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 113 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 610 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 3 关注
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 692 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    205 引用 • 357 回帖
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 27 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 4 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 686 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 1 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    18726 引用 • 69947 回帖
  • Sillot

    Sillot (汐洛)孵化自思源笔记,致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点
    Github 地址:https://github.com/Hi-Windom/Sillot

    16 引用 • 6 回帖 • 28 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    161 引用 • 473 回帖
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 291 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    170 引用 • 414 回帖 • 429 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 54 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    7 引用 • 26 回帖 • 3 关注