自然语言处理:分词综述与结巴分词。

需要深入了解吗?

字节面试,讲讲结巴分词算法,讲讲其他分词,都不了解是吧,现在你来设计一下吧,说说你的思路。
然后我就凉了。
参考

正文:

1.分词:

常用:基于字符串匹配的方法。基于规则的方法

1.1 基于字符串匹配的方法

给一个字典:
将待切分的汉字串与词典中的词条逐一匹配,若在词典中找到该词条,则匹配成功.
根据扫描方式不同:正向匹配、逆向匹配以及双向匹配。
依据每次匹配优先考虑长词还是短词,分为最大匹配和最小匹配。

1.1.1 正向最大匹配分词算法

正向:从左往右
最大:先以字典中最长词的长度作为第一次判断,然后如果不是词,则不断减小长度,直到为1.
基本思想是:假设己知机器词典中最长词条的长度为N,则以N作为减字开始的长度标准,首先将待扫描的文本串S从左向右截取长度为N的字符串W1,然后在词典中查找是否存在该字符串W1的词条。如果匹配成功,则W1标记为切分出的词,再从待扫描文本串的N+1位置开始扫描;如果匹配失败,将截取长度减1后,再从S中截取此长度的字符串W1’,重复上述匹配过程,直至截取长度为1为止。以扫描完句子作为整个匹配过程结束。

1.1.2 逆向最大匹配分词:

逆向:从右向左

1.1.3 双向最大匹配分词算法

正向最大匹配和逆向最大匹配分别进行正向和逆向扫描和初步切分,得到的结果可能不同。
如果存在不一致,则判定存在着切分歧义,需要进一步采取技术手段来消解歧义。

1.2 基于统计的方法

通过对语料中相邻共现的各个字的组合频度进行统计,计算它们的互现信息。互现信息体现了汉字之间结合关系的紧密程度,当紧密程度高于某一个阈值时,可判定该字组构成一个词。

相对于基于词典(字符串)的方法,该方法可以不受词典限制,领域限制。
不受待处理文本领域的限制,不需要专门的词典。

基于统计的分词采用的原理有互信息、N元统计模型以及其它的统计模型如隐马尔科夫模型、条件随机场模型、神经网络模型及最大熵模型等。

1.2.1互信息原理

在这里插入图片描述

1.2.2 N元统计模型

马尔科夫性:
一个单词的出现与其上下文环境中出现的单词序列密切相关,第n个词的出现只与前面n-1个词相关,而与其它任何词都不相关。
在这里插入图片描述

我的理解:对句子进行全切分,如果一个p概率大于一定的值的话,说明在出现前n-1个字时,很有可能出现这个字,那么应该就可以看成一个词了吧。
以这样进行大概的计算:
在这里插入图片描述

原作者内容如下,有些复杂:
在这里插入图片描述
在这里插入图片描述

1.3 基于字符串匹配的分词方法和基于统计的分词方法对比

在这里插入图片描述

2.基于统计的方法(补充):

参考
在这里插入图片描述

很好!!!

在这里插入图片描述

HMM模型在模型中的应用:

HMM是将分词作为字在字串中的序列标注任务来实现的。
每个字在构造一个特定的词语时都占据着一个确定的构词位置(即词位),
例如:
在这里插入图片描述
和命名实体的构造差不多。
哪里用到HMM了?
在词库中汉字λ作为o的构词位置的概率是多少。

另外的两个概率:
1.构词位置o的概率。
2.汉字在词库中的概率。

3.结巴分词原理:

参考(非常非常的详细。)
jieba分词主要是基于统计词典,构造一个前缀词典;然后利用前缀词典对输入句子进行切分,得到所有的切分可能,根据切分位置,构造一个有向无环图;通过动态规划算法,计算得到最大概率路径,也就得到了最终的切分形式。

以“去北京大学玩”为例:
1.结巴分词有一个离线统计的词典,每一行有三列,第一列是词,第二列是词频,第三列是词性。

北京大学 2053 nt
大学 20025 n
去 123402 v
玩 4207 v
北京 34488 ns
北 17860 ns
京 6583 ns
大 144099 a
学 17482 n

2.构造前缀词表:北京大学的前缀词有三个,北京大,北京,北

北京大学 2053
北京大 0
大学 200251234024207
北京 3448817860658314409917482

3.然后我们就可以根据上述的前缀词表构造出有向无环图了。
在这里插入图片描述
在这里插入图片描述
4.最大概率路径计算:
从起点到终点有多种路径,
因此,我们需要计算最大概率路径,也即按照这种方式切分后的分词结果的概率最大。在计算最大概率路径时,jieba分词采用从后往前这种方式进行计算。
一个dp就ok了。

对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法。

其他小点:

结巴分词还可以自定义字典,载入字典。
在这里插入图片描述

4.其他的分词工具:

盘古分词、Yaha分词、Jieba分词、清华THULAC
盘古开天辟地,所以分词也很nb。(帮助记忆)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值