1. 序列标注与命名实体识别基础
在自然语言处理领域,序列标注是一项基础而重要的任务。简单来说,就是给文本中的每个单元(可以是字、词或其他语言单位)打上对应的标签。命名实体识别(NER)是序列标注最典型的应用之一,它的目标是从非结构化文本中识别出具有特定意义的实体,如人名、地名、组织机构名等。
举个例子,对于句子"马云在杭州创立了阿里巴巴",一个理想的NER标注结果可能是:
- 马云 → PER(人名)
- 杭州 → LOC(地名)
- 阿里巴巴 → ORG(组织机构名)
序列标注任务有几个关键特点:
- 上下文依赖性:一个词的标签往往与其周围的词相关
- 标签之间存在约束关系:比如在BIO标注体系中,I-PER前面必须是B-PER或I-PER
- 输入输出都是序列:输入是词序列,输出是标签序列
提示:在实际应用中,中文NER通常采用字符级标注而非词级标注,因为中文分词本身就是一个难题,字符级标注可以避免分词错误带来的影响。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. HMM(隐马尔可夫模型)详解
2.1 HMM的基本概念
隐马尔可夫模型是一种经典的统计模型,它假设系统是一个马尔可夫过程,但状态不可直接观测(即"隐"的含义)。在序列标注任务中:
- 观测序列:就是我们可以看到的词序列
- 状态序列:就是我们想要预测的标签序列
HMM由以下五元组定义:
- 状态集合Q:所有可能的标签,如
- 观测集合V:所有可能的词或字
- 状态转移概率矩阵A:a_ij表示从状态i转移到状态j的概率
- 观测概率矩阵B:b_j(k)表示在状态j下观测到k的概率
- 初始状态概率分布π:各个状态作为序列起始状态的概率
2.2 HMM的三个基本问题
2.2.1 评估问题
给定模型λ=(A,B,π)和观测序列O,计算P(O|λ)。这可以通过前向算法或后向算法高效计算,避免直接计算的组合爆炸问题。
前向算法步骤:
- 初始化:α1(i) = π_i * b_i(o1)
- 递推:α_{t+1}(j) = [Σα_t(i)a_ij] * b_j(o_{t+1})
- 终止:P(O|λ) = Σα_T(i)
2.2.2 解码问题
给定模型λ和观测序列O,找到最可能的状态序列。这就是序列标注的核心问题
