词法分析与词性标注学习之笔记(一)----词法分析

词法分析

词法分析的概念

**词法分析:**词法分析(英语:lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。进行词法分析的程序或者函数叫作词法分析器(Lexical analyzer,简称Lexer),也叫扫描器(Scanner)。词法分析器一般以函数的形式存在,供语法分析器调用。 完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。
完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个 字符一个字符地读入 源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用Lex等工具自动生成。
所属领域:编译原理
本质:按照语言的词法规则识别各类单词

词法分析与词性标注学习之笔记(一)----词法分析_第1张图片
中文分词的概括介绍
中文分词与词性标注是自然语言处理的第一个阶段,是上层处理的基础。分词的主要研究内容是歧义切分和未登录词识别。歧义切分是指对同一个文字片断具有不同的切分方式,如“结合成分子”这句话就有好几种切分方法,但是正确的只有一种,能正确的进行歧义切分是分词的一个难点。分词的另一个难点是未登录词识别,未登录词指的是在词表中没有收录的词,主要包括时间词、数词、人名、地名、机构名等。

词法分析的体系结构

体系结构:系统包括原子切分、全切分、时间数词识别、人名识别、地名识别等处理过程,系统的核心数据结构是一个切分词图(segment graph)。

词法分析系统的特点

1.支持多线程,保证资源只会加载一次
2.在Windows和Linux下都可以运行
3.良好的可配置性,使您可以最大限度的进行DIY,以满足不同的需求
4.支持大文本输入,无论您一次输入多长的文本它都能处理,不过我不推荐您这样做,因为文本长的话未登录词识别效果稍有下降
5.支持扩展词表,您可以手工加入任意新词或专有词汇
6.灵活的资源加载和释放,一切尽在您掌握之中,不必强行占领您宝贵的memory
7.较快的速度,完全配置的版本速度可达到100K/s(3G CPU,1G memory)

词法分析和词性标注的应用领域

·1.自然语言处理:如命名实体识别,句法分析,词义消歧,语义分析等
·2.机器翻译
·3.自动问答
·4.信息检索
·5.信息抽取:自动文摘、文本分类等。

词法分析的任务

:是最小的能够独立运用的语言单位,因此,词法分析是其他一切自然语言处理问题(例如:句法分析、语义分析、文本分类、信息检索、机器翻译、机器问答等)的基础,会对后续问题产生深刻的影响。
词法分析与词性标注学习之笔记(一)----词法分析_第2张图片
词法分析的任务:将输入的句子字串转换成词序列并标记出各词的词性。(注意:“字”并不仅限于汉字,也可以指标点符号、外文字母、注音符号和阿拉伯数字等任何可能出现在文本中的文字符号,所有这些字符都是构成词的基本单元。)
从形式上看,词是稳定的字的组合
不同的语言词法分析具体做法是不同的。
以英语和汉语为例作对比:
词法分析与词性标注学习之笔记(一)----词法分析_第3张图片
对于中文词法分析而言,具体任务如下图所示:
以句子:“警察正在详细调查事故原因” 为例
词法分析与词性标注学习之笔记(一)----词法分析_第4张图片
·中文分词词法分析包括两个主要任务:
1.自动分词:将输入的汉字串切成词串
2.词性标注:确定每个词的词性并加以标注。
·上面任务分别面临着一些问题:
1.自动分词:歧义问题、未登录词问题、分词标准问题
2.词性标注:词性兼类歧义问题
·处理这些问题的方法依然有三种:
1.规则法
2.概率统计法
3.深度学习法。
注意:
由于不同的方法有其不同的优势和短板,因此,一个成熟的分词系统,不可能单独依靠某一种算法来实现,而需要综合不同的算法来处理不同的问题。

自动分词所面临的问题

上面我们提到,自动分词面临着三个问题:歧义问题、未登录词问题、分词标准问题,下面我们将会对其进行解释。
歧义
所指的是切分歧义:对同一个待切分字符串存在多个分词结果。分为交集型歧义、组合型歧义和混合歧义。
1.交集型歧义:字串abc既可以切分成a/bc,也可以切分成ab/c。其中,a、bc、ab、c是词。
举个例子:
“白天鹅”——“白天/鹅”、“白/天鹅”;
“研究生命”——“研究/生命”、“研究生/命”
至于具体要取哪一中分词方法,需要根据上下文来推断。
2.组合型歧义:若ab为词,而a和b在句子中又可分别单独成词。
举个例子:
“门把手弄坏了”——“门/把手/弄/坏/了”、“门/把/手/弄/坏/了”
“把手”本身是一个词,分开之后由可以分别成词。
3.混合歧义:以上两种情况通过嵌套、交叉组合等而产生的歧义。
举个例子:
“这篇文章写得太平淡了”,其中“太平”是组合型歧义,“太平淡”是交集型歧义。
有上面可知,歧义问题在汉语中非常常见。
未登录词
未登录词是指:词典中没有收录过的人名、地名、机构名、专业术语、译名、新术语等。该问题在文本中的出现频度远远高于歧义问题。
未登录词类型:
1.实体名称:汉语人名(张三、李四),汉语地名(黄山、韩村),机构名(外贸部、国际卫生组织);
2.数字、日期、货币等;
3.商标字号(可口可乐、同仁堂);
4.专业术语(万维网、贝叶斯算法);
5.缩略语(五讲四美、计生办);
6.新词语(美刀、卡拉OK)
未登录词问题是分词错误的主要来源。
分词标准
对于 “汉语中什么是词” 这个问题,不仅普通人有词语认识上的偏差,即使是语言专家,在这个问题上依然有不小的差异。“缺乏统一的分词规范和标准” 这种问题也反映在分词语料库上,不同语料库的数据无法直接拿过来混合训练。

自动分词技术方法

基本方法:规则法、概率统计法与深度学习法。

一、基于词库匹配的分词方法(机械分词法)

该类算法是按照一定的策略将待匹配的字符串和一个已建立好的“充分大的”词典中的词进行匹配,若找到某个词条,则说明匹配成功,识别了该词。

基于词典的分词算法在传统分词算法中是应用最广泛、分词速度最快的一类算法。
优点:实现简单、算法运行速度快;
缺点:严重依赖词典,无法很好的处理分词歧义和未登录词。
此类法主要有:
1、正向最大匹配法(从左到右)
2、逆向最大匹配法(从右到左)
3、最少切分法(使每一句中切出的词数最少)
4、双向最大匹配法(进行从左到右、从右到左两次扫描)
1、最大匹配法
基本思路:先建立一个最长词条字数为 L LL 的词典,然后按正向(逆向)取句子前 L LL 个字查词典,如查不到,则去掉最后一个字继续查,一直到找着一个词为止。
优点:实现简单,算法运行速度快,缺点:严重依赖词典,无法很好的处理分词歧义和未登录词。
举个例子:“他是研究生物化学的”
正向结果:“他/是/研究生/物化/学/的”
逆向结果:“他/是/研究/生物/化学/的”。
2、最少分词法
·举个例子:“他说的确实在理”
可能的结果有两种:“他/说/的确/实在/理”,“他/说/的/确实/在理”。
优点:需要的语言资源(词表)不多;
缺点:对许多歧义字段难以区分,最短路径有多条时,选择最终的输出结果缺乏应有的标准;字串长度较大和选取的最短路径数增大时,长度相同的路径数急剧增加,选择正确结果的困难越来越大。

二、基于统计的方法

由上面可知:基于规则的方法对歧义问题的解决能力较弱,而基于统计的方法具有较强的歧义区分能力,但需要大规模标注(或预处理)语料库的支持,需要的系统开销也较大。
1、基于词的分词方法
基于词的生成模型主要考虑词汇之间以及词汇内部字与字之间的依存关系,大部分基于词的分词方法采用的都是生成式模型。
该种分词方法的基本思想很简单:找到概率最大的切分。
两种基于词的分词方法:
n元语法模型法
改进最短路径法。
2、基于字的序列标注方法
该种方法利用序列标注的方法进行分词。
举个例子(如下图):
词法分析与词性标注学习之笔记(一)----词法分析_第5张图片
常用的方法与序列标注方法相同,有HMM、CRF、RNN+CRF等
3、深度学习法
该种方法主要是利用深度神经网络模型来对中文进行分词,主要用到了RNN、CNN、GNN等深度神经网络来自动地获取特征,从而代替传统方法中手工定义的特征。
将从句子中获取简单的特征改为获取复杂的特征,从单一语料库单一标准的模型改进为可以使用多语料进行分词等等。
模型结构与序列标注问题类似:
词法分析与词性标注学习之笔记(一)----词法分析_第6张图片

你可能感兴趣的:(词法分析与词性标注学习之笔记(一)----词法分析)