·
自然语言处理报告
专 业 班 级: 计算机科学与技术 20-02 班
学 生 姓 名: 何梓贻
学 号: 2020214283
实验指导教师: 孙晓
·
一, 研究背景
自然语言处理(N LP , Natural Language Processing)是使用自然语言同计算机进
行通讯的技术, 因为处理自然语言的关键是要让计算机“理解”自然语言,所以自
然语言处理又叫做自然语言理解(NLU ,Natural Language Understanding), 也称为
计算语言学(Computational Ling uistics)。一方面它是语言信息处理的一个分支 ,
另一方面它是人工智能(AI , Artificial Intelligence)的核心课题之一 。
问题的提出:
如何让计算机能够自动或半自动地理解自然 语言文本,懂得人的意图和心声?
如何让计算机实现海量语言文本的自动处理、 挖掘和有效利用,满足不同用户
的各种需求, 实现个性化信息服务?
自然语言处理(Natural Language Processing, NLP)为研究在人与人交际中以及在
人与计算机交际中的语言问题的一门学科。它涉及机器翻译、信息检索、自动文
摘和语音识别等领域。其研究方法主要分为基于规则的方法和基于统计的方法。
前者在历史发展过程中遇到了不可逾越的问题从而消沉,后者随着计算机处理能
力的发展而迅速发展。现在主要存在的问题是歧义问题和未登录词问题。这些问
题可以通过前向最长匹配、后向最长匹配等算法以及 n-gram 模型、隐马尔科夫
模型和条件随机场模型等模型逐渐解决。
自然语言处理的主要困难:
自然语言处理的困难可以罗列出来很多,不过关键在于消除歧义问题,如词法
分析、句法分析、语义分析等过程中存在的歧义问题,简称为消歧。
一个中文文本从形式上看是由汉字(包括标点符号等)组成的一个字符串。由
字可组成词,由词可组成词组,由词组可组成句子,进而由一些句子组成段、节、
章、篇。无论在上述的各种层次:字(符)、词、词组、句子、段,……还是在下
一层次向上一层次转变中都存在着歧义和多义现象,即形式上一样的一段字符串,
在不同的场景或不同的语境下,可以理解成不同的词串、词组串等,并有不同的
意义。一般情况下,它们中的大多数都是可以根据相应的语境和场景的规定而得
到解决的。
但是一方面,我们也看到,为了消解歧义,是需要极其大量的知识和进行推理
的。如何将这些知识较完整地加以收集和整理出来;又如何找到合适的形式,将
它们存入计算机系统中去;以及如何有效地利用它们来消除歧义,都是工作量极
·
大且十分困难的工作。这不是少数人短时期内可以完成的,还有待长期的、系统
的工作。
以上说的是,一个中文文本或一个汉字(含标点符号等)串可能有多个含义。
它是自然语言理解中的主要困难和障碍。反过来,一个相同或相近的意义同样可
以用多个中文文本或多个汉字串来表示。
因此,自然语言的形式(字符串)与其意义之间是一种多对多的关系。其实这
也正是自然语言的魅力所在。但从计算机处理的角度看,我们必须消除歧义,而
且有人认为它正是自然语言理解中的中心问题,即要把带有潜在歧义的自然语言
输入转换成某种无歧义的计算机内部表示。
同时,由于强调了“大规模”,强调了“真实文本”,下面两方面的基础性工作
也得到了重视和加强。
(1)大规模真实语料库的研制。大规模的经过不同深度加工的真实文本的语
料库,是研究自然语言统计性质的基础。没有它们,统计方法只能是无源之水。
(2)大规模、信息丰富的词典的编制工作。规模为几万,十几万,甚至几十
万词,含有丰富的信息(如包含词的搭配信息)的计算机可用词典对自然语言处
理的重要性是很明显的。
自然语言处理的发展趋势
目前,人们主要通过两种思路来进行自然语言处理,一种是基于规则的理性主
义,另外一种是基于统计的经验主义。
理性主义方法认为,人类语言主要是由语言规则来产生和描述的,因此只要能
够用适当的形式将人类语言规则表示出来,就能够理解人类语言,并实现语言之
间的翻译等各种自然语言处理任务。
而经验主义方法则认为,从语言数据中获取语言统计知识,有效建立语言的统
计模型。因此只要能够有足够多的用于统计的语言数据,就能够理解人类语言。
然而,当面对现实世界充满模糊与不确定性时,这两种方法都面临着各自无法
解决的问题。例如,人类语言虽然有一定的规则,但是在真实使用中往往伴随大
量的噪音和不规范性。理性主义方法的一大弱点就是鲁棒性差,只要与规则稍有
偏离便无法处理。而对于经验主义方法而言,又不能无限地获取语言数据进行统
计学习,因此也不能够完美地理解人类语言。二十世纪八十年代以来的趋势就是,
基于语言规则的理性主义方法不断受到质疑,大规模语言数据处理成为目前和未
来一段时期内自然语言处理的主要研究目标。统计学习方法越来越受到重视,自
然语言处理中越来越多地使用机器自动学习的方法来获取语言知识。
分词可能是自然语言处理中最基本的问题,不同的分词,会造成完全不同的
语义理解,其重要性不明而喻,本工程所涉及的研究背景是机器学习的自然语言
处理领域,汉语分词的概要和隐式马尔可夫模型,了解了分词系统的算法,例如
向前最长匹配和向后最长匹配算法。
最简单的一个想法,是构造一个常用词的候选集合,如我、爱、天安门、北
京这些词,然后从句子头到尾遍历,如何词在候选集合中出现过则切分该词,那
么很容易将我爱天安门分词为我 爱 天安门,这样的逻辑很容易理解,所以接下
来就是如何去设计这个候选集合的数据结构,常用的 list,当然是可以的,但
·
是很明显,将一个海量词的词典载入,词典元素的查找还有存储,如果使用 list
必然会存在很严重的性能问题,如果高效地存储词典,还有高效地查询词或者短
语在词典中,是这部分分词最重要的工作。
二, 模型方法
1. 最大匹配法 (Maximum Matching, MM)
(1)正向最大匹配算法 (Forward MM, FMM)
FMM 算法描述:
1) 令 i=0,当前指针 pi 指向输入字串的初始位置,执行下面的操作:
2) 计算当前指针 pi 到字串末端的字数(即未被切分字串的长度)n,
如果 n=1,转(4),结束算法。否则,令 m=词典中最长单词的字数,
如果 n<m, 令 m=n;
3) 从当前 pi 起取 m 个汉字作为词 wi,判断:
(a) 如果 wi 确实是词典中的词,则在 wi 后添加一个
切分标志,转(c);
(b) 如果 wi 不是词典中的词且 wi 的长度大于 1,将
wi 从右端去掉一个字,转(a)步;否则(wi 的长
度等于 1),则在 wi 后添加一个切分标志(单字)
,执行 (c)步;
(c) 根据 wi 的长度修改指针 pi 的位置,如果 pi 指向
字串末端,转(4),否则,i=i+1,返回 (2);
4) 输出切分结果,结束分词程序。
流程图如下所示:
(2)逆向最大匹配算法 (Backward MM, BMM)
1) 令 i=s.end,当前指针 pi 指向输入字串的末端位置,执行下面的
操作:
2) 计算当前指针 pi 到字串末端的字数(即未被切分字串的长度)n,
如果 n=1,转(4),结束算法。否则,令 m=词典中最长单词的字数,
·
如果 n<m, 令 m=n;
3) 从当前 pi 起取 m 个汉字作为词 wi,判断:
(a) 如果 wi 确实是词典中的词,则在 wi 后添加一个
切分标志,转(c);
(b) 如果 wi 不是词典中的词且 wi 的长度大于 1,将
wi 从右端去掉一个字,转(a)步;否则(wi 的长
度等于 1),则在 wi 后添加一个切分标志(单字)
,执行 (c)步;
(c) 根据 wi 的长度修改指针 pi 的位置,如果 pi 指向
字串开端,转(4),否则,i=i-1,返回 (2);
4) 输出切分结果,结束分词程序。
BMM 的流程图与 FMM 类似,所以不再赘述。
2. n 元文法(n-gram)
通常地,当 n=1 时,即出现在第 i 位上的基元 wi 独立于历史。一元文法
也被写为 uni-gram 或 monogram;
当 n=2 时, 2-gram (bi-gram) 被称为 1 阶马尔柯夫链;
当 n=3 时, 3-gram(tri-gram)被称为 2 阶马尔柯夫链,依次类推。
为了保证条件概率在 i=1 时有意义,同时为了保证句子内所有字符串的概
率和为 1,即 �
s
p
(
s
) �1,可以在句子首尾两端增加两个标志: <BOS> w1 w2 …
wm<EOS>。不失一般性,对于 n>2 的 n-gram,
P(s) 可以分解为:
P(s) ��P(wi | wii� �1 n�1)
其中,
w
ij
表示词序列 wi … wj,wi-n+1 从
w
0 开始,
w
0 为 <BOS>,
wm+
1
为 <EOS>。
3. 隐马尔科夫模型
1)概念
隐马尔科夫模型是一个双重随机过程,我们不知道具体的状态序列,只知道
状态转移的概率,即模型的状态转换过程是不可观察的(隐蔽的),而可观察事
件的随机过程是隐蔽状态转换过程的随机函数。