资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

适用场景:序列标注

简介

序列标注是经典的NLP问题之一,其本质就是对于一个一维线性输入序列中的每个元素打上标签集合y中的某个标签。 所以,其本质上是对线性序列中每个元素根据上下文内容进行分类的问题。一般情况下,对于NLP任务来说,线性序列就是输入的文本,往往可以把一个汉字看做线性序列的一个元素,而不同任务其标签集合代表的含义可能不太相同,但是相同的问题都是:如何根据汉字的上下文给汉字打上一个合适的标签。

适用场景

常见场景有中文分词、词性标注、命名实体识别等,下面对这些场景进行一个简单的介绍。

中文分词任务

中文分词任务是将一段中文文本(即一个汉字序列)切分成一个个单独的词,形成一个保持合理语义的词序列,例如:“李明在百度公司工作”的分词结果为“李明/在/百度/公司/工作”,那么我们如何将这种切分结果变成标签的标注呢?我们注意到,在中文分词任务中,我们不需要标出每个词的类别,或者说并不需要对词的类别做区分,只需要标记出词的边界。一般来说,对于边界的标注方法可以有多种选择,比如:BIES标记法,B代表开始一个词的开始(Begin),I代表一个词的中间(Intermediate),E代表一个词的结束(End),S代表一个单字为一个词(Single)。那么上面的例子标注如下:

李       B
明       E
在       S
百       B
度       E
公       B
司       E
工       B
作       E

上面的标注方式中,“李”“明”分别被标为“B”和“E”,即代表一个词的开始和结束,那么该标注意味着将“李明”分成一个词。因此上面的标注代表了分词结果:“李明 在 百度 公司 工作”。

另外,BIES标记法可以被简化为BI标记法,B/I/E/S简化为B/I,去掉了E和S。其中B代表一个词的开始,I代表一个词的中间或结尾,那么标注结果如下:

李       B
明       I
在       B
百       B
度       I
公       B
司       I
工       B
作       I

根据简化的标记法,“李”“明”分别被标为“B”和“I”,而后面的“在”被标为了“B”,为一个新词的开始,那么“李明”则成为一个词。同理,“在”后面的“百”字被标为“B”,那么“百”就是一个新词的开始,所以“在”单独成一个词。因此上面的标注就代表分词结果应为:“李明 在 百度 公司 工作”。

BI标记法非常简洁,已经成为业界最常用的标注法之一,我们在本章节也将采用BI标记法。那么中文分词任务适配到序列标注问题上的定义即为,给定一段中文文本,对文本中的每个字打上B/I标签。

词性标注任务

词性标注任务(Part-of-Speech Tagging, POS-tagging)是将一段中文文本中的每一个词标注上对应的词性,标准的词性划分有几十类,比如名词(N)、人名(NR)、机构团体(NT)、介词(P)、动词(V)、名动词(VN)等等。由于在词性标注的时候,需要同时标记出词的词性及边界,我们采用联合标记的方法进行标注,即“边界标签+词性类型标签”,边界标签还是采用BI标记法,词性类型用对应的英文缩写表示。仍然以“李明在百度公司工作”为例,标注结果如下:

李       B-NR
明       I-NR
在       B-P
百       B-NT
度       I-NT
公       B-N
司       I-N
工       B-V
作       I -V

上面的例子中,每个字的标签都是边界标记B或I后面加上词性的类型。例如,根据BI标记,“李明”为一个词,对应的词性为标签中“-”后的“NR”,代表人名。因此,上面的标注代表了这样的词性标注结果:“李明 NR / 在 P / 百度 NT / 公司 N / 工作 V”。

命名实体识别任务

命名实体识别(Named Entity Recognition, NER)是自然语言处理中的一项基础任务,命名实体一般是指文本中以名称为标识的实体,通常包括人名、地名、组织机构名、日期时间、专有名词等。命名实体识别任务则是指将一段文本中的命名实体及其类型识别并标注出来。当然,在不同的应用下,我们关注的命名实体的类别也是不同的。比如,在健康医疗的场景下,我们关注的命名实体主要包括药物名称、疾病名称、人名、日期时间等;而在出行场景下,我们关注始发地、目的地、出行方式、日期时间等命名实体。

同样,我们采用联合标记的方法进行标注,采用“边界标签+命名实体类型标签”的方式。这里我们给出几个命名实体类型标签的例子,比如人名的标签记为PER(代表PERSON),地名的标签为LOC(代表LOCATION),组织机构名的标签为ORG(代表ORGANIZATION),时间的标签为TIME。

此处需要注意的是,命名实体识别任务与上述的词性标注任务不同,在词性标注任务中我们列出了所有的词性,所以文本中的每个词都属于某一种词性类别,而在命名实体识别任务中,文本中的一些词是没有类别的。比如上面的“李明在百度公司工作”中,“在”和“工作”不属于人名、地名、组织机构名的一种,因此我们在BI标记法中引入一个新的标签O,称为BIO标记法,其中O代表其他(Other),不属于任何一种命名实体的词可以被标记为“O”。那么,这句话的标注结果如下:

李       B-PER
明       I-PER
在       O
百       B-ORG
度       I-ORG
公       I-ORG
司       I-ORG
工       O
作       O

我们看到,根据上面的标注方式,“李明”被标注为人名,“百度公司”被标注为机构名。

实体关系/属性抽取

实体关系,实体属性抽取是信息抽取的关键任务;实体关系抽取是指从一段文本中抽取关系三元组,实体属性抽取是指从一段文本中抽取属性三元组。

  • 实体关系抽取举例:“任正非在深圳创办了华为公司。”这个句子中“任正非”是实体1,“华为”是实体2,而它们之间的关系是“创办”,最终抽取的三元组为(任正非,创办,华为)。
  • 实体属性抽取举例:“张三男汉族硕士学历 刘邦文 汉族 民族。”这个句子中“张三”是实体,“民族”是属性,“汉族”是属性值,最终抽取的三元组为(张三,民族,汉族)。

可以将实体属性抽取中的“属性”和“属性值”分别对应理解成实体关系抽取中的“关系”和“实体2”。

多对实体关系/属性抽取

相对于实体关系/属性抽取版本,新增了支持一对一之外还支持了一对多,多对一,多对多的情况:

  • 一对一:“张三男汉族硕士学历”含有一对一的属性三元组(张三,民族,汉族);
  • 一对多:“华扬联众数字技术股份有限公司于2017年8月2日在上海证券交易所上市”,含有一对多的属性三元组(华扬联众数字技术股份有限公司,上市时间,2017年8月2日)和(华扬联众数字技术股份有限公司,上市地点,上海证券交易所上市);
  • 多对一:“上海森焱软件有限公司和上海欧提软件有限公司的注册资本均为100万人民币”,含有多对一的属性三元组(上海森焱软件有限公司,注册资本,100万人民币)和(上海欧提软件有限公司,注册资本,100万人民币);
  • 多对多:“大华种业稻麦种子加工36.29万吨、销售37.5万吨;苏垦米业大米加工22.02万吨、销售24.86万吨”,含有多对多的属性三元组(大华种业,稻麦种子产量,36.29万吨)和(苏垦米业,大米加工产量,22.02万吨)。

    多对多的标注数据示例如下:

 {
     "text":"倪金德,1916年生,奉天省营口(今辽宁省营口市)人",
     "spo_list":[
         {
             "predicate":"出生日期",
             "subject":[
                 0,
                 3
             ],
             "object":[
                 4,
                 9
             ]
         },
         {
             "predicate":"出生地",
             "subject":[
                 0,
                 3
             ],
             "object":[
                 11,
                 16
             ]
         }
     ]
 }
上一篇
文本匹配
下一篇
准备工作:序列标注