什么是序列标注(Sequence Tagging)?序列标注,也称为序列建模,是自然语言处理中一个基本建模方法。

  • 序列标注的具体任务很多,包括:

    1. 词性标注(Part-of-speech (POS) tagging):对每一个词预测出其对应的词性标签(如动词、名词等);
    2. 命名实体识别(Named Entity recognition):在段落文本中识别出特定含义的实体(如人名、地名、专有名词等)并识别实体边界(如BIO);

      实际上,对于中文文本的命名实体识别也相当于完成了“分词”处理。

    3. 语义角色标注(Semantic role labeling):在段落文本中识别词在事件中的角色(如施事者,受事者等);

    等等。【实际上上述三个任务层级是逐级递增的】

  • 序列标注最终的目标就是提取事件(高度抽象的统一样式),从而实现自然语言的语义理解。

    • 在传统的NLP流程中,文本经过预处理和词(静态)嵌入后,再进行序列标注。【一般会直接使用开源词性标注工具,比如Stanford CoreNLP哈工大LTP等】
  • 下面对词性标注和命名实体识别进行详细阐述:

词性标注(POS)

注:下述词性标注只针对英文文本,对于其他语言其POS方式可能略有不同。

  • 词性,即词类或句法类别,反映了关于词的有用信息。不同的词具有不同的功能,大致可分为两类:

    • 封闭类:固定的功能词,例如介词(in、on、of)、定语(the、a)
    • 开放类:经常添加新词,如名词(OpenAI、Anthropic)、动词(google)、形容词、副词。

    在英语文本中,可以有超过40种词性标注!【可参见Penn TreeBank论文

  • 需要注意的是,每个词在不同的语境中可能有不同的词性/意义/功能,因此需要进行消歧。

    • 统计研究表明,在一个大型语料库中,约有85%的单词有唯一确定的词性,但它们在文本中出现的频数只占不到一半。
  • 我们先考虑一个基线模型:将每个词归入其在训练集中出现频率最高的类别。

    • 实验表明,这个基线模型在语料库上可以准确识别约92%的词块。
    • 然而,当我们计算句子级别的准确度时,其准确率就会指数级下降,词性标注与句法分析性能不足。
  • 于是我们要在基线模型基础上进行改进。首先明确,词性标注的目标是:已知每个词所有可能的词性后,找到概率最大的词性序列组合。下面分别介绍基于词的标注方法和基于整个序列的标注方法:

基于词的标注方法

  • 基于词的标注方法主要有朴素贝叶斯和多元逻辑斯蒂回归两种。下面用符号进行表示:
  • xx为一个词,yy为其对应的词性,那么词性标注需要求的就是arg maxyP(yx)\displaystyle\argmax_y P(y|x)
    • xx在训练集中从未出现过时,P(yx)P(y|x)就无法计算。此时我们可以考虑使用朴素贝叶斯方法,将判别模型转为生成模型: arg maxyP(yx)=arg maxyP(xy)P(y)P(x)=arg maxyP(xy)P(y)\argmax_y P(y|x)=\argmax_y \frac{P(x|y)P(y)}{P(x)}=\argmax_y P(x|y)P(y) 其中P(y)P(y)为词性先验概率分布,而P(xy)P(x|y)则反映同一类词性下该词的出现概率。【适合小语种词性标注】
    • 与之相对的多元逻辑斯蒂回归直接使用判别方法(可以捕捉到词的特征):【适合大样本词性标注】 P(yx;β)=exp(xβy)yYexp(xβy)P(y|x; \beta) = \frac{\exp\left(x^\top \beta_y\right)}{\displaystyle\sum_{y' \in \mathcal{Y}} \exp\left(x^\top \beta_{y'}\right)}

基于序列的标注方法

  • 上述分类模型对序列中的元素进行独立预测,可能会导致输入xx的过度表达(包括在不同的时间步长xix_ixjx_j之间的输入之间的相关性)
  • 对此,我们需要进行改进。经过观察发现,一个词的词性(或POS)很大程度上取决于其语境,某些POS组合(如<形容词,定冠词><定冠词,介词>)的可能性极低,所以最好根据整个句子而不是单个词语进行判定。
    • 具体而言,我们需要考虑另一个重要的信息来源:词性标签yy中的相关性。
  • 于是,将词性标签序列看作状态序列,原始词序列看作观测序列,那么就可以使用序列概率图模型进行建模,典型代表就是隐马尔可夫模型条件随机场。【此处作略】

命名实体识别(NER)

  • 命名实体识别的主要任务是:确定构成专有名称的文本跨度,并标记实体的类型。常见的实体类型包括:

    • PER(个人)
    • LOC(地点)
    • ORG(组织机构)
    • MISC(杂项)

    对于非实体,则使用O标记。一个命名实体可能含有多个词。

  • NER的具体流程如下:

    1. 将训练文本切分成字(词)序列;
    2. 对于每一个字,生成一个字典存放其特征(前后相邻字、是否标点、是否句首/尾、是否姓氏等);
    3. 将特征组合作为输入送进序列标注模型(如CRF)进行训练,得到实体标签,以及BIO标签:
      • B(Beginning)表示命名实体的开头
      • I(Inside)表示命名实体中间
      • O(Outside)表示命名实体之外

      有时还会加上E(Ending,命名实体结尾)和S(singleton,单词表示实体)两个标签。

  • 网络上也可以找到一些开源的NER数据集,这里就不赘述了。


OK,到这里课内《自然语言课程》PPT的内容就基本整理完了,后面涉及神经网络的部分笔者决定留给机器学习方法-深度学习篇。

简单说下感想:笔者本来跨选这门课是想看看CS专业是怎么讲NLP(以及LLM)的,结果发现是49入国军(不是
学习内容的过程更像是在博物馆里窥探古人的智慧(笑)【看来仍需自练武功】
之后笔者会基于slp3的内容以及其他相关资料继续补充,给NLP一个体面的完结hh