实体识别方法
隐藏状态的初始分布Π = [π(i)]N,这里指的是标签的先验概率分布。如果假设某个词的标签只与其相邻的词的标签有关,则形成马科夫随机场,同时由于这个随机场只有两种变量,令X为词,Y为实体类型标签,则形成一个条件随机场,即,我们的目标时求解P(Y|X)。解码隐藏状态序列—维特比算法,问题:给定训练好的模型,给定一句话,预测每个词对应的实体标签,输入:模型λ=(A,B,Π),观测序列O=(浙,江,大
实体识别方法
从文本中识别实体边界及其类型
实体识别的常用方法:基于模板和规则。将文本与规则进行匹配来识别出命名实体“说”、“老师”;“大学”、“医院”。优点:准确,有些实体识别只能依靠规则抽取。缺点:需要大量的语言学知识;需要谨慎处理规则之间的冲突问题;构建规则的过程费时费力、可移植性不好。
实体识别的常用方法:基于序列标注的方法。词本身的特征,边界特征:边界词概率;词性;依存关系。前后缀特征,姓氏:李XX、王X;地名:XX省、XX市。字本身的特征,是否是数字;是否是字符。
确定实体识别的序列标签体系:
常见序列标注模型:HMM (隐马尔可夫模型)。有向图模型,基于马尔可夫性,假设特征之间是独立的。
HMM的要素定义:隐藏状态集合Q,对应所有可能的标签集合,大小为N;观测状态集合V,对应所有可能的词的集合,大小为M。对于一个长度为T的序列,I对应状态序列(即标签序列),O对应观测序列(即词组成的句子)。状态转移概率矩阵A=[aij]N*N:转移概率是指某一个隐藏状态(如标签“B-Per”)转移到下一个隐藏状态(如标签“I-Per” )的概率。例如,B-ORG标签的下一个标签大概率是I-ORG,但一定不可能是I-Per。发射概率矩阵B=[bj(k)]N*M:指在某个隐藏状态(如标签“B-Per”)下,生成某个观测状态(如词“陈”)的概率。隐藏状态的初始分布Π = [π(i)]N,这里指的是标签的先验概率分布。
HMM的计算问题:评估观察序列概率:给定模型λ=(A,B,Π) 和观测序列O(如一句话“浙江大学位于杭州”),计算在模型λ下观测序列O出现的概率P(O|λ),这需要用到前向后向算法。模型参数学习问题:即给定观测序列O,估计模型λ的参数,使该模型下观测序列的条件概率P(O|λ)最大。这个问题的求解需要用到基于EM算法的鲍姆-韦尔奇算法。预测问题:也称为解码问题,即给定模型λ和观测序列O,求最可能出现的对应的隐藏状态序列(标签序列),这个问题的求解需要用到基于动态规划的维特比算法。
求观测序列的概率
求观测序列的概率—前向后向算法。问题:假设模型参数全知,要求推断某个句子出现的概率;前向概率(局部状态):定义时刻t时隐藏状态为qi, 观测状态的序列为o1,o2,…ot的概率为前向概率。记为:αt(i)=P(o1,o2,…,ot,it=qi|λ)。递推关系式:从t时刻递推t+1时刻αt+1(i)=[∑j=1~N αt(j)aji]bi(ot+1),利用递推关系式,从t=1时刻递推算出t=T时刻,并计算最终结果: P(“浙江大学位于杭州”|λ)=∑i=1~N αT(i),前向后向算法比起穷举搜索的指数级复杂度,其复杂度与序列长度是线性关系。
模型参数的估计与学习,标签转移概率矩阵A=[aij]N*N,词的生成概率矩阵B=[bj(k)]N*M,标签的初始分布Π = [π(i)]N。假如我们已知D个长度为T的句子和对应的实体识别标签,即{(O1,I1),(O2,I2),…(OD,ID)}是已知的,此时我们可以很容易的用最大似然来求解模型参数。
假设样本从标签qi转移到标签qj的频率计数是Aij,那么隐藏状态转移矩阵求得
假设样本标签为qj且对应词为vk的频率计数是Bjk,那么观测状态概率矩阵为
假设所有样本中初始标签为qi的频率计数为C(i),那么初始概率分布为:
模型参数的估计与学习—鲍姆韦尔奇算法-EM算法。问题:利用训练语料估计模型参数:标签转移概率矩阵A=[aij]N*N;词的生成概率矩阵B=[bj(k)]N*M;标签的初始分布Π = [π(i)]N。很多时候我们无法得到句子对应的实体标签序列,因为这需要大量的人工数据标注工作。如果只有D个长度为T的句子,即{(O1),(O2),…(OD)}是已知的,此时可以用EM算法迭代来求解。
解码隐藏状态序列—维特比算法,问题:给定训练好的模型,给定一句话,预测每个词对应的实体标签,输入:模型λ=(A,B,Π),观测序列O=(浙,江,大,学,位,于,杭,州);输出:最有可能的隐藏状态序列I={i1,i2,…iT},即实体标签序列;这里的优化目标是使P(I|O)最大化。
解码隐藏状态序列——维特比算法。问题:给定训练好的模型,给定一句话,预测每个词对应的实体标签。输入:模型λ=(A,B,Π),观测序列O=(浙,江,大,学,位,于,杭,州);输出:最有可能的隐藏状态序列I={i1,i2,…iT},即实体标签序列,优化目标:使P(I|O)最大化。 1. 初始化局部状态:时刻1,输出为o1时,各个隐藏状态的可能性。
2.进行动态规划递推时刻t=2,3,…T时刻的局部状态。在t时刻,所有从t-1时刻的状态j中,取最大概率。从t-1时刻的状态中,选择使t时刻概率最大的那个隐藏状态的编号 3. 如此递推,可计算最后时刻T最大的δT(i),即为最可能隐藏状态序列出现的概率 4. 计算时刻T最大的Ψt(i),即为时刻T最可能的隐藏状态。 5. 利用局部状态Ψ(i)开始回溯,最终得到解码的序列,如:“ …B-ORG, I-ORG,I-ORG,I-ORG ,O,O,B-LOC ,B-LOC…”。常见序列预测模型:CRF条件随机场。随机场包含多个位置,每个位置按某种分布随机赋予一个值,其全体就叫做随机场。马尔科夫随机场假设随机场中某个位置的赋值仅与和它相邻位置的赋值有关,和不相邻位置的赋值无关。条件随机场进一步假设马尔科夫随机场中只有X和Y两种变量,X一般是给定的,而Y一般是在给定X的条件下的输出。例如:实体识别任务要求对一句话中的十个词做实体类型标记,这十个词可以从可能实体类型标签中选择,这就形成了一个随机场。如果假设某个词的标签只与其相邻的词的标签有关,则形成马科夫随机场,同时由于这个随机场只有两种变量,令X为词,Y为实体类型标签,则形成一个条件随机场,即,我们的目标时求解P(Y|X)。
CRF的机器学习模型:通过定义特征函数和权重系数转化为一个机器学习问题。训练—Training:给定训练数据集X和Y,学习CRF的模型参数wk (θ )和条件概率分布Pw(y|x),采用最大化对数似然函数和SGD即可:O(θ)=∑t=1~N logPθ(yt|xt);解码—Decoding:给定CRF条件概率分布P(y|x)和输入序列x, 计算使条件概率最大的输出序列y,可用维特比算法很方便解决这一问题。
基于深度学习的实体识别方法:
常见实现方法:BiLSTM+CRF:
BiLSTM+CRF: CRF层。 CRF层的参数是一个 (k+2)×(k+2)的矩阵 A;Aij表示的是从第 i个标签(如B-LOC)到第 j个标签(如B-Org)的转移得分;加2是因为要为句子首部添加一个起始状态以及为句子尾部添加一个终止状态。
BiLSTM+CRF: 模型训练:
基于预训练语言模型的实体识别:
实体识别解码策略:
实体识别仍面临着标签分布不平衡,实体嵌套等问题,制约了现实应用;中文的实体识别面临一些特有的问题,例如:中文没有自然分词、用字变化多、简化表达现象严重等等;实体识别是语义理解和构建知识图谱的重要一环,也是进一步抽取三元组和关系分类的前提基础。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)