昇思25天学习打卡营第23天|LSTM+CRF序列标注

Mindspore框架CRF条件随机场概率图模型实现文本序列命名实体标注|(一)序列标注与条件随机场的关系
Mindspore框架CRF条件随机场概率图模型实现文本序列命名实体标注|(二)CRF模型构建
Mindspore框架CRF条件随机场概率图模型实现文本序列命名实体标注|(三)双向LSTM+CRF模型构建实现


Mindspore框架CRF条件随机场概率图模型实现文本序列命名实体标注|序列标注与条件随机场的关系

一、序列标注定义

序列标注:指给定输入序列,给序列中每个Token(word)进行标注标签的过程。

序列标注问题:是从文本中进行信息抽取,包括标注分词(Word Segmentation)、词性标注(Position Tagging)、命名实体识别(Named Entity Recognition, NER)等。

"BIOE"标注方法:为命名实体识别的标注方法;是将一个实体(Entity)的开头标注为B,其他部分标注为I,非实体标注为O。表示文本中的每个字符分为四种类型:‌

  • B(‌Begin)‌表示一个实体的开始。‌
  • I(‌Inside)‌表示实体内部的字符。‌
  • O(‌Outside)‌表示不属于任何实体的字符。‌
  • E(‌End)‌表示一个实体的结束。‌

输入序列,输出标注。


标注的作用与意义 :通过这种标注方式,‌我们可以清晰地识别出句子中的不同实体及其边界 ,‌这对于自然语言处理中的命名实体识别任务非常有用。‌BIOE标注法提供了一种标准化的方式来标记文本中的实体,‌它涉及到从文本中识别出具有特定意义的实体,‌如人 (PERSON)、‌地点 (LOCATION)、‌组织机构 (ORG e.g., 公司、‌政府机构等)、‌时间表达式 (DATE) 等。‌使得机器学习模型能够更容易地学习和识别这些实体,从而提升模型对文本中实体信息的理解和提取能力。‌

二、条件随机场定义

序列标注不仅仅需要对单个Token进行分类预测,同时相邻Token直接有关联关系
CRF:一种能够学习到这种关联关系的算法-条件随机场概率图模型

线性链条件随机场(Linear Chain CRF):序列标注问题具有线性序列特点,选择线性链条件随机场。

2.1 Line chain CRF的定义

设 x = { x 0 , . . . , x n } x=\{x_0, ..., x_n\} x={x0,...,xn}为输入序列, y = { y 0 , . . . , y n } , y ∈ Y y=\{y_0, ..., y_n\},y \in Y y={y0,...,yn},y∈Y为输出的标注序列,其中 n n n为序列的最大长度, Y Y Y表示 x x x对应的所有可能的输出序列集合。则输出序列 y y y的概率为:

P ( y ∣ x ) = exp ⁡ ( Score ( x , y ) ) ∑ y ′ ∈ Y exp ⁡ ( Score ( x , y ′ ) ) ( 1 ) \begin{align}P(y|x) = \frac{\exp{(\text{Score}(x, y)})}{\sum_{y' \in Y} \exp{(\text{Score}(x, y')})} \qquad (1)\end{align} P(y∣x)=∑y′∈Yexp(Score(x,y′))exp(Score(x,y))(1)

设 x i x_i xi, y i y_i yi为序列的第 i i i个Token和对应的标签,则 Score \text{Score} Score需要能够在计算 x i x_i xi和 y i y_i yi的映射的同时,捕获相邻标签 y i − 1 y_{i-1} yi−1和 y i y_{i} yi之间的关系,因此我们定义两个概率函数:

  1. 发射概率函数 ψ EMIT \psi_\text{EMIT} ψEMIT:表示 x i → y i x_i \rightarrow y_i xi→yi的概率。
  2. 转移概率函数 ψ TRANS \psi_\text{TRANS} ψTRANS:表示 y i − 1 → y i y_{i-1} \rightarrow y_i yi−1→yi的概率。

则可以得到 Score \text{Score} Score的计算公式:

Score ( x , y ) = ∑ i log ⁡ ψ EMIT ( x i → y i ) + log ⁡ ψ TRANS ( y i − 1 → y i ) ( 2 ) \begin{align}\text{Score}(x,y) = \sum_i \log \psi_\text{EMIT}(x_i \rightarrow y_i) + \log \psi_\text{TRANS}(y_{i-1} \rightarrow y_i) \qquad (2)\end{align} Score(x,y)=i∑logψEMIT(xi→yi)+logψTRANS(yi−1→yi)(2)

设标签集合为 T T T,构造大小为 ∣ T ∣ x ∣ T ∣ |T|x|T| ∣T∣x∣T∣的矩阵 P \textbf{P} P,用于存储标签间的转移概率;由编码层(可以为Dense、LSTM等)输出的隐状态 h h h可以直接视作发射概率,此时 Score \text{Score} Score的计算公式可以转化为:

Score ( x , y ) = ∑ i h i [ y i ] + P y i − 1 , y i ( 3 ) \begin{align}\text{Score}(x,y) = \sum_i h_i[y_i] + \textbf{P}{y{i-1}, y_{i}} \qquad (3)\end{align} Score(x,y)=i∑hi[yi]+Pyi−1,yi(3)

相关推荐
数据与后端架构提升之路39 分钟前
从神经元到神经网络:深度学习的进化之旅
人工智能·神经网络·学习
一行11 小时前
电脑蓝屏debug学习
学习·电脑
星LZX1 小时前
WireShark入门学习笔记
笔记·学习·wireshark
阑梦清川1 小时前
在鱼皮的模拟面试里面学习有感
学习·面试·职场和发展
qq_433099401 小时前
Isaac Gym学习笔记——概述
学习
秃头佛爷3 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
dayouziei5 小时前
java的类加载机制的学习
java·学习
dsywws8 小时前
Linux学习笔记之vim入门
linux·笔记·学习
晨曦_子画9 小时前
3种最难学习和最容易学习的 3 种编程语言
学习
城南vision9 小时前
Docker学习—Docker核心概念总结
java·学习·docker