机器学习笔记最大熵之NER

    调研报告

调研对象:最大熵(ME)模型应用NER

基本思想利用给定训练数据选择适当统计模型,使其满足所有已知事实,而对知事实不做任何假设。

基于Maximum Entropy是基于对已知的条件进行建模,因此需要给定模型约束条件,在这里有约束条件p(f)=p~(f),p~(f)为x在训练样本中的经验分布,约束这一期望值和训练样本中f的期望相同。最大熵原理呈现给我们的是一个约束优化问题,由此得到以下最大熵模型表达式:

                                                                     

其中f(x,y)为特征模版,上下文的窗口宽度取为2,λ为权重系数,模型确定出最优的λ,则可以得到最大熵模型,z(x)为标准化函数。对于λ的求解使用GIS算法或者IIS算法。

GIS算法:

(1)初始化参数,令λ:=0. 

2)计算Ep~(fi),i=1,2,...

3)for i=1,2,...n wi:=wi

4)检查收敛条件,若达到收敛条件则算法结束,否则转至第(3)步

GIS迭代次数不超过600次,运行更多次对结果一般并没有提升。

特征函数:

一些特征函数选取例子如下:需要判断“打”是动词还是量词

(x1,y1)=(一打火柴,量词)     (x2,y2)=(三打火柴,量词)

(x3,y3)=(五打塑料袋,量词)     (x4,y4)=(打电话,动词)

(x5,y5)=(打篮球,动词)


                    

定义了这两个特征函数后,对于训练数据,我们可以得到:

f1(x1,y1)=f1(x2,y2)=f1(x3,y3)=1;f1(x4,y4)=f1(x5,y5)=0

f2(x2,y2)=f2(x2,y2)=f2(x3,y3)=0;f2(x4,y4)=f2(x5,y5)=1

再如:“中国青年之原则协会命名哈尔滨中央大街为国家级青年文明号示范街”

中,由“哈尔滨”匹配的一个特征为:POS(0)=ns,POS(-1)=v,word(0)=哈尔滨

POS表示词性、ns表示词性为地名词,那么POS(0)=ns表示当前词的词性为地名词,于是整个上述表达式含义为:特征前提是当前词的词性为地名(ns)、当前词左边第一个词的词性为动词(v),当前词是“哈尔滨”;在该前提下的动作是,“当前词的标记标注为B-LOC”,这样特征就被形式化表示出来了。

经验分布:

              

其中,count(x,y)和count(x)分别表示(x,y)和x在训练数据中出现的次数

NER中的具体应用:

特征模版的选取至关重要,在这里特征表示有2个类。

1、局部特征(LF)

候选局部特征主要利用特征模版从训练语料直接抽取而来,选择时考虑两类上下文信息,假设上下文信息为+1,-1则可以构建下面的局部特征模版:

(1) 构词信息

(2) 前接词

(3) 首字

(4) 词汇表成员资格信息

(5) 未登录词

(6) 命名实体词信息

(7) 前缀和后缀

(8) 前接词与后接词的词性

利用这些特征模版,可以从语料中得到很多的候选局部特征

2、全局特征(RF)

局部特征在同一文档的后面再次或多次涉及,但是出现相近的词时会出现歧义,此时需要建立一种修正机制,利用全局特征来进行修正。

可以建立以下模版:

(1) 缩写

(2) 词缀

(3) 同义

在这里可以看到,特征模版的选取很重要,如果根据语言学的特点来进行全局特征的选取,会提高系统的识别率。

可以参考的一组模版如下:

     


    

   

特征模版选定后,基于目标候选词的上下文特征,分别计算其被标注为各类别的可信度,选取最大者类别,对于候选词上下文x与实体类别标记y,在特征库中寻找匹配特征f,根据最大熵训练得到的特征系数λ及每个上下文的归一化

将作为候选词在当前词上下文条件下被标注为类别y的初始可信度

该可信度并非是最终可信度,需要进行优化处理,当候选词的上下文符合规则库中规则时,其可信度将被增益,如规则库(RB)中的一个规则为:

若W-1为数词,则W0不是人名,若W-1=”、”,W0W-2的实体类别一致。如:

副主席张思勤、白立枕、李蒙出席会议”在这里 张思勤和李蒙能够正确识别为名字,而白立枕不容易识别,可以通过这个规则识别出其为一个名字。可见,规则库越完整,对于结果的输出更理想。

中文测试的一组结果:          

             

英文测试的一组结果:


   其他公式的推导基本都大同小异,在这里可以参考李航《统计学习方法》里面有最大模型已经其训练,在这里主要是针对最大熵应用于命名实体识别实现的方法    

在Github上有找到一个用Maximum Entropy来做NER任务的开源项目(印度尼西亚语)

https://github.com/pwcahyo/ner_maxent

 

猜你喜欢

转载自blog.csdn.net/qq_35014150/article/details/74739809