什么是序列分类器?
序列分类器(Sequence Classifier)是一种能够对序列中的每个单元(如单词、字母、音素、语素等)进行分类或标注的模型。换句话说,它不是对整个序列进行一个整体的分类,而是逐个单元地进行标注,最终给出序列中每个单元的标签。
例子:
-
在**词性标注(POS Tagging)**中,输入序列是一个句子的单词序列,例如:
- 输入:[“I”, “am”, “learning”, “AI”]
- 输出(标注序列):[“PRP”, “VBP”, “VBG”, “NN”](分别表示代词、动词、动词进行时、名词)
-
在**命名实体识别(NER)**中,输入序列是一个句子的单词序列,输出是每个单词的实体类别:
- 输入:[“Apple”, “is”, “a”, “company”, “in”, “the”, “USA”]
- 输出:[“B-ORG”, “O”, “O”, “O”, “O”, “O”, “B-LOC”](分别标记组织名和地点名)
这类任务要求模型不仅需要关注每个单元本身的特征,还需要结合上下文的序列信息,这正是序列分类器的主要应用场景。
正例和反例详细解释
为了更好地理解 HMM 和 MEMM 的特点,我会用一个实际任务(如词性标注)来对比两者的行为,并给出正例和反例说明。
任务背景:词性标注(POS Tagging)
目标:根据输入的单词序列,为每个单词标注正确的词性。
输入序列:[“The”, “dog”, “barks”]
真实输出序列(标签):[“DT”, “NN”, “VBZ”](分别表示限定词、名词、动词第三人称单数形式)
1. HMM 正例和反例
正例:
HMM 模型通过生成式建模,计算联合概率 P ( X , Y ) P(X, Y) P(X,Y),即同时考虑输入序列和标签序列的概率。
-
状态转移概率:
- P ( N N ∣ D T ) P(NN | DT) P(NN∣DT):表示当前词性为 NN(名词)时,前一个词性是 DT(限定词)的概率。
- 假设在训练语料中,限定词后面经常跟名词,比如“the dog”、“a cat”,所以:
P ( N N ∣ D T ) = 0.8 P(NN | DT) = 0.8 P(NN∣DT)=0.8
-
观测概率:
- P ( "dog" ∣ N N ) P(\text{"dog"} | NN) P("dog"∣NN):表示单词 “dog” 出现的条件是词性为 NN 的概率。
- 如果 “dog” 在训练数据中多次作为名词出现,那么:
P ( "dog" ∣ N N ) = 0.9 P(\text{"dog"} | NN) = 0.9 P("dog"∣NN)=0.9
最终:
P ( X , Y ) = P ( Y ) ⋅ P ( X ∣ Y ) = P ( D T ) ⋅ P ( "The" ∣ D T ) ⋅ P ( N N ∣ D T ) ⋅ P ( "dog" ∣ N N )