ConWea: 一种弱监督文本分类框架
ConWea 是一种结合语境的弱监督文本分类框架,该框架首次将弱监督文本分类问题与上下文结合起来。
该框架可以分为几个部分:
- 使用结合上下文的表征学习模型,将原始语料库转为语境化语料库
- 伪标签生成与文本分类
- Seed Word 扩充与消歧
其中表征学习模型和文本分类模型的选择并无特殊要求,该框架可以兼容目前大多数的表征学习模型和文本分类模型。在原论文中,作者使用 BERT 来进行上下文语义表征,使用 HAN(分层注意力网络,Hi-erarchical Attention Networks)来进行文本分类
问题结构:
- 输入:
- Documents: $\mathcal{D}$
- Target Classes: $\mathcal{C}$
- Seed Word Sets: $\mathcal{S}$
- 目标:
- 构建一个文档分类器
Seed Word需要有良好质量
用户提供的 Seed Word 应具有良好的质量,大多数 Seed Word 没有歧义,且大多数出现的种子词与用户指定的类的语义相关
- 构建一个文档分类器
构建语境化语料库
关键步骤:将多义词划分为多种不同的解释并进行替换
使用表征学习模型(如 BERT)进行表征
使用 BERT,将每一份文档作为输入,为每一个单词生成一个向量。这里因为 BERT 是会结合上下文信息(具体结合多少要看 BERT 的 seq 大小),因此即便是同一个单词在重复出现时也会拥有不同的语义向量。对于单词$w$的第$i$次出现,生成向量$\mathbf{b}_{w_i}$。
使用余弦相似度度量向量之间相似性
若单词的第$i$和第$j$次出现$w_i,w_j$拥有相似的含义,则其语义向量$\mathbf{b}_{w_i}$以及$\mathbf{b}_{w_j}$拥有较高的余弦相似度。在这一步时,为了方便后续计算,我们将所有的语义向量归一化表示为 unit vector
将消歧问题建模为聚类问题
- 输入:单词$w$在语料库中的所有$n$个语义向量
- 输出:K 个 cluster,每个 cluster 表示一种词义
- 算法:K-Means
- 对于 unit vector,余弦相似度和欧式距离是等价的
- 计算速度快
参数自动选择
根据相似度阈值$\tau$来选择 K。
如果两个聚类中心的相似度不小于$\tau$,则这两类可以视为同一类
选择 K 的方法:逐步增加 K,直到有两个中心之间的相似度大于$\tau$
$$ K=\arg \max _K \{\cos(\mathbf{c}_i, \mathbf{c}_j)<\tau \forall i, j\} $$
那么现在问题来了,我们如何选取一个合适的$\tau$呢?直接手动调优?听起来就很不靠谱。
对于 Seed Word $s$,对于其在文中出现的每一处所表示的语义向量,我们将其两两配对,取其每对余弦相似度的中位数,即:
$$ \tau(s) = median(\{sim(\mathbf{b}_{w_i}, \mathbf{b}_{w_j})| \forall i,j \}) $$
最后,取所有 Seed Word 的中位数结果的中位数,作为最后的$\tau$
$$ \tau = median(\{\tau(s)|\forall s\}) $$
语料库语境化
$w$在语料库中出现的解释取决于在上一步中被划分到哪一类,对于$w_i$,有:
$$ \hat{w}_{i}=\left\{\begin{array}{ll} w & \text { if } \mathrm{K}=1 \\ w \$ j^{*} & \text { otherwise } \end{array}\right. $$
$$j^{*}=\arg \max _{j=1}^{K} \cos \left(\mathbf{b}_{w_{i}}, \mathbf{c}_{j}\right)$$
并根据$\hat{w}_{i}$的取值将对应位置的单词更新
伪标签生成与文本分类
在该阶段,我们需要为每个没有标签的文本生成一个伪标签并训练一个分类器
伪标签生成
给每一个没有明确分类标签的文档分配一个标签,使得该文档中,属于这个标签的 Seed Word 总词频最大:
$$ l(d)=\arg \max _{l}\left\{\sum_{i} t f\left(s_{i}, d\right) \mid \forall s_{i} \in \mathcal{S}_{l}\right\} $$
文本分类
使用 HAN(分层注意力网络,Hi-erarchical Attention Networks)来进行文本分类。考虑文档的层次结构(文档-句子-词)并使用注意力机制以发现文档中重要的句子和词。这一过程包含两个层级:
- 词级注意力,确定句子中的重要词
- 句级注意力,确定文档中的重要句子
使用生成的伪标签训练 HAN,预测结果用于下一步中的 Seed Word Set 扩充以及消歧
Seed Word 扩充及消歧
Seed Word 扩充
给定语境化的文档以及在上一步中得到的分类标签。对语境化的单词进行排序,并将排在前面的单词放进 Seed Word Set 中
对于标签$l$,在理想情况下,它的 Seed Word 应当有如下特性:
- 是一个不常见的词
- 只出现在属于标签$l$的文档中
- 在标签$l$的文档中词频很高
Label-Indicative
度量 Seed Word 与文档被分类到标签$l$的相关性
采用$w_i$与文档属于$C_j$类的后验概率进行度量。 即:理想情况下,观测到$w_i$之后,可以判定该文章属于$C_j$
$$ \mathbf{L I}\left(\mathcal{C}_{j}, w\right)=P\left(\mathcal{C}_{j} \mid w\right)=\frac{f_{\mathcal{C}_{j}, w}}{f_{\mathcal{C}_{j}}} $$
$f_{\mathcal{C}_{j}}$是$\mathcal{C}_{j}$类文档的总数,$f_{\mathcal{C}_{j}, w}$是$\mathcal{C}_{j}$类文档中包含$w$的数量
Frequent
计算属于标签$l$的文档中,Seed Word $s$出现的次数。由于平均频数的边界很难确定,因此我们使用$tanh$进行放缩
$$ \mathbf{F}\left(\mathcal{C}_{j}, w\right)=\tanh \left(\frac{f_{\mathcal{C}_{j}}(w)}{f_{C_{j}}}\right) $$
Unusual
使用逆文本频率(IDF, inverse document frequency)来评估 Seed Word 在语料库中的独有程度
$$ \operatorname{IDF}(w)=\log \left(\frac{n}{f_{\mathcal{D}, w}}\right) $$
其中,$n$是语料库中文档的数量。$f_{\mathcal{D}, w}}$是单词$w$的文档频数,即包含该单词的文档数量。
打分
对于任意一个词$w$和分类$\mathcal{C}_{j}$, 可以有一个打分,打分采用上述三项指标的几何平均数:
$$ R\left(\mathcal{C}_{j}, w\right)=\left(\mathbf{L} \mathbf{I}\left(\mathcal{C}_{j}, w\right) \times \mathbf{F}\left(\mathcal{C}_{j}, w\right) \times \mathbf{I D F}(w)\right)^{1 / 3} $$
基于这个打分,我们将得分最高的单词添加到分类$\mathcal{C}_{j}$的 Seed Word Set 中。
Seed Word 消歧
原因:尽管大多数由用户提供的 Seed Word Set 是足够干净的,但其中仍有部分再语料库中有多种解释。对同一 Seed Word 的多种可能解释,我们首先考虑对初始 Seed Word 的所有可能解释,生成伪标签,并训练分类器。使用已分类的文档和排序函数,我们对同一初始 Seed Word 的所有可能解释进行排序。因为大多数出现的 Seed Word 都被假定属于用户指定的类,所以预期的解释应该排在最高的位置。因此,我们只保留这个 Seed Word 的最高级解释。
训练流程:
可以手动控制伪标签生成与文本分类训练和 Seed Word 扩充与消歧的迭代次数,并设置当种子集或伪标签趋向收敛时停止迭代