MindSpore系列分享(三):自然语言处理基础上篇
MindSpore系列分享(三):自然语言处理基础上篇
简介:
广义上介绍自然语言处理:是人工智能与计算机领域中的一个重要方向。研究的是实现人与计算机之间用自然语言进行有效通信的法。自然语言处理并不是一般地研究自然语言,而是在研究处理语言的方法,应用于计算机中。因而它是计算机科学的一部分。下面主要是对自然语言一些技术的浅析。
1. 分词技术
由于汉语对词的构成边界方面很难进行定位。在英文中,单词本身就是词的表示,一篇英文文章就是单词加空格来表示。在汉语中,词以字为单位,但一篇汉语文章的语义却仍以词来划分。因此,在处理中文文档时,需要进行分词处理,将文档转换成词来表示。这个切词过程就是中文分词。通过计算机自动识别出句子的词,在词间加入边界标识符,分隔出各个词汇,主要的难点在于分词歧义。
中文分词主要有三个流派:规则分词、统计分词、混合分词。
1.1 规则分词
规则分词:基于规则的分词是一种机械分词方法,将语句中的每一个字符串与词表中的词逐一匹配,匹配到就切分,否则不予切分。按照匹配切分的方式,主要有正向最大匹配法、逆向最大匹配法和双向最大匹配法。
正向最大匹配法思想:假设分词词典中的最长词有i个字符,那么用被处理文档的当前字符串的前i个字符作为匹配字段,查找字典。若字典中存在这样一个i长度字词,则匹配成功,匹配字段则被作为一个词切分出来。如果词典中找不到这样的一个i长度字词,则匹配失败。此时便将匹配字段中的最后一个字去掉,对剩余的字符串重新匹配处理。根据这样的规则处理下去,直到匹配成功,即切分出一个词或剩余字符串的长度为0为止。这样就完成一轮匹配,然后取下一个i长度字符串进行匹配处理,直到文档被扫描完为止。
逆向最大匹配法思想:基本原理与正向最大匹配法相同,
双向最大匹配法思想:将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果进行比较,然后按照最大匹配原则,选取词数切分最少的作为结果。
基于规则的分词,一般都比较简单高效,但是词典的维护是一个很庞大的工程。而且网络新词频频出现,很难通过词典覆盖到所以词。
1.2 统计分词
统计分词:主要思想是把每个词看作是由词的最小单位的各个字组成的,如果相连的字在不同的文本中出现的次数越多,就证明这相连的字很可能就是一个词。因此我们就可以利用字与字相邻出现的频率来反映成词的可靠度,统计语料中相邻共现的各个字的组合的频率,当组合频率高于某一个临界值时,我们可以认为这个字的组合可能会构成一个词语。
基于统计的分词,通常需要两个步骤操作:
(1)建立统计语言模型;
(2)对句子进行单词划分,然后对划分结果进行概率计算,获得概率最大的分词方式。这里就要用到了统计学习算法。
语言模型:用概率论的专业术语描述语言模型就是,为长度为m的字符串确定其概率分布P(w1,w2, …,wm),其中w1到wm依次表示文本中的每个词语。一般采用链式法则计算其概率值。
P(w1,w2, …,wm)=P(w1)P(w2|w1)P(w3|w1,w2)
...P(wi|w1,w2, …,wi-1) …P(wm|w1,w2, …,wm-1)
当文本过长时,公式右部从第三项起的每一项计算难度都很大。为了解决该问题,提出了n元模型用来降低该计算难度。计算公式为:
P(wi|w1,w2, …,wi-1) ≈P(wi|wi-(n-1), …,wi-1)
当为一元模型,句子的概率表示为P(w1,w2,…,wm)=P(w1)P(w2)…P(wm)。在一元模型中,整个句子的概率等于各个词语概率的乘积。也可以看作是各个词之间是相互独立的,损失了句子中的顺序信息。所以一元模型的效果不理想。

由上面表达式可见,当n越大时,模型包含的词顺序信息越丰富,但同时计算量也随之增大。此时长度越长的文本序列出现的次数也会减少。根据公式估计n元条件概率时,就会出现分子分母为零的情况。因此,在一般的n元模型中需要配合相应的平滑算法解决该问题,例如拉普拉斯平滑算法。
1.3 混合分词
在目前常用的分词方法中,在具体的分词任务中,效果上并未有很明显的差距。在实际的工程应用中,首先是先基于一种分词算法使用,然后将其他分词方法辅助使用。
通常的使用方式是先基于机械分词方法进行分词,然后再使用统计分词方法辅助对准未登录词和歧义词,这样混合使用会有比单一使用有更好的效果。
2. 词性标注和命名实体识别
词性是词汇基本的语法属性,也可以称为词类。词性标注的行为就是在给定的中文句子中判定每个词的语法作用,确定每个词的词性并加以标注。命名实体识别在信息检索方面有着很重要作用,检测出代表性的名称。
2.1 词性标注
在中文句子中,一个同音同形的词处在不同的上下文时,语法的属性是截然不同的,由于这个原因,这就给中文词性标注带来很大的困难。但是从中文词语整体的使用情况来看,大多数的词语,尤其是实词,一般是有一到二个词性,并且通过统计发现,其中一个词性的使用频次远大于另外词性。所以即使每次都将高频的词性作为其词性,也能够实现很高的准确率。只要我们对常用词的词性能够进行很精准的识别,使用时也能够覆盖绝大多数的场景。
词性标注最简单的方法就是从语料库中统计每个词所对应的高频词性,将其作为默认的词性,但基于这种方法的词性标注还是有提醒空间的。目前较为主流的方法和分词相似,将句子的词性标注作为一个序列标注问题看待,这样隐马尔可夫模型、条件随机场模型都可以应用于词性标注任务中。
2.2 命名实体识别
中文命名实体识别主要有以下的难点:各类命名实体数量众多、命名实体的构成规律复杂、嵌套情况复杂、长度不确定。
在分词的介绍中,我们主要列出来三种方式:基于规则的方法、基于统计的方法以及混合使用方法。在整个NLP的命名实体识别中也不例外。
基于规则的命名实体识别:规则加词典是早期命名实体识别中最行之有效的方法,主要依赖于手工规则的系统,结合命名实体库,对每一条规则进行权重的赋值,然后再通过实体与规则的相符程度进行类型的判断。当提取的规则能够较好的反应语言的现象时,此方法的效果明显优于其他方法。但是在大多数的情境下,规则往往依赖于具体的语言、领域和文本的风格,并且其编制的过程非常耗时,也难以涵盖所有的语言现象,更新维护非常困难。
基于统计的命名实体识别:目前主流的基于统计的命名实体识别方法主要有隐马尔可夫模型、最大熵模型、条件随机场等等。主要的思想是:基于人工标注的语料,将命名实体识别任务作为序列标注问题来解决。基于统计方法对语料库质量的依赖比较大,而规模大质量高的语料库很少,是此类方法的一个制约。
混合方法:NLP并不完全是随机的过程,如果仅使用基于统计的方法会使搜索空间非常的庞大,所以需要提前借助规则方法进行过滤修剪处理。所以在很多情况下是使用混合方法的。
在进入条件随机场之前,我们首先要了解下HMM。这里面有两个非常关键的假设:一是输出观察值之间相互独立,二是状态的转移过程中当前状态只与前一状态有关。因为这两个假设的成立,使得HMM便于计算。但是在多数的场景下,尤其是在大量真实语料中,观察序列更多是以一种多重的交互特征形式表现出来的,观察到元素之间广泛存在着长程相关性。此时的HMM就受到很大的限制。
由于上述原因,条件随机场被开创出来,主要的思想是源于HMM的,也是一种用来标记和切分序列化数据的统计模型。不同的是,条件随机场是在给定的标记序列下,计算整个标记序列的联合概率,而HMM则是在给定当前状态下,去定义下一个状态的分布。
条件随机场的定义:
假设X=(X1,X2,X3,…,Xn)和Y=(Y1,Y2,Y3,…,Ym)是联合随机变量,若随机变量Y构成一个无向图G=(V,E)表示的马尔可夫模型,则其条件概率分布P(Y|X)就称为条件随机场(Conditional Random Field,CRF),公式表示为:

其中w-v表示图G=(V,E)中与节点v有边连接的所有结点,w!=v表示节点v以外的所有结点。
在这里简单的说明一下随机场的概念:现有若干个位置组成的整体,当给某一个位置按照某种分布随机的赋予一个值后,则该整体被称为随机场。如果以机构地名为例子,并假定如下规则。

图1:标注表
现有n个字符构成的NER的句子,每个字符的标签都在我们已知的标签集合中选择好,当我们为每个字符选定标签后,就形成一个随机场。若在其中加入一些约束,比如所有的字符的标签只与相邻的字符的标签相关,那么此时就是马尔可夫随机场问题。马尔可夫随机场中有X和Y两种变量,X一般是给定的,Y是在给定X条件下的输出。那么在这里,X是字符,Y是标签,P(X|Y)就是条件随机场。
在条件随机场的定义中,我们并未规定变量X与Y具有相同的结构,实际在自然语言处理中,很多情况下假设其结构是相似的,表示为
X=(X1,X2,X3,…,Xn),Y=(Y1,Y2,Y3,…,Ym)

图2:线性条件随机场
一般称这种结构为线性链条件随机场,可以定义为:假设X=(X1,X2,X3,…,Xn和Y=(Y1,Y2,Y3,…,Ym)均为线性链表示的随机变量序列,若在给定的随机变量序列X的条件下,随机变量序列Y的条件概率分布P(Y|X)构成条件随机场,并且满足马尔可夫性质:
P(Yi|X,Y1,Y2,…,Ym)=P(Yi|X,Yi-1,Yi+1)
那么,可以称P(Y|X)为线性链的条件随机场。
对比于HMM,这里的线性链不仅考虑了上一个状态Yi-1,还考虑了后面一个状态Yi+1。可以通过下图直观表示。

图3:HMM与线性链
在该图中可以看到HMM属于一个有向图,而本次重点的线性链是一个无向图,也因此,HMM处理时,本次状态依赖于上一个状态,而线性链则是依赖于当前状态的周围节点的状态。
3. 关键词提取
关键词提取算法一般可以分为有监督和无监督两类。有监督的关键词提取方法主要是通过分类的方式进行,首先通过创建一个比较丰富完善的词表,然后通过计算相似度判断每个文档与词表中每个词的匹配程度,类似打标签的方式,以此达到关键词提取的效果。有监督的方法虽然可以获取到较高的提取精度,但是需要大批量的标注数据,人工成本非常高。
3.1 TF-IDF
TF-IDF算法(Term Frequency-Inverse Document Frequency,词频-逆文档频次算法)是一种基于统计的计算方法,常用于评估在一个文档集中一个词对某份文档的重要程度。这种思想是符合关键词抽取的需求,一个词语对文档越重要,那么是关键词的概率就越大,所以通常将TF-IDF算法应用在关键词提取中。
首先从算法的名称分析,TF-IDF算法是由两部分组成:TF算法和IDF算法。TF算法是统计一个词在一篇文档中出现的频次,基本思想理解为:一个词在一篇文档中出现的次数越多,那么这个词对文档的表达能力就越强。而IDF算法是统计一个词在文档集中的多少个文档中出现,基本思想理解为:如果一个词在越少数的文档中出现,则对文档的区分能力就越强。

TF-IDF算法如上图中所示,TF-IDF算法就是TF算法与IDF算法的综合使用,对于这两种算法的组合,以取IDF算法值的对数,相乘是较为有效的计算方式。
除了上述提到的传统TF-IDF算法之外,TF-IDF算法还有很多变种的加权方法。传统的TF-IDF算法中,仅仅考虑到了词的两个统计信息。因此对算法进行合理的改造和补充,这样可以更好的得到想要的结果。
3.2 TextRank算法
在上述的TF-IDF算法中,都需要基于一个现成的语料库,主题模型的关键词提取算法则是需要通过对大规模文档学习,发现文档的隐含主题。而TextRank算法则是可以脱离语料库的基础,仅对单篇文档进行分析就可以提取该文档的关键词。这也是TextRank算法的重要特点。TextRank算法的基本思想源于Google的PageRank算法。因此这里需要先了解下PageRank算法。

图4:PageRank算法示意图
PageRank算法是一种网页排名算法,其基本思想有两个:(1)链接数量。一个网页被越多的其他网页链接,表示这个网页越重要;(2)链接质量。一个网页被一个越高权值的网页链接,也表示这个网页越重要。

上述便是PageRank算法的理论,也是TextRank算法的理论基础。不同的是PageRank是又向无权图,而TextRank进行自动摘要则属于有权图,因为在计分时除了考虑链接句子的重要性外,还要考虑两个句子的相似性。因此TextRank的完整表达式为

在计算每个句子给他链接句的贡献时,就不采用平均分配的方式,而是通过计算权重占总权重的比例进行分配,这里的权重就是两个句子的相似度值。相似度计算的方法可以采用距离相似度、余弦相似度等。在对一篇文档进行自动摘要的时候,默认每个语句和其他语句都有链接关系,也就是又向完全图了。
当TextRank应用到关键字抽取的时候,与应用在自动摘要中有两个不同的地方:(1)词与词之间的关联没有权重;(2)每个词不是与其余所以词都有链接。
由于第一点的不同,那么TextRank重点分数计算将会退化,将得分平均贡献给每个链接的词。

对于第二点的不同,既然每个词与其余所有词并不是都相连,那么他们中间的链接关系该如何设定呢。这里的TextRank应用在关键字提取中时,加入了一个窗口的概念,在窗口中的词都是互相链接的。
总结:
本次的内容主要是自然语言处理技术的分享,基本标准是在将中文语言处理好后,才能够让网络模型更好的接入使用,实现比较高级的智能语言应用。
详细内容分享请移步到MindSpore论坛中查看:
以上是个人的一些见解,理解有限,欢迎大家去论坛相关帖下指正讨论!