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

引自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:

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

时间: 2024-10-08 17:08:11

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

&lt;知识库的构建&gt; 2-1 有名字的实体的识别 Named Entity Recognition

引自Fabian Suchanek的讲义. 总结:NER是为了从语料库中找到实体的名字,即要识别语料库中哪写单词使我们想读出来的.NER的实现主要有两种方法,一种是字典法,另一种是正则表达式法.传统字典法就是把entity放入字典中去找是否有对应的名字,很慢,所以后期有了新字典法,即Trie.正则部分强调了如何根据language的形态写出对应的正则.所以重点是要知道实现NER的两种方法及其优缺点及如何用正则描述language. 被命名的实体Named entity:带名字的entity 被命

神经网络结构在命名实体识别(NER)中的应用

近年来,基于神经网络的深度学习方法在自然语言处理领域已经取得了不少进展.作为NLP领域的基础任务-命名实体识别(Named Entity Recognition,NER)也不例外,神经网络结构在NER中也取得了不错的效果.最近,我也阅读学习了一系列使用神经网络结构进行NER的相关论文,在此进行一下总结,和大家一起分享学习. 1 引言 命名实体识别(Named Entity Recognition,NER)就是从一段自然语言文本中找出相关实体,并标注出其位置以及类型,如下图.它是NLP领域中一些复

CS224d 单隐层全连接网络处理英文命名实体识别tensorflow

什么是NER? 命名实体识别(NER)是指识别文本中具有特定意义的实体,主要包括人名.地名.机构名.专有名词等.命名实体识别是信息提取.问答系统.句法分析.机器翻译等应用领域的重要基础工具,作为结构化信息提取的重要步骤. NER具体任务 1.确定实体位置 2.确定实体类别 给一个单词,我们需要根据上下文判断,它属于下面四类的哪一个,如果都不属于,则类别为0,即不是实体,所以这是一个需要分成 5 类的问题: ? Person (PER) ? Organization (ORG) ? Locatio

命名实体识别---入门

命名实体识别(Named Entity Recognition,后文简称NER) 是指从文本中识别具有特定类别的实体(通常是名词),例如人名.地名.机构名.专有名词等.命名实体识别是信息 检索,查询分类,自动问答等问题的基础任务,其效果直接影响后续处理的效果,因此是自然语言处理研究的一个基础问题. 传统的方法 NER的问题通常被抽象为序列标注(Sequence labeling)问题.所谓序列标注是指对序列中每个符号赋予一个特定的标签.

基于深度学习做命名实体识别

基于CRF做命名实体识别系列 用CRF做命名实体识别(一) 用CRF做命名实体识别(二) 用CRF做命名实体识别(三) 摘要 1. 之前用CRF做了命名实体识别,效果还可以,最高达到0.9293,当然这是自己用sklearn写的计算F1值, 后来用**conlleval.pl**对CRF测试结果进行评价,得到的F1值是**0.9362**. 2. 接下来基于BILSTM-CRF做命名实体识别,代码不是自己写的,用的github上的一个大佬写的,换了自己的数据集,得到最终的结果是0.92. 3.

NLP入门(八)使用CRF++实现命名实体识别(NER)

CRF与NER简介 ??CRF,英文全称为conditional random field, 中文名为条件随机场,是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫(Markov)随机场. ??较为简单的条件随机场是定义在线性链上的条件随机场,称为线性链条件随机场(linear chain conditional random field). 线性链条件随机场可以用于序列标注等问题,而本文需要解决的命名实体识别(NER)任务正好可通过序列标注方

用深度学习做命名实体识别(四)——模型训练

通过本文你将了解如何训练一个人名.地址.组织.公司.产品.时间,共6个实体的命名实体识别模型. 准备训练样本 下面的链接中提供了已经用brat标注好的数据文件以及brat的配置文件,因为标注内容较多放到brat里加载会比较慢,所以拆分成了10份,每份包括3000多条样本数据,将这10份文件和相应的配置文件放到brat目录/data/project路径下,然后就可以从浏览器访问文件内容以及相应的标注情况了. 链接:https://pan.baidu.com/s/1-wjQnvCSrbhor9x3G

用深度学习做命名实体识别(六)-BERT介绍

什么是BERT? BERT,全称是Bidirectional Encoder Representations from Transformers.可以理解为一种以Transformers为主要框架的双向编码表征模型.所以要想理解BERT的原理,还需要先理解什么是Transformers. Transformers简单来说是一个将一组序列转换成另一组序列的黑盒子,这个黑盒子内部由编码器和解码器组成,编码器负责编码输入序列,然后解码器负责将编码器的输出转换为另一组序列.具体可以参考这篇文章<想研究B

用深度学习做命名实体识别(七)-CRF介绍

还记得之前介绍过的命名实体识别系列文章吗,可以从句子中提取出人名.地址.公司等实体字段,当时只是简单提到了BERT+CRF模型,BERT已经在上一篇文章中介绍过了,本文将对CRF做一个基本的介绍.本文尽可能不涉及复杂晦涩的数学公式,目的只是快速了解CRF的基本概念以及其在命名实体识别等自然语言处理领域的作用. 什么是CRF? CRF,全称 Conditional Random Fields,中文名:条件随机场.是给定一组输入序列的条件下,另一组输出序列的条件概率分布模型. 什么时候可以用CRF?