中文信息处理(二)—— 分词
文章目录
- 中文信息处理核心技术
- 中文分词
- NLP任务层次
- 一、为什么分词?
- 二、分词为什么难?
- 三、常见的分词系统
- 四、几种分词方法
- 1. 基于词表的分词
- 1.1 主要思想
- 1.2 最大匹配分词法关键问题
- 1.3 最大匹配分词法的特点和缺点
- 1.4 早期解决歧义的方法
- 1.5 早期解决未登录词识别的方法
- 2.基于统计语言模型的分词
- 2.1 统计语言模型和Markov独立性假设
- 2.2 工程细节问题
- 2.3 零概率问题
- 2.4 Zipf定律
- 2.5 得到概率最大的分词词串
- (1)穷举法(效率低)
- (2)动态规划(引入累积概率变量与最大左邻词)
- 2.6 基于统计语言模型分词的评价
- 3. 基于字标注分词(主要解决未登录词问题)
- 问题一:词的可计算性定义是如何完成的?
- 1.词的语言学定义
- 2.早期信息自动化处理阶段
- 3.基于统计语言学的处理方法(完成了词的可计算性定义)
- 问题二:未登录词对分词精度的影响
中文信息处理核心技术
- 词层面的技术:
- 分词
- 词性标注
- 句子层面的技术
- 句法分析:完全句法分析、依存句法分析
- 句义分析:语义角色标注
- 篇章层面的技术
- 句子关系分析
- 指代消解
中文分词
NLP任务层次
Tockenization:英文只把最基本的词标注
一、为什么分词?
词是汉语里表达意义的基本单位,是有意义的最小语法单位
- 词:单字词、多字词,最常见的是二字词。
- 平均词长:24个汉字。
分词是许多NLP任务的基础。
• 如:机器翻译、信息抽取、自动问答、信息检索…… (机器翻译(MT)中,如果不分词,无法翻译。大学:big study? )
二、分词为什么难?
- 歧义:一个字符串,对应多种切分形式。
- 未登录词(out of vocabulary ,OOV),包括:
- 命名实体:人名、地名、机构名等(如:北大、
高检……)。同时,汉语实体没有词形变化(英语可能首字母会大写)。 - 新词:不断产生,不断消失 (41%新词会留存)
- 命名实体:人名、地名、机构名等(如:北大、
三、常见的分词系统
- 中科院计算所分词系统:ICTCLAS
- NLPIR-ICTCLAS
- 清华大学分词系统:THULAC
- LTP平台(哈工大社会计算与信息检索研究中心)
- Jieba分词系统
- 做最好的 Python中文分词组件
- 开源:https://github.com/fxsjy/jieba
- 主要算法:基于统计的最短路径词图切分方法,近期
内置了预训练模型+大规模蒸馏的前沿分词模型。 - 三种分词模式:
精确模式:试图将句子最精确地切开,适合文本分析;
全模式:把句子中所有的词都扫描出来, 速度非常快,但不能解决歧义;
搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎。
- STANFOORD CORENLP(斯坦福大学推出的工具)
• 可以支持多种语言。
• 算法核心:基于CRF模型。
• 开源:https://stanfordnlp.github.io/CoreNLP/
四、几种分词方法
分词目标:输入:一个字串,输出:一个带分隔符的词串。
系统评价指标:
- 召回率(Recall):$ R = {输出的正确词数}/测试集中总词数$
- 精确率(Precision):R=输出的正确词数/输出总词数R = {输出的正确词数}/输出总词数R=输出的正确词数/输出总词数
- F测度(F-measure):F=2PR/(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 主要思想
把一个句子从左向右扫描一遍,
- 遇到字典里的词就标识出来;
- 遇到复合词(比如 “北京大学”)就找最长的词匹配;
- 遇到不认识的字串就分割成单字词。
最简单的分词法,又称最大匹配法分词或机械分词法。(正向最大匹配法错误率略高于逆向最大匹配法 )
1.2 最大匹配分词法关键问题
- 预先建立词表(知识库)(覆盖率和准确性非常重要)
词的定义是什么?怎么收词?
新词和名实体词是否要收录?收录多少? - 最大词长如何确定?
词长过短,长词会切错
词长过长,效率比较低。
1.3 最大匹配分词法的特点和缺点
- 复杂性不高,可以解决7、8成的问题。
- 大词(复合词)优先。
但是各种应用不同,分词的颗粒度也需要不同。如:MT中,粒度大易于处理;信息检索(IR)中,粒度小,查全率高。
好的处理方法:找到嵌套结构,保留多个结果。 - (缺点)没有考虑上下文,不能解决歧义。
- (缺点)没有解决未登录词的识别。
1.4 早期解决歧义的方法
与分词过程分离,单独进行。
(1)发现歧义:寻找有多种切分可能的字串。
方法:正向最大匹配和逆向最大匹配结果不一致的地方。
(2)基于规则解决歧义:用规则总结歧义现象,但不成功。
1.5 早期解决未登录词识别的方法
与分词过程分离,单独进行。
• 对于不同种类的命名实体,分别击破识别。如人名分为:汉族式、少数民族式、欧美式、日韩式和其他人名译名。
• 新词:?没有好的处理方法
基于词表分词这种思想未登录词识别效果不高!
2.基于统计语言模型的分词
2.1 统计语言模型和Markov独立性假设
- 建模
上个世纪90年前后,清华大学郭进博士用统计语言模型成功解决分词歧义问题,将分词错误率降低一个数量级。
给定一个句子S,由词组成,估计句子S出现在文本中的概率P(S)
P(S)=P(w0)P(w1∣w0)P(w2∣w0w1)…P(wn−1∣w0w1…wn−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(w1∣w0)P(w2∣w0w1)…P(wn−1∣w0w1…wn−2)
P(w0)P(w_0)P(w0)表示第一个词出现的概率,P(w1∣w0)P(w_1|w_0)P(w1∣w0)表示在已知第一个词的前提下,第二个词出现的概率,以此类推,但如果n很大的话,要取决于前面的所有词,可能性太多,无法实现。所以引入Markov独立性假设(规定某个词的概率只与它之前有限个词有关)
- 一元模型
- 二元模型,S出现的概率就变为:
P(S) = P(w0)P(w1|w0)P(w2|w1)…P(wn-1|wn-2)
计算概率
概率最大化
最好的分词方法就是是P(S)最大(句子在文本中出现的概率最大)
S=argmaxP(Si)S = arg maxP(S_i)S=argmaxP(Si)
2.2 工程细节问题
实际中的一些处理:在log空间下计算概率,因为乘很可能导致跌破下界,所以将乘变为加法
(1) 必须建立分词语料库
数据类型要符合面对的问题领域
规模要足够
质量可靠:保证一致性(前后对同一个词的切分要一样)或准确率。
建立方法:基于词表的方法+人工校对。
(2)参数估计——如何估计 P(wi∣wi−1)P (wi|wi-1)P(wi∣wi−1)和Pwi)Pwi)Pwi)?
经过简单推理
P(wi∣wi−1)=P(Wi,Wi−1)P(Wi−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(wi∣wi−1)=P(Wi−1)P(Wi,Wi−1)
P(wi)=Num(Wi)NumP ( w _ { i} ) = \frac { N u m ( W_i ) } { N u m } P(wi)=NumNum(Wi)
2.3 零概率问题
问题:
语料库中,如果Num(wi)=0Num(w_i)=0Num(wi)=0,则P(wi)=0P(w_i)=0P(wi)=0,我们称模型“不平滑”,可以说,零概率问题是统计语言模型无法回避的。
解决方法:
- 增加语料规模?不能完全解决。
- 参数平滑
加1(add−one)平滑:P(wi∣wi−1)=P(Wi,Wi−1)+1P(Wi−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|} 加1(add−one)平滑:P(wi∣wi−1)=P(Wi−1)+∣V∣P(Wi,Wi−1)+1
加k(add−k)平滑:P(wi∣wi−1)=P(Wi,Wi−1)+kP(Wi−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|} 加k(add−k)平滑:P(wi∣wi−1)=P(Wi−1)+∣V∣P(Wi,Wi−1)+k
- 重新估计(主要方法:古德-图灵估计)
对于没有看见的事件,不认为其发生的概率为0,而是从概率总量中分配一个很小的比例给予这些事件
2.4 Zipf定律
20%的词占据了80%的出现次数。只有少数高频常用词,大多数词很少使用。
2.5 得到概率最大的分词词串
(1)穷举法(效率低)
穷举所有可能的分词词串,并计算其概率。然后得到最大概率输出。
效率低的解决办法:动态规划
(2)动态规划(引入累积概率变量与最大左邻词)
动态规划,保留现阶段最好结果。
引入累积概率变量与最大左邻词,全部计算完之后回溯
以P′(wi)P'(w_i)P′(wi)表示累计概率
P′(w0)=P(w0)P'(w_0) = P(w_0)P′(w0)=P(w0)
P′(wi)=P′(wi−1)∗P(wi)P'(w_i) = P'(w_{i-1}) * P(w_i)P′(wi)=P′(wi−1)∗P(wi)
如果wi有若干个左邻词wj, wk, …,其中累计概率最大的候选词称为wi的最佳左邻词
最大概率分词算法——基于一元模型
- 对字串S,从左到右取出全部候选词W1,W2,Wi,········,Wn
- 词典中查出每个候选词的概率值P(w),并记录其全部左邻词;
- 计算每个候选词的累计概率,比较得到其最佳左邻词
- 如果当前词Wn是字串S的尾词,且累计率P(wn)P(w_n)P(wn)最大,则Wn就是S的终点词;
- 从Wn开始,从右到左依次将每个词的最佳左邻词输出,即为S的分词结果。
2.6 基于统计语言模型分词的评价
- 考虑了上下文,输出是基于概率的整体最优结果,自动解决了歧义问题。
- 通过语料库与词表,完成了词的可计算性定义
- 局限:
- 无法解决语言的长距离依赖。
The computer which I had just put intothe machine room on the fifth floor crashed. - 未登录词仍然没有解决。
- 无法解决语言的长距离依赖。
3. 基于字标注分词(主要解决未登录词问题)
把分词过程视为字在词中的位置标注问题,是对字的构词能力进行建模
基于字标注的分词:把分词过程视为字在词中的位置标注问题,是对字的构词能力进行建模
若标注标准为: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重要优势:
- 能平衡地看待词表词和未登录词的识别。
都用统一的字标注过程来实现。不必专门强调词表词信息,也不用专门设计特定的未登录词识别模块。 - 使分词系统的设计大大简化。
- 能平衡地看待词表词和未登录词的识别。
问题一:词的可计算性定义是如何完成的?
1.词的语言学定义
能够独立运用、有意义的最小语法单位。(抽象的,无法用于计算机进行计算)
2.早期信息自动化处理阶段
此阶段词的定义:分词规范+静态词表
- 1993年,推出国家标准《信息处理用现代汉语分词规范》,按词类分别给出了各类分词单位的定义。在许多地方把”结合紧密、使用稳定”视为分词单位的界定准则。
- 建立了总词数为92843条的《信息处理用现代汉语分词词表》
局限:
- 词表定义不灵活。有些词可有多种切分形式。如:有褒有贬…
- 分词单位的界定准则模棱两可,不可操作,或不可计算。无论对词表建立、分词系统的实现还是评测都造成极大的困惑。
评测机制(九十年代的863、973评测 ):
- 组织者不公布相关词表、语料
- 评测结果引入评测人员的主观判断,系统输出结果允许有一定的“柔性”。容易引入心理词(不是词表词,也不是新词),如:规范化,取决于……
- 弊端:标准答案不统一、评测结果不可比
对文本中的词,人都没界定清楚,让计算机去做自动分词不是勉为其难吗?
——黄昌宁,赵海,中文分词十年回顾,中文信息学报,2007,
3.基于统计语言学的处理方法(完成了词的可计算性定义)
分词规范+词表+分词语料库
(1)分词规范、词表主要用于语料标注,要制作高质量的分词语料库,分词规范和词表缺一不可。
(2)评测中有多家机构提供语料库 (不同单位的语料库,分词标准可以不同。但保证每种语料库内部分词标准一致 )
优点:通过不同标准的分词语料,完成了“词”的可计算性定义
问题二:未登录词对分词精度的影响
人们通常把未登录词和分词歧义并列为影响分词精度的两大因素 ,但实际上未登录词对分词精度的影响远大于歧义
中文信息处理(二)—— 分词相关推荐
- 中文信息处理—已分词标注语料的抽取词表和文本还原
文章目录 任务 语料分析 思路分析 一.任务详解+代码 抽取词表+统计词频 1.删除多余文本 2.统计词频 二.形成原始文本 任务 针对人民日报语料,编写程序: (1)抽取词表 (2)统计总词数.不同 ...
- 计算机信息处理技术的发展历程,中文信息处理技术发展简史.docx
中文信息处理技术发展简史 张华平 (中国科学院计算技术研究所软件实验室北京100080) E-mail: zhanghp@sof[ware? Homepage: ; hMp://pipy_ 摘要:真正 ...
- 中文信息处理——纵览与建议
中文信息处理--纵览与建议 (2007-04-11 22:25:49) 转载▼ 分类: 技术视野 2004年10月写的一个材料. ----------------------------------- ...
- 中文开源汉语分词工具
本文转载自:http://www.scholat.com/vpost.html?pid=4477 由于中文文本词与词之间没有像英文那样有空格分隔,因此很多时候中文文本操作都涉及切词,这里整理了一些中文 ...
- 中文信息处理的主流技术是什么?
中文信息处理的主流技术是什么? 从20世纪50年代初机器翻译课题被提出算起,自然语言处理(NLP)的研发历史至少也有50年了.90年代初,NLP的研究目标开始从小规模受限语言处理走向大规模真实文本处理 ...
- 信息编码与计算机语言,中文信息处理,是用计算机对中文(包括口语和书面语)进行转换、传输、存贮、分析等加工的科学。...
题目所在试卷参考答案: 参考答案 一. 1.D 2.C(A.曼延-蔓延,消蚀-销蚀:B.博杀-搏杀:D.暗然-黯然,愧叹-喟叹) 3.A(①协调:配合得适当,多指部门的配合:谐调:多指物理方面的调制和 ...
- 第一章中文信息处理概述
1.为什么学习中文信息处理 (1)汉语成为一种新的强势语言而被世人瞩目,汉语里解所涉及的科学问题让国际计算语言学界无法回避. (2)汉语使用者拥有的巨大市场令国际企业界不敢轻视. (3)中文信息处理所 ...
- java 校验姓名只能包含中英文_java代码验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数...
package com.sangedabuliu.www; import java.util.regex.Matcher; import java.util.regex.Pattern; public ...
- 哈工大中文信息处理_【NLP】哈工大车万翔教授 自然语言处理NLPer的核心竞争力是什么?19页ppt...
点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要4分钟 跟随小博主,每天进步一丢丢 整理:专知 导读 自然语言处理是当前人工智能研究的重要方向之一.那么从事NLP的人员如何能够不断升级,构建核 ...
最新文章
- KVM日常管理-克隆-快照-磁盘扩容-虚拟磁盘挂载
- python实现udp聊天室_python网络编程基础--socket的简介,以及使用socket来搭建一个简单的udp小程序...
- Smarty foreach
- Maven之自定义archetype生成项目骨架(一)
- JVM—引用计数和可达性分析算法(存活性判断)
- apt-get 与 apt-cache使用
- php定义浏览器编码,从php脚本到浏览器,编码方式浅析
- Spring Security系列之Spring Social实现微信社交登录(九)
- Hive partition prune Failed
- 关于事件模型,js事件绑定和解除的学习
- 深入理解PHP之数组(遍历顺序)
- js金额格式化最简单方法 JS对货币格式化,js钱三位一隔,javascript货币格式化
- 【杂】poj2482 Stars in Your Windows 题面的翻译
- 图文详细解说DevExpress 2015新版亮点【附文档下载】
- 暴力破解之NTscan+密码字典工具
- 防范勒索病毒及关闭相关端口
- java有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- html中js alert函数,javascript的alert是什么
- 数据分析——房源分析项目
- windows下安装mingw-w64
热门文章
- Java知识积累——同时输出到控制台和指定文件,或直接输出到指定文件
- Jquery实现鼠标双击Table单元格变成文本框
- C语言,产生一组数字,并将其写入txt文档中
- Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 括号序列 dp+栈
- 2016年前端web开发趋势总结
- Object有哪些公用方法?
- 【ARM-Linux开发】linux下Eclipse进行C编程时动态链接库的生成和使用
- 硬件开源为什么如此之难?
- python从网络时间服务器获取并打印当前时间以及pip安装ntplib的一次体验
- (转)OAuth 2.0的设计思路