中文信息处理(二)—— 分词

中文信息处理核心技术

  1. 词层面的技术:
    • 分词
    • 词性标注
  2. 句子层面的技术
    • 句法分析:完全句法分析、依存句法分析
    • 句义分析:语义角色标注
  3. 篇章层面的技术
    • 句子关系分析
    • 指代消解

中文分词

NLP任务层次

image-20210420081530938

Tockenization:英文只把最基本的词标注

一、为什么分词?

  1. 词是汉语里表达意义的基本单位,是有意义的最小语法单位

    • 词:单字词、多字词,最常见的是二字词。
    • 平均词长:24个汉字
  2. 分词是许多NLP任务的基础。
    • 如:机器翻译、信息抽取、自动问答、信息检索…… (机器翻译(MT)中,如果不分词,无法翻译。大学:big study? )

二、分词为什么难?

  1. 歧义:一个字符串,对应多种切分形式。
  2. 未登录词(out of vocabulary ,OOV),包括:
    • 命名实体:人名、地名、机构名等(如:北大、
      高检……)。同时,汉语实体没有词形变化(英语可能首字母会大写)。
    • 新词:不断产生,不断消失 (41%新词会留存)

三、常见的分词系统

  1. 中科院计算所分词系统:ICTCLAS
  2. NLPIR-ICTCLAS
  3. 清华大学分词系统:THULAC
  4. LTP平台(哈工大社会计算与信息检索研究中心)
  5. Jieba分词系统
    • 做最好的 Python中文分词组件
    • 开源:https://github.com/fxsjy/jieba
    • 主要算法:基于统计的最短路径词图切分方法,近期
      内置了预训练模型+大规模蒸馏的前沿分词模型。
    • 三种分词模式:
      精确模式:试图将句子最精确地切开,适合文本分析;
      全模式:把句子中所有的词都扫描出来, 速度非常快,但不能解决歧义;
      搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎。
  6. STANFOORD CORENLP(斯坦福大学推出的工具)
    • 可以支持多种语言。
    • 算法核心:基于CRF模型。
    • 开源:https://stanfordnlp.github.io/CoreNLP/

四、几种分词方法

分词目标:输入:一个字串,输出:一个带分隔符的词串。

系统评价指标:

  • 召回率(Recall):$ R = {输出的正确词数}/测试集中总词数$
  • 精确率(Precision): R = 输 出 的 正 确 词 数 / 输 出 总 词 数 R = {输出的正确词数}/输出总词数 R=/
  • F测度(F-measure): F = 2 P R / ( P + R ) F=2PR/(P+R) F=2PR/(P+R)

下面是两个系统对给定句子的分词结果:

输入:严守一把手机关了
标准答案:严守一 把 手机 关 了
系统1输出:严守 一把手 机关 了
系统2输出:严守一 把手 机关 了

系统1的召回率为1/5 ,精确率为 1/4。
系统2的召回率为 2/5 ,精确率为 1/2 。

1. 基于词表的分词
1.1 主要思想

把一个句子从左向右扫描一遍,

  • 遇到字典里的词就标识出来;
  • 遇到复合词(比如 “北京大学”)就找最长的词匹配;
  • 遇到不认识的字串就分割成单字词。

最简单的分词法,又称最大匹配法分词或机械分词法。(正向最大匹配法错误率略高于逆向最大匹配法 )

image-20210420081735826

1.2 最大匹配分词法关键问题
  1. 预先建立词表(知识库)(覆盖率和准确性非常重要)
    词的定义是什么?怎么收词?
    新词和名实体词是否要收录?收录多少?
  2. 最大词长如何确定?
    词长过短,长词会切错
    词长过长,效率比较低。
1.3 最大匹配分词法的特点和缺点
  1. 复杂性不高,可以解决7、8成的问题。
  2. 大词(复合词)优先。
    但是各种应用不同,分词的颗粒度也需要不同。如:MT中,粒度大易于处理;信息检索(IR)中,粒度小,查全率高。
    好的处理方法:找到嵌套结构,保留多个结果。
  3. (缺点)没有考虑上下文,不能解决歧义
  4. (缺点)没有解决未登录词的识别
1.4 早期解决歧义的方法

与分词过程分离,单独进行。
(1)发现歧义:寻找有多种切分可能的字串。
方法:正向最大匹配和逆向最大匹配结果不一致的地方。
(2)基于规则解决歧义:用规则总结歧义现象,但不成功。

1.5 早期解决未登录词识别的方法

与分词过程分离,单独进行。
• 对于不同种类的命名实体,分别击破识别。如人名分为:汉族式、少数民族式、欧美式、日韩式和其他人名译名。
• 新词:?没有好的处理方法
基于词表分词这种思想未登录词识别效果不高!

2.基于统计语言模型的分词
2.1 统计语言模型和Markov独立性假设
  1. 建模

上个世纪90年前后,清华大学郭进博士用统计语言模型成功解决分词歧义问题,将分词错误率降低一个数量级。

给定一个句子S,由词组成,估计句子S出现在文本中的概率P(S)

P ( S ) = P ( w 0 ) P ( w 1 ∣ w 0 ) P ( w 2 ∣ w 0 w 1 ) … P ( w n − 1 ∣ w 0 w 1 … w n − 2 ) \large P(S) = P(w_0)P(w_1|w_0)P(w_2|w_0w_1)…P(w_{n-1}|w_0w_1…w_{n-2}) P(S)=P(w0)P(w1w0)P(w2w0w1)P(wn1w0w1wn2)

P ( w 0 ) P(w_0) P(w0)表示第一个词出现的概率, P ( w 1 ∣ w 0 ) P(w_1|w_0) P(w1w0)表示在已知第一个词的前提下,第二个词出现的概率,以此类推,但如果n很大的话,要取决于前面的所有词,可能性太多,无法实现。所以引入Markov独立性假设(规定某个词的概率只与它之前有限个词有关)

  • 一元模型
  • 二元模型,S出现的概率就变为:
    P(S) = P(w0)P(w1|w0)P(w2|w1)…P(wn-1|wn-2)
  1. 计算概率

  2. 概率最大化

    最好的分词方法就是是P(S)最大(句子在文本中出现的概率最大)

    S = a r g m a x P ( S i ) S = arg maxP(S_i) S=argmaxP(Si)

2.2 工程细节问题

实际中的一些处理:在log空间下计算概率,因为乘很可能导致跌破下界,所以将乘变为加法

(1) 必须建立分词语料库

数据类型要符合面对的问题领域
规模要足够
质量可靠:保证一致性(前后对同一个词的切分要一样)或准确率。
建立方法:基于词表的方法+人工校对。

(2)参数估计——如何估计 P ( w i ∣ w i − 1 ) P (wi|wi-1) P(wiwi1) P w i ) Pwi) Pwi

经过简单推理

P ( w i ∣ w i − 1 ) = P ( W i , W i − 1 ) P ( W i − 1 ) P\left(w_{i} \mid w_{i-1}\right)=\frac{P\left(W_{i}, W_{i-1}\right)}{P\left(W_{i-1}\right)} P(wiwi1)=P(Wi1)P(Wi,Wi1)

P ( w i ) = N u m ( W i ) N u m P ( w _ { i} ) = \frac { N u m ( W_i ) } { N u m } P(wi)=NumNum(Wi)

2.3 零概率问题

问题:
语料库中,如果 N u m ( w i ) = 0 Num(w_i)=0 Numwi=0,则 P ( w i ) = 0 P(w_i)=0 Pwi=0,我们称模型“不平滑”,可以说,零概率问题是统计语言模型无法回避的。

解决方法:

  1. 增加语料规模?不能完全解决。
  2. 参数平滑

加 1 ( a d d − o n e ) 平 滑 : P ( w i ∣ w i − 1 ) = P ( W i , W i − 1 ) + 1 P ( W i − 1 ) + ∣ V ∣ 加1(add-one)平滑 :P\left(w_{i} \mid w_{i-1}\right)=\frac{P\left(W_{i},W_{i-1}\right)+1}{P\left(W_{i-1}\right)+|V|} 1addoneP(wiwi1)=P(Wi1)+VP(Wi,Wi1)+1

加 k ( a d d − k ) 平 滑 : P ( w i ∣ w i − 1 ) = P ( W i , W i − 1 ) + k P ( W i − 1 ) + ∣ V ∣ 加k(add-k)平滑:P\left(w_{i} \mid w_{i-1}\right)=\frac{P\left(W_{i},W_{i-1}\right)+k}{P\left(W_{i-1}\right)+|V|} kaddkP(wiwi1)=P(Wi1)+VP(Wi,Wi1)+k

  1. 重新估计(主要方法:古德-图灵估计)
    对于没有看见的事件,不认为其发生的概率为0,而是从概率总量中分配一个很小的比例给予这些事件
2.4 Zipf定律

image-20210420082004780

20%的词占据了80%的出现次数。只有少数高频常用词,大多数词很少使用。

2.5 得到概率最大的分词词串
(1)穷举法(效率低)

穷举所有可能的分词词串,并计算其概率。然后得到最大概率输出。

效率低的解决办法:动态规划

(2)动态规划(引入累积概率变量与最大左邻词)

动态规划,保留现阶段最好结果。

引入累积概率变量与最大左邻词,全部计算完之后回溯

P ′ ( w i ) P'(w_i) P(wi)表示累计概率

P ′ ( w 0 ) = P ( w 0 ) P'(w_0) = P(w_0) P(w0)=P(w0)

P ′ ( w i ) = P ′ ( w i − 1 ) ∗ P ( w i ) P'(w_i) = P'(w_{i-1}) * P(w_i) P(wi)=P(wi1)P(wi)

如果wi有若干个左邻词wj, wk, …,其中累计概率最大的候选词称为wi的最佳左邻词

最大概率分词算法——基于一元模型

  1. 对字串S,从左到右取出全部候选词W1,W2,Wi,········,Wn
  2. 词典中查出每个候选词的概率值P(w),并记录其全部左邻词;
  3. 计算每个候选词的累计概率,比较得到其最佳左邻词
  4. 如果当前词Wn是字串S的尾词,且累计率 P ( w n ) P(w_n) P(wn)最大,则Wn就是S的终点词;
  5. 从Wn开始,从右到左依次将每个词的最佳左邻词输出,即为S的分词结果。
2.6 基于统计语言模型分词的评价
  1. 考虑了上下文,输出是基于概率的整体最优结果,自动解决了歧义问题
  2. 通过语料库与词表,完成了词的可计算性定义
  3. 局限:
    • 无法解决语言的长距离依赖。
      The computer which I had just put intothe machine room on the fifth floor crashed.
    • 未登录词仍然没有解决。
3. 基于字标注分词(主要解决未登录词问题)

把分词过程视为字在词中的位置标注问题,是对字的构词能力进行建模

  1. 基于字标注的分词:把分词过程视为字在词中的位置标注问题,是对字的构词能力进行建模

    若标注标准为:B :词首,M :词中,E:词尾,S:单独成词 以往的分词结果:
    / 上海/ 计划/ 到/ 本/ 世纪/ 末/ 实现
    / 人均/ 国内/ 生产/ 总值/ 五千/美元/ 。
    字标注形式的结果:
    上/B 海/E 计/B 划/E 到/S 本/S 世/B 纪/E
    末/S 实/B 现/E 人/B 均/E 国/B 内/E 生/B 产/E
    总/B 值/E 五/B 千/E 美/B元/E。/ S

  2. 重要优势:

    • 能平衡地看待词表词和未登录词的识别。
      都用统一的字标注过程来实现。不必专门强调词表词信息,也不用专门设计特定的未登录词识别模块。
    • 使分词系统的设计大大简化。

问题一:词的可计算性定义是如何完成的?

1.词的语言学定义

能够独立运用、有意义的最小语法单位。(抽象的,无法用于计算机进行计算)

2.早期信息自动化处理阶段

此阶段词的定义:分词规范+静态词表

  • 1993年,推出国家标准《信息处理用现代汉语分词规范》,按词类分别给出了各类分词单位的定义。在许多地方把”结合紧密、使用稳定”视为分词单位的界定准则。
  • 建立了总词数为92843条的《信息处理用现代汉语分词词表》

局限:

  • 词表定义不灵活。有些词可有多种切分形式。如:有褒有贬…
  • 分词单位的界定准则模棱两可,不可操作,或不可计算。无论对词表建立、分词系统的实现还是评测都造成极大的困惑。

评测机制(九十年代的863、973评测 ):

  • 组织者不公布相关词表、语料
  • 评测结果引入评测人员的主观判断,系统输出结果允许有一定的“柔性”。容易引入心理词(不是词表词,也不是新词),如:规范化,取决于……
  • 弊端:标准答案不统一、评测结果不可比

对文本中的词,人都没界定清楚,让计算机去做自动分词不是勉为其难吗?
——黄昌宁,赵海,中文分词十年回顾,中文信息学报,2007,

3.基于统计语言学的处理方法(完成了词的可计算性定义)

分词规范+词表+分词语料库

(1)分词规范、词表主要用于语料标注,要制作高质量的分词语料库,分词规范和词表缺一不可。

(2)评测中有多家机构提供语料库 (不同单位的语料库,分词标准可以不同。但保证每种语料库内部分词标准一致 )

优点:通过不同标准的分词语料,完成了“词”的可计算性定义

问题二:未登录词对分词精度的影响

人们通常把未登录词和分词歧义并列为影响分词精度的两大因素 ,但实际上未登录词对分词精度的影响远大于歧义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值