最简单的分词算法是在单词层面的最大匹配算法,最大匹配算法又可以分为前向最大匹配和后向最大匹配,二者大致上是类似的,只是在字符的缩减方向上有所差异。

这个算法得到的结果或者说目的是:最终分得的单词个数越少越好,每个单词的字符长度越长越好;

前向最大匹配 (forward-max matching)
无论是哪种分词算法,都需要有预先保存好的单词字典库
比如说我们要对以下一句话进行分词:

我们经常有意见分歧

字典:
[“我们”,“经常”,“有”,“意见”,“有意见”,“分歧”]

设置最大匹配 max_len=5,首先我们可以得到 [ 我们经常有 ],查找字典中没有这个单词,然后从后面依次减少一个字符去查找:

  • [ 我们经常有 ] --> [ 我们经常 ] -->[ 我们经 ] --> [ 我们 ]

字典中有 [我们] 这个单词,就可以把 “我们” 给切分出来了

我们 / 经常有意见分歧

然后我们再看 [ 经常有意见 ] 按照上面的方法依次查找,最后可以得到:

我们 / 经常 / 有意见 / 分歧

可以发现在最大匹配算法下,“有意见” 切分出来后就不会再继续往下切分了,即使字典中存在 “有” 以及 “意见” 两个单词。

在这里,max_len 可以设置为 5~10,或者先扫描一边字典库,得到字符串长度的分布,再自定义设置也可。

后向最大匹配 (backward-max matching)
与前向最大匹配大同小异,同样以上面这一句话的切分为例,后向最大匹配的顺序是:

  • [ 有意见分歧 ] --> [ 意见分歧 ] --> [ 见分歧 ] --> [ 分歧 ]

这句话最后得到的切分结果与前向最大匹配是一样的,90%的情况下,二者的结果是一样的。

最大匹配算法的缺点

  • 基于贪心的角度,所以得到的结果是局部最优解;
  • 效率比较低,依赖于 max_lenmax_len 越大,所要做的扫描线性增长;
  • 这只是在单词层面的划分,没有考虑语义,也就是上下文的信息,比如说这里的 “有意见” 再划分为 “有” 和 “意见” 明显会更好,这也是最大匹配算法最大的不足。

任务2:常用的分词算法 I相关推荐

  1. NPL系列之分词常用原则以及算法(三)

    上一章简单介绍了分词和分词框架的功能以及基本的使用,那么今天说一下分词常用的原则和算法支撑,因为在实际生产环境中,有时候可能需要根据自己的业务对已有的分词进行扩展或者像一些大型互联网的公司基本上都是直 ...

  2. 自然语言处理(NLP)任务中常用的分词工具及底层算法支持

    刚刚和一个在三快在线(美团)的算法老同学聊天,聊到了他们现有分词工具效果不好的问题,我们最终讨论的结果就是没有效果好或者效果不好之后,只有适合不适合,归根结底还是要看各个分词工具中模型的基础训练数据成 ...

  3. 常用分词算法总结(字典、统计、神经网络)

    本文转载自公众号"夕小瑶的卖萌屋",专业带逛互联网算法圈的神操作 ----->我是传送门 关注后,回复以下口令: 回复[789] :领取深度学习全栈手册(含NLP.CV海量综 ...

  4. 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!...

    DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!--和一个句子的分词算法CRF没有区别! 注:传统DDos检测直接基于IP数据发送流量来识别 ...

  5. 数据结构-常用的查找算法

    总第124篇/张俊红 本篇讲讲数据结构里面常用的几个查找算法,数据结构理论篇系列差不多接近尾声了,接下来会分享一些比较特殊的概念,比如KMP.郝夫曼树等等,讲完概念以后会进入刷题阶段.刷题会用Pyth ...

  6. 入门科普:一文看懂NLP和中文分词算法(附代码举例)

    导读:在人类社会中,语言扮演着重要的角色,语言是人类区别于其他动物的根本标志,没有语言,人类的思维无从谈起,沟通交流更是无源之水. 所谓"自然"乃是寓意自然进化形成,是为了区分一些 ...

  7. Matrix67:漫话中文分词算法

    这篇文章不错,列举了很多有意思的中文分词困难例子(特别是对未登词部分)来说明中文分词的困难之处. Matrix67:漫话中文分词算法 发表于 2011年03月10号 由 52nlp 注:这是今天在Ma ...

  8. 基于字典的中文分词算法RMM,MM实现

    引言:目前针对中文分词一般有基于字典,基于统计(HMM等),基于规则的分词方法,然而其中基于字典的中文分词是最基础,同时也是最高效的方式,但分词精度取决与字典的规模. 一.基于字典的中文算法简介 1. ...

  9. NLP-基础任务-中文分词算法(3)-基于字:基于序列标注的分词算法【BiLSTM+CRF】

    CRF:条件随机场,一种机器学习技术.给定一组输入随机变量条件下,另一组输出随机变量的条件概率分布模型. 以一组词性标注为例,给定输入X={我,喜欢,学习},那么输出为Y={名词,动词,名词}的概率应 ...

最新文章

  1. 零起点学算法03——超简单模仿算术题
  2. 楼市调控是安防行业是一门重要课题
  3. 带你入门SpringCloud服务发现 | Eurka搭建和使用
  4. Linux学习之linux下文件目录的了解及总结
  5. Springboot打jar包项目无法访问jsp问题解决
  6. ruby gem 记录
  7. 微电子学属于计算机专业吗,微电子学
  8. 分段函数的期望和方差_2014级《经济数学》课程教学大纲
  9. html里表格做斜线表头,word表格斜线_Word2010怎么绘制斜线表头-太平洋IT百科
  10. lubuntu输入法设置_Ubuntu 设置中文输入法
  11. 金凯瑞在马赫西管理大学毕业典礼的演讲
  12. 什么样的面试更有效?
  13. 2021年安徽省大数据与人工智能应用竞赛大数据(网络赛)-高职组赛题第三部分可视化
  14. Go语言核心之美 1.5-作用域
  15. JS-打开新窗口(window.open)/关闭窗口(window.close)
  16. xsl是什么文件 html 样式表单,XSL 指扩展样式表语言
  17. 转贴:[铿锵发金石 幽眇感鬼神] 高瞻“家园”诗4首浅议[蛮桂]
  18. 前端-vue-node.js+很多学习资料
  19. java教程 invoke_Java中Method的Invoke方法详细介绍
  20. 2016云计算大会PPT打包下载

热门文章

  1. 初中计算机课每学期几节,【精品】初中信息技术教学工作总结三篇
  2. SOM网络(Kohonen自组织网络)学习第一篇
  3. vue的this指向详解
  4. Java知识体系最强总结(2020版)
  5. 如何运行c语言so文件,SO的创建及使用
  6. Python:模拟登陆与HTTP协议(1)
  7. OPENFLOW协议协议分析实践
  8. Openflow协议(以ping分析)
  9. Python中的元类
  10. “Python学不会,咋办?”CTO:用这个方法,技术能力往上涨!