简单的中文分词算法

浏览: 3015

书籍简介

本书是一本研究汉语自然语言处理方面的基础性、综合性书籍,涉及NLP的语言理论、算法和工程实践的方方面面,内容繁杂。

本书包括NLP的语言理论部分、算法部分、案例部分,涉及汉语的发展历史、传统的句法理论、认知语言学理论。需要指出的是,本书是系统介绍认知语言学和算法设计相结合的中文NLP书籍,并从认知语言学的视角重新认识和分析了NLP的句法和语义相结合的数据结构。这也是本书的创新之处。

本书适用于所有想学习NLP的技术人员,包括各大人工智能实验室、软件学院等专业机构。

分词

中文NLP比外文要难,难在第一步就是要将文本进行切词。我们知道中文常用字也就3500左右,但单个的字往往意义不多,对理解句子意思帮助不大。

而且中文词之间没有空格等标识符,这更增加了中文NLP的难度。

NLP第一步,就是从分词开始,目前市面上有ICTCLASS,jieba,HanNLP等,了解其分词算法,对更好的学习编程,使用编程语言处理文本数据大有裨益。汉语(其实也包括其他语言)有两大分词算法,最大匹配算法(MM)和隐马尔可夫算法(HMM)。

最大匹配分词算法

最大匹配分词算法比较简单,学起来一点也不烧脑筋。使用前提是有自己的领域词典。最早是由苏联汉俄翻译学者提出(文科生诶),简称MM(The Maximum Method),基本思想:

有一待处理字符串str1,假设已有词典中的最长词条字符长度为a,取被处理字符串(str1),从中截取出a长度的字符串记做str2,将str2与词典中词条一一匹配,如果词典中有str2,那么str2从str1中切分出来,作为一个词。

如果词典中没有str2,那么从str1中截取a-1长度的字符串记做str3,还是进行上面的匹配步骤,如果str3在词典中,str3作为一个词,反之,继续缩短字符串长度。

直到切分成功为止。即完成一轮匹配,并切出一词。

小案例

上面说的有点绕口,还是举个简单的例子看看。

例如,现有短语“计算机科学和工程”,假设词典中最长词为7,于是先取“计算机科学和工”为匹配字段,来匹配词典,由于词典中没有改词,故匹配失败;

去掉最后一个汉字成为“计算机科学和”作为新的匹配字段,重新匹配词典,同样匹配失败;

取“计算机科学”作为新字段,由于词典中有“计算机科学”一词,从而匹配成功,切出的第一个词为“计算机科学”。

以此类推,直至切分出第二、第三。。。个词

分析总结

使用MM方法切分精度不高,实际应用意义不大。随着语料的增多,误差也逐渐变大。

基于MM的搜索方法还存在局限性,比如正向最大匹配,因为只能正向的找出最长词,而不能找出所有的候选词条。因此,后来发展出了双向扫描法,从两方向对字符串进行匹配,以尽可能多的生成候选词条,增强分词效果。

但因为没有考虑词汇上下文相关性,分词精度还是不高。

基于正向最大匹配算法的分词器准确率为78%;

基于双向匹配算法最高精度也只在80%左右徘徊。显然这不能满足高精度文本处理需求

隐马尔可夫算法

基于MM算法分词器没有得到广泛的应用,但是却揭示了一个语言规律:一个词汇的出现往往与其上下文环境中出现的词汇序列存在者紧密联系。

所谓上下文相关性是指,文中第n个词的出现与其前后n-m到n+m个词有高度的相关性,而这个敢为之外的其他词相关性较低,我们把[-m,m]范围叫做窗口范围。

为了将分析简单化,我们只考虑单侧情况。文本中第n个词出现与其前面的i-n个词相关(0<n<i),而不考虑窗口范围之外的其他词的相关性。

手写.png

将语言模型应用到中文分词中,效率和准确性大大提高。ICTCLASS就采用类似的算法,准确率已达到98%,从此,中文文本处理才变为可能。

更多内容

文本分析

python居然有情感??真的吗??

文本分析之网络关系

中文分词-jieba库知识大全

自然语言处理库之snowNLP

用gensim库做文本相似性分析

基于共现发现人物关系的python实现

用python计算两文档相似度

数据分析

酷炫的matplotlib

文本分析之网络关系

pandas库读取csv文件

如何对csv文件中的文本数据进行分析处理

用词云图解读“于欢案”

神奇的python

初识Python的GUI编程

Python实现文字转语音功能

怜香惜玉,我用python帮助办公室文秘

逆天的量化交易分析库-tushare

开扒皮自己微信的秘密

8行代码实现微信聊天机器人

使用Python登录QQ邮箱发送QQ邮件

爬虫

爬虫实战视频专辑

抓取单博主的所有微博及其评论

【视频】手把手教你抓美女~

当爬虫遭遇验证码,怎么办

【视频】于欢案之网民的意见(1)?

【视频】有了selenium,小白也可以自豪的说:“去TMD的抓包、cookie”

【视频】快来get新技能--抓包+cookie,爬微博不再是梦

【视频教程】用python批量抓取简书用户信息

爬豆瓣电影名的小案例(附视频操作)

爬豆瓣电影名的小案例2(附视频操作)

用Python抓取百度地图里的店名,地址和联系方式

推荐 0
本文由 邓旭东HIT 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册