一、Macropodus简介

Macropodus自然语言处理工具(Albert+BiLSTM+CRF) 拥有中文分词 命名实体识别 新词发现 关键词 文本摘要 计算器 中文

数字阿拉伯数字转换等算法,其中,中文分词无疑是最最重要的,对于一个通用的自然语言处理工具来说。

github地址: https://github.com/yongzhuo/Macropodus

二、 中文分词概述

中文分词,是东亚地区自然语言处理NLP所独有的一个任务,包括CJKV(中日韩越统一表意文字),即Unicode编码。这

是一种有别于字母文字(语言以空格间隔)的分词方法。这是汉文化圈独有的自然语言,人类智慧的结晶。当然,这种高级的语

言也带了高难度的挑战,那就是分词的挑战。

不同于英文等语言,中文分词的难点在于 :

1、中文分词标准不统一(主要是粒度,例如"/姜嫄嫄/","/姜/嫄嫄/");

2、未登录问题(即新词,如网络新词"给力","坑爹", "盘它"等);

3、歧义问题(如句子"民可使由之不可使知之")

4、复合词的识别(限定量词,重叠词,派生词,例如"一个个", "范范范玮琪", "上班族", "气功热")

5、专有名词的识别(例如"哈工大SCIR实验室")

从某种意义上说,标点符号未被创造前,中国古代的"断句","句读"也是一种广义上的分词,或者更说是分句。那么,这一

延续了五千多年的难题,在新时代,信息时代,互联网时代,尤其是移动互联网时代、人工智能时代,有了怎样的进展呢,下面

我们一一道来。

三、 分词方法大全

1.自我感触

从80年代末九十年代电脑走进千家万户,尤其是互联网的迅猛发展,中文分词算法也得以快速发展。第一次接触中文分词算法,是在使用Java版全文检索引擎Lence的时候。当时感觉到内置的CJKAnalyzer算法很不错。记忆中,印象中最深刻的开分词算法,无疑是IKAnalyzer了,准确,轻量,高效,当时就为这个算法深深所吸引。这种机械式分词,让我感受到的是,工业时代那摧毁一切的神秘力量。

后来又慢慢接触了ansj和HanLP,深深为其所着迷。其强大的性能,以及无与伦比的用户体验,让我感受到了开源运动的强大魅力。传统机器学习的有监督算法散发出强大的力量,由于其超高的准确率和新词发现效能,开始统治江湖,透露出无与伦比的统治力量。

深度学习兴起以后,python火了,其高效、简洁的编程思想深深震撼了我,这时候我又接触到了Jieba、snownlp等,查看他们的原理,我不禁感慨万千。近年来,开源社区迅猛发展,THULAC-Python, pkuseg-python, Jiagu, Jiayan, Macropodus等优秀开源NLP工具不断涌现,带给我们的不只感动,还有不断踏上新征程的信息。

近些年来,大数据与云计算的发展,百度、阿里、腾讯、搜狗等互联网企业;哈工大、复旦大学、清华北大等院校科研机构;更是把分词、词性标注、实体识别等通用NLP任务做成微服务,就像蓄水池一样,提供线上流量计算。

新时代新发展新征程,我感觉十分有必要,回顾一下中文分词的发展历程,只有铭记历史,我们才能更好地引领未来。

2.中文分词历史

历史早已久远,很多也找不到资料,我们只能从别人的历史回顾、中文分词比赛、里程碑式论文等,探究那不为人知的历史进程。

自然语言处理是人工智能的终极目标之一,二十世纪以前,中文分词还是传统规则分词的天下。必须指出的是,中文分词是随着电子技术的发展而发展起来的,尤其是文本翻译(中外翻译)、电脑录入(拼音输入法)、搜索引擎等的推动作用。自动化是解放劳动力的、提高劳动生产效率的必由之路。人们一直希望能够让机器达到自动翻译、自动搜索检索的目标,达到这些目标的关键点在于理解词义、语义等,其中最基础的便是分词,划分出中文的基本单元之一。中文分词是如此基本和基础的任务,以致于人们很早就开始研究它们。在二十一世纪以前,东北亚地区的人们逐渐总结出了一套有效的分词方法。

第一种流派是字符串匹配派,纯字典式的,基于词典的高效分词方法,也称机械分词方法,诸如”反向切词”、”正向切词”、 “近邻匹配算法”、“双向切词”、”最大切词”、“最小切词”、“最短路径匹配算法”、“最大最小切词”等。这一大批高效、准确的机械分词方法实质就是字符串匹配。构建一个好的词库,优化工程,准确率便能达到70%-80%。必须要需要指出的是,这个流派的集大成者是mmseg4J算法,论文《Word Identification_For_Mandarin Chinese Sentences》,1992年论文中总结的6条规律,歧义消除的成功率可以达到99.77%,至今仍然被广泛使用。

第二种流派是传统统计学派,这里的统计学派指的是狭义上的统计学派。基于统计学的分词方法一般也需要海量的中文语料库,统计挖掘语言的统计信息,结合构建语言模型来分词,如”N-Gram信息”。统计是非常有必要的,是数据挖掘的重要基石。该流派最出名的算法要数”最大概率分词算法”了,在一个大的语料库中,成词的字共同出现的概率是比较大的,这也是新词发现的理论基础。

利用N-Gram和马尔可夫链原理,当前词的出现只与其前一个词出现有关,所以一个句子分词的概率就等于句中各个词语出现概率的乘积。利用这一思想,python语言编写的jieba中的最大概率分词方法,结合字典和动态规划,开发出史上最成功的中文分词算法,github上star超过20k。

第三个流派是传统机器学习派, 机器学习,有监督的学习。2002年第一篇字标注中文分词论文《Combining Classifiers for Chinese Word Segmentation》的发表,标志着机器学习在分词领域中得到应用。随后2003年的论文《Chinese Word Segmentation as LMR Tagging》,使用最大熵训练的字标注分词算法,在Bakeoff2003的测评中,OOV召回率取得了最好成绩,由此,字标注的方法开始得到重视,并迅速催生到ME、SVM、CRF和特征抽取的比拼上,其影响延续至今。

其中,近来喧嚣一时的LTP、THULAC和pkuseg,使用的便是特征提取+CRF方案。

第四个流派是深度学习派,该派别也是多使用有监督的学习方案,主张引入更多的外部信息(如字/词/句embedding、外部字典),以达到更好的分词效果。在Bakeoff开放测试效果已经超出了传统机器学习方法。近来的热点,如多标准语料协同训练(如pku数据集和msra数据集),多任务联合训练(如分词和词性标注),前景更是不可估量。现在多用得比较多的网络架构还是Embedding + BI-LSTM+CRF等,如万年老版本0.39的Jieba加入了paddlepaddle深度学习框架的双向GRU分词模型,HanLP也全部转python,上线了BERT等embedding的各种模型(tensorflow=2.1.0),展露头角的Jiagu是基于tensorflow1.5和BiLSTM。

第五个流派是语义理解派,该派别认为要从句法分析、语义理解的基础上进行分词,如文法、依存句法等。不过似乎历史上并没有做出很大的成果,由于系统复杂,效果不佳,暂时没有了声音。近年来的联合训练,倒是可以勉强划分部分进入这个派别。

四、 Macropodus分词实践简述

中文分词CWS:

1.  使用Embedding(char,word,albert) + BiLSTM + CRF网络架构(或单独BiLSTM, 单独CRF)

2.  使用4标注法BMES,使用人民日报199801语料训练

结论: acc等只能达到80%,甚至不如词典分词,原因未知(可能是语料不足,无规律性的上下文信息)

词性标注POS:

1.  使用Embedding(char, albert) + BiLSTM + CRF词性标注

2.  使用3标注法BIO,使用人民日报199801语料训练

结论: acc等只能达到97%左右,效果还可以,应该是有上下文的原因

命名实体提取NER:

1.  使用Embedding(char, albert) + BiLSTM + CRF词性标注

2.  使用3标注法BIO,使用人民日报199801语料训练

结论: acc等只能达到97%左右,效果还可以,应该是有上下文的原因

希望对你有所帮助!

Macropodus中文分词方法综述详解(CWS, chinese word segment)相关推荐

  1. 中文分词之HMM详解

    原文链接:中文分词之HMM详解 关于HMM模型的介绍,网上的资料已经烂大街,但是大部分都是在背书背公式,本文在此针对HMM模型在中文分词中的应用,讲讲实现原理. 尽可能的撇开公式,撇开推导.结合实际开 ...

  2. Elasticsearch 多语言及中文分词与检索详解

    文章目录 1. 自然语言与查询 Recall 2. 混合多语言的挑战 3. 分词的挑战 4. 中文分词方法的演变 - 字典法 5. 中文分词方法的演变 - 基于统计法的机器学习算法 6. 中文分词器现 ...

  3. [Pytorch系列-61]:循环神经网络 - 中文新闻文本分类详解-3-CNN网络训练与评估代码详解

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  4. [Pytorch系列-60]:循环神经网络 - 中文新闻文本分类详解-2-LSTM网络训练与评估代码详解

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  5. java中文字符怎么保证出现正确_JAVA中文字符编码问题详解

    JAVA中文字符编码问题详解 JAVA的中文字符乱码问题一直很让人头疼.特别是在WEB应用中.网上的分析文章和解决方案都很多,但总是针对某些特定情况的.很多次遇到乱码问题后,经过极为辛苦的调试和搜索资 ...

  6. python中列表的sort方法_python中列表的sort方法使用详解

    内容简介:python中列表的sort方法使用详解 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的. 排序,数字.字符 ...

  7. (best!)JAVA中文字符编码问题详解

    转载自:http://blog.csdn.net/youyue/article/details/4580402 JAVA中文字符编码问题详解 JAVA的中文字符乱码问题一直很让人头疼.特别是在WEB应 ...

  8. unturned服务器配置文件,《Unturned》使用Bottle开3.0服务器方法图文详解

    <Unturned>使用Bottle开3.0服务器方法图文详解 2015-02-03 17:04:07来源:贴吧编辑:评论(0) <Unturned>游戏中玩家们可以联机作战, ...

  9. JAVA中文字符编码问题详解

    JAVA中文字符编码问题详解 JAVA的中文字符乱码问题一直很让人头疼.特别是在WEB应用中.网上的分析文章和解决方案都很多,但总是针对某些特定情况的.很多次遇到乱码问题后,经过极为辛苦的调试和搜索资 ...

最新文章

  1. GNU make 和 makefile
  2. 个人易遗忘的代码记录
  3. 【Demo 0121】纯资源DLL中提取资源
  4. mysql数据库备份及恢复命令mysqldump,source的用法
  5. 各纬度气候分布图_欧洲气候特征:以温带气候类型为主,是海洋性气候最显著的大洲...
  6. 优化JS代码的34种方法(上)
  7. 汇编语言实现led灯的跑马灯
  8. C#编程(十九)----------部分类
  9. aauto的listview(类似于C#的datagrid) 支持文件拖拽获取名单
  10. 大学生 计算机 毕业设计 xx管理系统 毕设(1)
  11. http和https协议下,http可以正常下载,但是https却不能
  12. Python AutoCAD 选择集
  13. 天地图显示不全的问题
  14. 假货泛滥是淘宝的毒瘤
  15. 鸿蒙系统吹了多少年了还没出,实话实说,在鸿蒙系统上,余承东吹了几次牛都没实现 - 区块网...
  16. 【zz】陈硕:当析构函数遇到多线程──C++ 中线程安全的对象回调
  17. 「MoreThanJava」一文了解二进制和CPU工作原理
  18. 软件测试理论与经验--阅读笔记
  19. Qt编写可视化大屏电子看板系统21-数据转曲线
  20. SSM+公寓管理系统 毕业设计-附源码171958

热门文章

  1. php盒子模型,CSS 盒子模型
  2. 黑马程序员C++ 第一阶段 C++基础语法入门
  3. PostgreSQL的generate_series的函数应用
  4. .NET开发工程师自我评价简历范文
  5. 从硬件到软件,教你从零搭建智慧农业大脑
  6. FFMPEG 使用显卡加速转码
  7. 现代笑话二则:1、美女与帅哥;2、恐龙与王子。
  8. PHP5.2连接微软SQL Server2008数据库
  9. 右下角弹窗广告彻底关闭
  10. 设计网站服务器端的硬件配置,2016 服务器硬件配置方案.doc