六年以前,第一个中文分词系统的发明人郝玺龙先生对我讲,中文分词是个伪问题。当时NLP刚入门的我完全听不懂。

最近试用了一下BERT,做了个简单的文本分类。以前做这类任务的方法都是先分词,然后把词向量化,在向量上跑各种分类模型。但是只要一分词就引入了误差,在不定制词典的前提下,分词系统本身的准确率只能做到90%。在这个基础上做向量做分类,就是个误差逐步积累的过程,最终结果可想而知。

刚开始的时候,考虑直接用LSTM。就像在唇语识别任务中一样,后来考虑到语料太少,LSTM提取不到完全的特征,效果无法保证,必须引入基于大量语料的预训练层,才能达到好的效果。当即想到了最近风头正盛的BERT。看了下git上的BERT项目,刚好有分类的例子,动手略做改造,加载自己的语料就搞成了。用下载的预训练中文模型一跑,PR都在98%以上,这是传统方法不可能达到的指标。

这个结果确实很惊艳,不仅仅是指标如此之好,而且过程也如此简单,如此一来可能一大票NLP工程师都要失业了,什么分词、向量化、镶嵌、主题模型等等邪术都该丢到垃圾堆去了。BERT的原理既有原始论文可查,也有一大票介绍文章,我就不赘述了。与传统方法不同,BERT中文模型的tokenization是基于单个字的。

这个表包含字母、数字、英文、符号和中文,其中的中文都是单字。训练模型的时候console打出来的tokenization结果也都是单字。这个事实证明了,基于字的中文NLP任务可以得到比基于词更好的结果。其实仔细想想也容易明白,中文中的构词是一种序列上的低级特征,很容易被带记忆的卷积网络提取到。只要语料足够大,用RCNN很容易拟合到构词规律,不仅能拟合大的规律,而且对于各种特例代表的小范围规律尤其有效,表现能力远远强于传统分词使用的隐马模型及其各种变形。可以说分词算法已经内置在BERT的前几层参数里了,就如同边缘检测算法已经内置在YOLO的前几层参数中一样。

那么为什么我们还要分词呢?分词其实是特定历史条件下的无奈之举。一方面因为NLP最初是以美国为主的英语国家中发展起来的,早期的研究成果都是基于英文的,而中文的词与英文的基本单位word有更好的对应关系。中文与英文的一个基本差异在于,中文的基本构成单位是字,每个字都是独立的意义单元;而英文的基本单位是字母,字母不是意义单元,只用来拼写,完全没有意义,只有词才是独立的意义单元。中文在古代,基本上是严格的一字一意,要表达新的含义就要造新的字出来,这种表意方法在古代语义系统较为简单固定,变化不大,并且抽象程度不高的环境下是可行的,因为新字及其各组成部分基本是象形的,可以观其形而知意,并且总字数不算太多,记忆负担不大。然而到了后来,新概念越来越多,语言变化越来越快,这种靠造新字扩展语言含义的办法就行不通了,中文逐渐发展成单字和多字词混合表意的系统特别是近现代,已经发展成以双字词为主要语义单元的系统。所以大多数中文使用者都直观感觉到中文的词而不是字,是英文中word的对应之物。最早一批中文NLP研究者,为了能够借用基于英文的NLP早期研究成果,就需要以词为单位对中文进行处理,然而中文的书写传统是基于字的,词并没有明显的边界,于是就产生了分词的需求。分词带来的一个额外的好处是,把语言处理这样的复杂问题分层,从而简化了每层复杂度;把语言的处理单位减少了,于是起到了一定程度上节省算力的效果,这在之前理论不足、计算资源昂贵的年代是颇具实用价值的。

然而到了今天,中文分词还有存在的必要吗?我认为虽不说完全没有,但是也在逐渐降低,迟早会消失。深度学习直接把短程特征和长程特征一并处理了,并不需要再在中间划一条界线,算力也已经充足到不用刻意节约的程度。如果说今天还有什么需要分词的场合,那大概是那些要复用传统模型和程序的地方吧,也就是某些legacy system。

回想六年前,没有BERT,没有GPT,没有LSTM,甚至RCNN也没有在语言问题中使用的案例,在那种情况下,郝玺龙先生,作为中文分词方法的发明人,提出那样的观点,可以说是超越时代的。郝先生是引领我入门NLP的导师,也是海云数据的天使投资人,是我生命中的恩人。


关于郝先生是否是第一个中文分词系统发明人,有朋友提出异议,这里一并贴出,供参考。

中文分词国内最早是在语言学院做的,Verity的东北亚语言分词,日韩中,是和语言学院合作的,时间是95-97年。

verity后来卖给了Autonomy,国内早期网站搜狐、找到啦、和讯、Chinabyte等都是用这个产品,当时美国人没有做双字节版本,委托OMRON(以前的东家)做亚洲本土化。

中文分词是一个伪命题相关推荐

  1. 中文表示什么_中文分词是个伪问题

    六年以前,第一个中文分词系统的发明人郝玺龙先生对我讲,中文分词是个伪问题.当时NLP刚入门的我完全听不懂. 最近试用了一下BERT,做了个简单的文本分类.以前做这类任务的方法都是先分词,然后把词向量化 ...

  2. FreeBSD 9.1安装KMS 这是一个伪命题###### ,9....

    FreeBSD 9.1安装KMS 这是一个伪命题###### ,9.1的内核已经加入了KMS内核支持 需要更新ports中的xorg到打了补丁的版本,无意中发现了一个pkg源,这个事也搞定了 free ...

  3. php自定义中文分词方法,一个用PHP写的中文分词函数_php

    class Segmentation { var $options = array('lowercase' => TRUE, 'segment_english' => FALSE); va ...

  4. 含有一个量词的命题的否命题_火影手游:普通玩家如何“快速”升战力?这本身就是一个伪命题!...

    火影忍者手游里如何快速提升战力,这应该是很多新手玩家遇到的一个问题,但很可惜,想要"快速"提升战力,还真没有太好的办法,除非你氪金,而且是大量的氪金才能够称得上"快速&q ...

  5. 三调成果共享服务平台算不算一个伪命题

    2020年作为"十三五"收官之年,国土"三调"工作全面完成:各地又开始筹划三调成果管理与共享服务的事情了. 这不,在前不久刚结束的"2021年全国自然 ...

  6. 含有一个量词的命题的否命题_“换壳车”到底是好是坏?或许这只是一个“伪命题”。...

    相信很多人在翻看汽车类相关的文章时,总能看见"换壳"一次.例如"XXX车再推换壳车""豪华车换壳值不值得买"等等.那这种"换壳&q ...

  7. 全文检索lucene中文分词的一些总结

    为什么80%的码农都做不了架构师?>>>    全文检索几乎是所有内容管理系统软件(CMS)必备的功能,在对公司的CMS产品的开发维护过程中,全文检索始终是客户重点关注的模块,为满足 ...

  8. sphinx+coreseek创建中文分词索引

    2019独角兽企业重金招聘Python工程师标准>>> 一:安装sphinx步骤如下: 下载sphinx最新的2.2.11版本 cd /opt/sphinx wget 下载地址 ta ...

  9. 同一个事务里面对同一条数据做2次修改_要我说,多线程事务它必须就是个伪命题!

    这是why技术的第 74 篇原创文章 别问,问就是不行 分布式事务你应该是知道的.但是这个多线程事务...... 没事,我慢慢给你说. 如图所示,有个小伙伴想要实现多线程事务. 这个需求其实我在不同的 ...

最新文章

  1. pandas对dataframe的数据列进行随机抽样(Random Sample of Columns):使用sample函数进行数据列随机抽样(有放回的随机抽样,replacement)
  2. Ethernet/IP 学习笔记四
  3. CentOS 7下安装jdk1.8
  4. git show HEAD^num和个git show HEAD~num的区别
  5. Qt 给控件QLineEdit添加clicked事件方法
  6. HTML5新增的视频元素与音频元素
  7. 电源大师课笔记 2.8
  8. 在Eclipse中安装Maven插件
  9. JS实现div随鼠标移动练习
  10. Postman,Insomnia用户登录请求验证码错误的原因
  11. mysql高级查询之性能分析explain和日志查看
  12. c语言小游戏——弹跳的小球和简单的飞机游戏
  13. 直播回顾 | 阿拉丁带你探秘未来文旅新生态
  14. dht11 python mysql,通过python脚本将arduino传感器数据发送到mysql数据库时出现问题
  15. SSM 博客系统开发实战
  16. 清华规划院 伟景行 诚聘 Jsp/Java/Web高级开发工程师 互联网开发主管 测试工程师 etc.
  17. 一个Html页面给另一个html页面传值(或B.html页面调用A.html的参数)
  18. 【新华三】网络工程师 H3C设备-如何配置单臂路由,实现不同网段通信?来来来~轻松掌握单臂路由技术原理!
  19. excel另存为csv格式时修改默认分隔符
  20. 地址线,数据线,控制总线

热门文章

  1. Linux下制作bin文件,并对其进行截取、合并、修改
  2. #SORA#celery研究笔记
  3. Java6、7章总结复习
  4. mysql4.0事务_聊一聊 MySQL 中的事务及其实现原理
  5. 树形控件--zTree 很好很强大
  6. 什么是阻性负载?感性负载?容性负载?(图)
  7. 计算机计算器logo,计算器品牌哪个比较好(卡西欧stylish计算器入手体验)
  8. 创客教育中的三大空间分解论
  9. 搞一下CP AUTOSAR 入门 | 07 CP AUTOSAR ComM 详解
  10. javascript判断浏览器