码迷,mamicode.com
首页 > 其他好文 > 详细

<知识库的构建> 3-1 被命名的实体识别分类 NERC

时间:2018-01-29 19:19:43      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:under   知识库   输出   line   根据   des   for   features   tsv   

引自Fabian Suchanek的讲义。

 

总结:主要讲了NERC的四种方式, NERC Feature,NERC rules, NERC ML和statistical NERC。NERC Feature主要讲在一个窗口中,其他token可以根据三种不同的features定下自己是什么分类,从而定义主token是什么分类。NERC rules主要讲述一种建立rules来判断token分类的方法,若某个句子或某个部分中的词满足该rule中的特征,那么就可以知道主token是哪一类,当然在面对非常大型的语料库也应该有自动建立rules的算法,本文中也有提到;NERC ML讲述的是使用机器学习做NERC,主要讲述了KNN对NERC的应用,即找到该token附近的token的分类,定义好K的值,看K个最近邻居主要在哪一类则该token就在哪一类;statistical NERC主要要知道如何找到使语料库权重最大的Y向量,若面对大型语料库时,我们无法手动定义权重,则需要有算法去计算权重,主要讲述了两个步骤,如何根据给定的语料库向量X和分类向量Y来计算W,计算了W的概率分布,用到了梯度上升,即计算使该概率分布最大的W,然后根据W的值在去判断新的语料库的标签,也是机器学习的过程,学习+测试。

 

NERC:找到语料库中entity名字并把它们分类

       例如:在tsv中,41,tower,Other

41是句子号码,tower是单词,Other是类

 

做NERC遇到的困难:

-      同一个词有不同的意思

n   例如:MTV可以使音乐电视,也可以是大屏幕

-      二义性

 

文章中讲了四种NERC的方式:

1 - NERC Feature

代币Token:一系列字母组成的一个个体

窗口Window:宽度为a,代表在此窗口里,主代币前有a个单词,后面有a个单词,则整个窗口宽度2*a+1

       例如:主token的前一个单词位置为-1

 

NERC特征NERC Feature:一个代币的属性可以指出窗口内主token的类

主要有这么几种Feature:

-      句法特征Syntactic Feature:例如大小写,数字,空格,正则

-      字典特征Dictionary Feature:例如城市,国家

-      形态特征Morphological Features:例如:-ist,-isme,……

n   POS:part of speech,代表有相同语法角色的词

 

2 - NERC by rules

规定Rules:f1……fn=>c , f是指定特征designated feature

                     若一个window中的token们可以满足rule里的feature,那么主token就会被分到c类

小练习:自己建立rules来找到文章中的planet

Lamuella is the nice planet where Arthur Dent lives. Santraginus V is a planet with marble-sanded beaches. Magrathea is an ancient planet in Nebula. The fifty-armed Jatravartids live on Viltvodle VI.

[CapWord] is the nice planet

[CapWord] is a planet

[[CapWord]] is an ancient planet

The fifty-armed Jatravartids live on [CapWord RomanNumeral]

 

若两个rule都找到了对应的字符串,该如何选择:

-      使用较长匹配的规则

-      手动定义顺序

 

如何写NERC rules:

-      比较难编程的rules

-      用正则

 

NERC rules一般是手动定义,但是也是可以学习的

-      有一个已被注释的训练语料库

-      对于里面的每一个注释都建立一个rule

-      把rules合并,用一个更泛化的特征来代替

n   例如: [Author]… [Ford]… => [Capword]…

-      把rules合并并删掉一个feature

n   例如:[Capword] says Hello ; [Capword] says bye

n   => [Capword] says

-      删掉重复的rules

-      重复这个过程

 

NERC rules要实现起来还是很困难的,因为句子成分很复杂

NERC rules的目标:

-      学习所有已注释的规则

-      忽略未注释的规则

-      不需要太多rules,因为并不需要一个注释一个rules

 

3 - NERC by ML

NERC可以被机器学习实现:

-      给出训练实例,即一个已经被备注好的语料库

-      给语料库中未注释的单词预测tag

KNN:根据该词的最近邻居决定该词属于哪一类

       K是被固定的,为了减小噪声;一般为奇数odd

原始距离函数Na?ve distance function:说明第i个feature应用于第j个位置上的与住token相关的token

       例如: = upper case

Everyone loves <per> Fenchurch </per> because

               = 1; = 0

附近K个邻居属于哪一类那此token属于哪一类

使用欧几里得距离Euclidien distance

 

4 - NERC by statistical methods

统计NERC语料库NERC by statistical corpus:是一个token构成向量,输出是一个class向量,分别对应之前向量中的tokens

特征Feature:是一个函数,长这样:f(X,i ,y)

       X是token向量,i是在向量中的位置,y为class向量

例如:f1(X,i,y) := 1if xi?1 is title∧y=“pers”

f1(<Mr., Arthur>,1,pers) = 0        f1(<Mr., Arthur>,2,pers) = 1        f1(<Mr., Arthur>,1,loc) = 0

 

统计NERC的目标是根据给出的tokens向量X,给出的Features向量,权重向量,来计算分类向量Y=[y1,y2,…],尽可能使,即对于每个位置i,每个feature j,我们计算权重乘以1/0.

小练习1:计算每个Y向量所能得到的权重

X = <Dr. Dent>

F1(X,i,y) = 1 if xi = upcased word and y = loc       w1 = 2

F2(X,i,y) = 1 if xi-1 is title and y = pers                  w2 = 5

Y1 = [oth, loc]          2 * 0 + 5 * 0 (Dr.) + 2 * 1 + 5 * 0 (Dent) = 0

Y2 = [oth, pers]        2 * 0 + 5 * 0 (Dr.) + 2 * 0 + 5 * 1 (Dent) = 5

所以Y2更好

小练习2:计算出大于权重3的Y

X = <in London>

F1(X,i,y) = 1 if xi = upcased and y = pers        w1 = 2

F2(X,i,y) = 1 if xi-1 = “in”and y = loc          w2 = 5

F3(X,i,y) = 1 if y = oth                                       w3 = 1

Y1 = [oth, pers]        2 * 0 + 5 * 0 + 1 * 1 + 2 * 1 + 5 * 0 + 1 * 0 = 3

Y2 = [oth, loc]          2 * 0 + 5 * 0 + 1 * 1 + 2 * 0 + 5 * 1 + 1 * 0 = 5

Etc……

 

我们现在的算法是,根据给定的corpus向量X,每个单词在向量中的位置i,和权重向量W来计算分类向量Y,当需要计算的分了向量Y比较复杂时我们该如何做?每条rule的权重该如何得到?

 

建立NERC模型:

1 - 定义Features向量F = <f1,……,fn>

2 - 生成训练集,由corpus向量X和分类向量Y构成

X = <x1,……,xm>, Y = <y1,…… ,ym>

3 - 根据X,Y,找到每条rule的权重w,使X和Y能够很好的对应

       例如好的Features权重高,不好的权重低

根据计算出的w,我们可以算关于w的概率分布,公式如下:

 技术分享图片

技术分享图片

 

所以Pr的上方是计算每个位置上的feature的权重之和,为了使概率分布在[0,1],下方是除以其他所有注释Y,即在上方里没有用到的Y向量的可能世界。

 

我们最大化这个概率分布Pr:

因为ln是单调函数,所以我们可以直接在左右两边都套上ln:

 技术分享图片

 

 

所以我们可以看出在这个式子中,除了w,其余都为constant。所以我们使用梯度上升法使该等式最大化,算法为:

1 - 随机定义一个W

2 - 计算该式子关于W的偏导

3 - 使W在导数方向进行梯度上升,即

4 - 直至该式子达到最大

 

所以关于statistical NERC,我们给出的变量有:corpus向量X,位置i,用于训练的分类向量Y,特征向量F,我们首先要得到能使概率分布最大的权重向量w (学习):

技术分享图片

之后我们给出新的语料库,我们根据计算出的W,来计算它的分类向量Y:

技术分享图片 

<知识库的构建> 3-1 被命名的实体识别分类 NERC

标签:under   知识库   输出   line   根据   des   for   features   tsv   

原文地址:https://www.cnblogs.com/mengzizhao/p/8378734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!