昇思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)

相关推荐
moxiaoran575327 分钟前
uni-app学习笔记三十--request网络请求传参
笔记·学习·uni-app
嘉陵妹妹44 分钟前
深度优先算法学习
学习·算法·深度优先
乖乖是干饭王1 小时前
Linux系统编程中的_GNU_SOURCE宏
linux·运维·c语言·学习·gnu
待什么青丝2 小时前
【TMS570LC4357】之相关驱动开发学习记录2
c语言·arm开发·驱动开发·单片机·学习
行云流水剑3 小时前
【学习记录】如何使用 Python 提取 PDF 文件中的内容
python·学习·pdf
虾球xz3 小时前
CppCon 2015 学习:CLANG/C2 for Windows
开发语言·c++·windows·学习
蓝婷儿4 小时前
6个月Python学习计划 Day 17 - 继承、多态与魔术方法
开发语言·python·学习
持续前进的奋斗鸭5 小时前
Postman测试学习(1)
学习·postman
hello kitty w5 小时前
Python学习(7) ----- Python起源
linux·python·学习
一叶知秋秋5 小时前
python学习day39
人工智能·深度学习·学习