目录

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,余弦相似度和欧式距离是等价的
    • 计算速度快

/images/paper_note/ConWea/K-Means.jpg

参数自动选择

根据相似度阈值$\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 应当有如下特性:

  1. 是一个不常见的词
  2. 只出现在属于标签$l$的文档中
  3. 在标签$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 扩充与消歧的迭代次数,并设置当种子集或伪标签趋向收敛时停止迭代

Reference