NLP分类问题中,使用半监督或无监督的手段来减少标注的任务

文本分类应该是最常见的文本语义分析任务了。首先它是简单的,几乎每一个接触过nlp的同学都做过文本分类,但它又是复杂的,对一个类目标签达几百个的文本分类任务,90%以上的准确率召回率依旧是一个很困难的事情。这里说的文本分类,指的是泛文本分类,包括query分类,广告分类,page分类,用户分类等,因为即使是用户分类,实际上也是对用户所属的文本标签,用户访问的文本网页做分类。

几乎所有的机器学习方法都可以用来做文本分类,常用的主要有:lr,svm等,下面介绍一下文本分类的pipeline以及注意点

  • 建立分类体系。
    • 分类相比于topic model或者聚类,一个显著的特点是:类目体系是确定的。而不像在聚类和LDA里,一个类被聚出来后,但这个类到底是描述什么的,或者这个类与另外的类是什么关系,这些是不确定的,这样会带来使用和优化上的困难。
    • 一般而言,类目体系是由人工设定的。而类目体系的建立往往需要耗费很多人工研究讨论,一方面由于知识面的限制,人工建立的类目体系可能不能覆盖所有情况;另一方面,还可能存在类目之间instance数的不平衡。比较好的方法,是基于目前已有的类目体系再做一些加工,譬如ODP,FreeBase等。
    • 还可以先用某种无监督的聚类方法,将训练文本划分到某些clusters,建立这些clusters与ODP类目体系的对应关系,然后人工review这些clusters,切分或者合并cluster,提炼name,再然后根据知识体系,建立层级的taxonomy。
    • 如果类目标签数目很多的话,我们一般会将类目标签按照一定的层次关系,建立类目树,如下图所示。那么接下来就可以利用层次分类器来做分类,先对第一层节点训练一个分类器,再对第二层训练n个分类器(n为第一层的节点个数),依次类推。利用层次类目树,一方面单个模型更简单也更准确,另一方面可以避免类目标签之间的交叉影响,但如果上层分类有误差,误差将会向下传导
      taxonomy

       

      图21. 层次类目体系

  • 获取训练数据
    • 一般需要人工标注训练数据。人工标注,准确率高,但标注工作量大,耗费人力。
    • 为了减少标注代价,利用无标记的样本,提出了半监督学习(Semi-supervised Learning),主要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。这里介绍两种常见的半监督算法,希望了解更多请参考文献[49]。
      • Self-learning:两个样本集合,Labeled,Unlabeled。执行算法如下:
        • 用Labeled样本集合,生成分类策略F
        • 用F分类Unlabeled样本,计算误差
        • 选取Unlabeled中误差小的子集u,加入到Labeled集合。

        接着重复上述步骤。

        举一个例子:以前在做page分类器时,先对每一个类人工筛选一些特征词,然后根据这些特征词对亿级文本网页分类,再然后对每一个明确属于该类的网页提取更多的特征词,加入原有的特征词词表,再去做分类;中间再辅以一定的人工校验,这种方法做下来,效果还是不错的,更关键的是,如果发现那个类有badcase,可以人工根据badcase调整某个特征词的权重,简单粗暴又有效。

      • Co-training:其主要思想是:每次循环,从Labeled数据中训练出两个不同的分类器,然后用这两个分类器对Unlabeled中数据进行分类,把可信度最高的数据加入到Labeled中,继续循环直到U中没有数据或者达到循环最大次数。
      • 协同训练,例如Tri-train算法:使用三个分类器.对于一个无标签样本,如果其中两个分类器的判别一致,则将该样本进行标记,并将其纳入另一个分类器的训练样本;如此重复迭代,直至所有训练样本都被标记或者三个分类器不再有变化。
    • 半监督学习,随着训练不断进行,自动标记的示例中的噪音会不断积累,其负作用会越来越大。所以如term weighting工作里所述,还可以从其他用户反馈环节提取训练数据,类似于推荐中的隐式反馈。
    • 我们看一个具体的例子,在文献[45]中,twitter利用了三种方法,user-level priors(发布tweet的用户属于的领域),entity-level priors(话题,类似于微博中的#*#),url-level priors(tweet中的url)。利用上面三种数据基于一定规则获取到基本的训练数据,再通过Co-Training获取更多高质量的训练数据。上述获取到的都是正例数据,还需要负例样本。按照常见的方法,从非正例样本里随机抽取作为负例的方法,效果并不是好,文中用到了Pu-learning去获取高质量的负例样本,具体请参考文献[58]。
      training_data_acquisition

      图22.文献[45]训练数据获取流程图

  • 特征提取
    • 对于每条instance,运用多种文本分析方法提取特征。常见特征有:
      • 分词 or 字的ngram,对词的权重打分,计算词的一些领域特征,又或者计算词向量,词的topic分布。
      • 文本串的特征,譬如sentence vector,sentence topic等。
    • 提取的特征,从取值类型看,有二值特征,浮点数特征,离线值特征。
    • 特征的预处理包括:
      • 一般来说,我们希望instance各维特征的均值为0,方差为1或者某个有边界的值。如果不是,最好将该维度上的取值做一个变换。
      • 特征缺失值和异常值的处理也需要额外注意。
    • 特征选择,下面这些指标都可以用作筛选区分度高的特征。
      • Gini-index: 一个特征的Gini-index越大,特征区分度越高。
      • 信息增益(Information Gain)
      • 互信息(Mutual Information)
      • 相关系数(Correlation)
      • 假设检验(Hypothesis Testing)
  • 模型训练
    • 模型选择:通常来说,常用的有监督模型已经足够了,譬如lr, svm, maxent, naive-bayes,决策树等。这些基本模型之间的效果差异不大,选择合适的即可。上一小节讲到cnn时,提到深度神经网络也可以用来做文本分类。深度神经网络相比较于传统方法,特征表示能力更强,还可以自学习特征。
    • 模型的正则化:一般来说,L1正则化有特征筛选的作用,用得相对较多,除此外,L2正则化,ElasticNet regularization(L1和L2的组合)也很常用。
    • 对于多分类问题,可以选择one-vs-all方法,也可以选择multinomial方法。两种选择各有各的优点,主要考虑有:并行训练multiple class model更复杂;不能重新训练 a subset of topics。
    • model fine-tuning。借鉴文献[72]的思路(训练深度神经网络时,先无监督逐层训练参数,再有监督调优),对于文本分类也可以采用类似思路,譬如可以先基于自提取的大规模训练数据训练一个分类模型,再利用少量的有标注训练数据对原模型做调优。下面这个式子是新的loss function,w是新模型参数,w0是原模型参数,l(w,b|xi,yi)是新模型的likelihood,优化目标就是最小化“新模型参数与原模型参数的差 + 新模型的最大似然函数的负数 + 正则化项”。

      minw,bδ2||ww0||221δni=1nl(w,b|xi,yi)+λ(α||w||1+1α2||w||22)

    • model ensemble:也称“Multi-Model System”,ensemble是提升机器学习精度的有效手段,各种竞赛的冠军队伍的是必用手段。它的基本思想,充分利用不同模型的优势,取长补短,最后综合多个模型的结果。Ensemble可以设定一个目标函数(组合多个模型),通过训练得到多个模型的组合参数(而不是简单的累加或者多数)。譬如在做广告分类时,可以利用maxent和决策树,分别基于广告title和描述,基于广告的landing page,基于广告图片训练6个分类模型。预测时可以通过ensemble的方法组合这6个模型的输出结果。
  • 评测
    • 评测分类任务一般参考Accuracy,recall, precision,F1-measure,micro-recall/precision,macro-recall/precision等指标。
  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值