> For the complete documentation index, see [llms.txt](https://kerasnoone.gitbook.io/garnet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kerasnoone.gitbook.io/garnet/zi-ran-yu-yan-chu-li/nlp-chang-jian-ren-wu/xu-lie-biao-zhu/xu-lie-biao-zhu-de-ji-zhong-fang-an.md).

# 序列标注的几种方案

## 引入

对于**实体识别**, **关键词提取**, **词性标注**等等序列标注任务, 如果使用以下的简单的标注方案:

* 对于关键词提取任务, 将关键词对应的每个字标注为I, 其他所有标注为O
* 对于实体识别:
  * 如果只识别一种实体, 将实体对应的每个字标注为I, 其他所有标注为O
  * 如果同时识别多种实体, 对于每种实体使用单独的标签类别进行标注, 其他的标注为O

如果采用以上的标注方案, 在结果上就将每个字孤立起来了. 实际上标注任务, 字与字之间有着密切的关系, 如果将字分开, 独立考虑, 将会很大的降低模型的质量.

常用的序列任务标注方案有以下几种.

## BIO

每个元素被标注为三种:

* **B**: 元素为某片段的第一个元素, 例如标注中文人名`NR`, `B-NR`表示人名的第一个字
* **I**: 元素为某片段的中间元素, 即除第一个元素外的任意位置的元素. `I-NR`可以标注在人名中除第一字的任意位置
* **O**: 非特殊片段中的元素. 对于人名标注任务, 即为非人名的其他字

另外, 如果序列标注任务同时识别多种特殊片段, 如同时识别人名`NR`和地名`NS`, 就会有`B-NR`和`B-NS`这样的存在.

具体来说, 对于实体识别任务, 如果同时识别两种实体, 在采用BIO标注体系时, 每种实体对应着两种标注, 再加上不属于这两种实体的标注`O`, 共需要使用5中标注标签.

## BMSE

BMSE标注体系也称为BIOES标注体系, 两者是完全等价的. 这种体系是BIO的升级版, 标注更细致. 以实体识别为例:

* **B**: 实体的第一个元素(字)
* **M** / **I**: 实体的中间元素
* **E**: 实体的最后一个元素
* **S**: 单元素(字)成实体
* **O**: 不属于实体的一部分

这样的标注体系更详细, 但同时标注时需要花费更多的功夫.

与BIO相同, 同时对多种实体进行标注时, 每种实体都对应着自己的BMSE, 最终标注的总类别数量与实体的种类成正比.

## 参考资料

* [序列标注中的BIO标注介绍](https://blog.csdn.net/HappyRocking/article/details/79716212)
* [序列标注两种模式BIO和BIOES](https://blog.csdn.net/u011828281/article/details/81171066)
* [中文词性标注简介](https://blog.csdn.net/sinat_33741547/article/details/78894163)
