NLP基础 Word Segmentation 原创

1435-郭同学

发表文章数:18

首页 » 算法 » 正文

NLP基础系列 (一)


一、NLP Pipeline

一般NLP项目流程如下
NLP基础 Word Segmentation
                    原创
其中
分词 word segmentation 包括对中文,英文,或者其他语言的分词
数据清洗 cleaning 中无用的标签(例如<Html)
特殊符号如:!,。等
停用词:stop word 例如a ,the

二、Word Segmentation

Word Segmentation Tools
一些常用分词工具
Jieba分词 https://github.com/fxsjy/jieba
SnowNLP https://github.com/isnowfy/snownlp
LTP http://www.ltp-cloud.com/
HanNLP https://github.com/hankcs/HanLP/

1.Segmentation Method 1: Max Matching(最⼤匹配)

前向最⼤匹配(forward-max matching)
例⼦:我们经常有意⻅分歧
词典:[“我们”, “经常”, “有”, “有意⻅”,“意⻅”,“分歧”]
在进行forward-max matching时,我们需要设置一个参数max-len
假设max-len = 5
对于forward-max matching,首先对前五个字符进行字典搜索匹配,也就是最大匹配的字符数为5,将[“我们经常有”]在字典中搜索是否有匹配,若是没有,移除最后一个字符,将[“我们经常”]在字典中搜索是否有匹配,若是没有,移除最后一个字符直到[“我们”]得以在词库中匹配到,因此第一个分词为[“我们”],下一个[“经常有意⻅”]进行最⼤匹配,以此类推。

后向最⼤匹配(backward-max matching)
同理与forward-max matching,只是从后往前匹配

Max Matching(最⼤匹配)缺点

  • 这类算法是属于Greedy Algorithm,一般只能获得Loacl Optimal的结果
  • 时间复杂度很高,每次匹配都要遍历词库,效率低下
  • 不考虑语义

2.Segmentation Method 2: Incorporate Semantic (考虑语义)

NLP基础 Word Segmentation
                    原创
那么我们使用什么方法来保证选择是最好的呢,一般是使用联合概率计算:
对于所有分词结果,我们都有p(w1),p(w2),p(w3),p(4)…
我们要计算S = P(w1,w,2,w3,w4…) = p(w1)✖️p(w2)✖️p(w3)✖️p(4)…
这样求得最大概率的分词结果即为最符合语义的分词结果。
但是,会有出现一个问题,如果w1 = 0.00001,w3 =0.0004等等出现概率非常小的数值进行乘法计算时,结果会出现-inf/under flow 或者None的结果,因此我们在等式两边区log,使数值变成相加,再因为我们求最优解都喜欢使用求最小值,因此再取负值。S = -log(P(…))
那么,我们解决了语义的问题,怎么解决效率问题:
Viterbi 算法
将每个字符看作一个节点,具有分词意义的两个或者多个字符之间存在路径,路径的weight为已知的概率,因此可以画出如下有向无环图,并为拓扑顺序,我们求解图的最短路径,使用DP算法实现。
NLP基础 Word Segmentation
                    原创
Word Segmentation Summary

知识点总结:

  • 基于匹配规则的⽅法

  • 基于概率统计⽅法(LM, HMM, CRF…)

  • 分词可以认为是已经解决的问题

未经允许不得转载:作者:1435-郭同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《NLP基础 Word Segmentation 原创》 发布于2021-02-24

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录