序列标注两种模式BIO和BIOES

Posted 静待花开s0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列标注两种模式BIO和BIOES相关的知识,希望对你有一定的参考价值。

序列标注两种模式BIO和BIOES

BIO标注模式

(B-begin,I-inside,O-outside)

BIOES标注模式

(B-begin,I-inside,O-outside,E-end,S-single)

在自然语言处理的序列标注问题中,标签方案的使用可能因人而异。

标签说明

标签方案中通常都使用一些简短的英文字符[串]来编码。

标签是打在token上的。

对于英文,token可以是一个单词(e.g. awesome),也可以是一个字符(e.g. a)。

对于中文,token可以是一个词语(分词后的结果),也可以是单个汉字字符。

为便于说明,以下都将token试作等同于字符。

标签列表如下:

  • B,即Begin,表示开始
  • I,即Intermediate,表示中间
  • E,即End,表示结尾
  • S,即Single,表示单个字符
  • O,即Other,表示其他,用于标记无关字符

常见标签方案

基于上面的标签列表,通过选择该列表的子集,可以得到不同的标签方案。同样的标签列表,不同的使用方法,也可以得到不同的标签方案。

常用的较为流行的标签方案有如下几种:

  • IOB1: 标签I用于文本块中的字符,标签O用于文本块之外的字符,标签B用于在该文本块前面接续则一个同类型的文本块情况下的第一个字符。
  • IOB2: 每个文本块都以标签B开始,除此之外,跟IOB1一样。
  • IOE1: 标签I用于独立文本块中,标签E仅用于同类型文本块连续的情况,假如有两个同类型的文本块,那么标签E会被打在第一个文本块的最后一个字符。
  • IOE2: 每个文本块都以标签E结尾,无论该文本块有多少个字符,除此之外,跟IOE1一样。
  • START/END (也叫SBEIO、IOBES): 包含了全部的5种标签,文本块由单个字符组成的时候,使用S标签来表示,由一个以上的字符组成时,首字符总是使用B标签,尾字符总是使用E标签,中间的字符使用I标签。
  • IO: 只使用I和O标签,显然,如果文本中有连续的同种类型实体的文本块,使用该标签方案不能够区分这种情况。

其中最常用的是IOB2、IOBS、IOBES。

下面是个例子,来自于GitHub,可参见第二个参考链接。

Example:BillworksforBankofAmericaandtakestheBostonPhiladelphiatrain.
IO:I-PEROOI-ORGI-ORGI-ORGOOOI-LOCI-LOCO
IOB1:I-PEROOI-ORGI-ORGI-ORGOOOI-LOCB-LOCO
IOB2:B-PEROOB-ORGI-ORGI-ORGOOOB-LOCB-LOCO
IOE1:I-PEROOI-ORGI-ORGI-ORGOOOE-LOCI-LOCO
IOE2:E-PEROOI-ORGI-ORGE-ORGOOOE-LOCE-LOCO
BILOU:U-PEROOB-ORGI-ORGL-ORGOOOU-LOCU-LOCO
SBEIO:S-PEROOB-ORGI-ORGE-ORGOOOS-LOCS-LOCO

上面的BILOU方案猜想应该是跟SBEIO一致的,只不过使用的标签不完全一样,其中U(Unitary,单一的)应该对应SL(Last,最后的)应该对应E。这里没有再做考证。

以上是关于序列标注两种模式BIO和BIOES的主要内容,如果未能解决你的问题,请参考以下文章

brat进行英文数据集的标注-实战(标注后编写成BIO格式便于模型训练)

使用OpenSSL内存BIO以正确的方式写入和读取以null结尾的字符串

惊!brat安装后进行标注-实战,并且通过一行代码自动标注为BIO格式,便于模型训练-and 错误解决

惊!brat安装后进行标注-实战,并且通过一行代码自动标注为BIO格式,便于模型训练-and 错误解决

第09课:RNN 在序列问题中的应用——序列标注

java --- BIO NIO AIO