文本分类的一个大型“真香现场”来了:昨天JayJay的推文《超强文本半监督MixText》中告诉大家不要浪费没有标注过的数据,但还是需要标注数据的!但今天介绍的paper,文本分类居然不需要任何标注数据啦!哇,真香!

当前的文本分类任务需要利用众多标注数据,标注成本是昂贵的。而半监督文本分类虽然减少了对标注数据的依赖,但还是需要领域专家手动进行标注,特别是在类别数目很大的情况下。

试想一下,我们人类是如何对新闻文本进行分类的?其实,我们不要任何标注样本,只需要利用和分类类别相关的少数单词就可以啦,这些单词也就是我们常说的关键词。

BUT!我们之前获取分类关键词的方式,大多还是需要人工标注数据、或者人工积累关键词的;而就算积累了某些关键词,关键词在不同上下文中也会代表不同类别。

那么,有没有一种方式,可以让文本分类不再需要任何标注数据呢

本文JayJay就介绍一篇来自「伊利诺伊大学香槟分校韩家炜老师课题组」的EMNLP20论文《Text Classification Using Label Names Only: A Language Model Self-Training Approach》。

这篇论文的最大亮点就是:不需要任何标注数据,只需利用标签名称就在四个分类数据上获得了近90%的准确率!

为此,论文提出一种LOTClass模型,即Label-name-Only Text Classification,LOTClass模型的主要亮点有:

  1. 不需要任何标注数据,只需要标签名称! 只依赖预训练语言模型(LM),不需要其他依赖!
  2. 提出了类别指示词汇获取方法基于上下文的单词类别预测任务,经过如此训练的LM进一步对未标注语料进行自训练后,可以很好泛化!
  3. 在四个分类数据集上,LOTClass明显优于各弱监督模型,并具有与强半监督和监督模型相当的性能。

论文下载:https://arxiv.org/pdf/2010.07245.pdf

代码开源:https://github.com/yumeng5/LOTClass

本文的组织结构为:

LOTClass总体流程

LOTClass将BERT作为其backbone模型,其总体实施流程分为以下三个步骤:

  1. 标签名称替换:利用并理解标签名称,通过MLM生成类别词汇;
  2. 类别预测:通过MLM获取类别指示词汇集合,并构建基于上下文的单词类别预测任务,训练LM模型;
  3. 自训练:基于上述LM模型,进一步对未标注语料进行自训练后,以更好泛化!

下面我们就详细介绍上述过程。

第一步:标签名称替换

在做文本分类的时候,我们可以根据标签名称联想到与之相关联的其他关键词,这些关键词代表系统类别。当然,这就需要我们从一个蕴含常识的模型去理解每个标签的语义。很明显,BERT等预训练模型就是一个首选!

论文采取的方法很直接:对于含标签名称的文本,通过MLM来预测其可以替换的其他词汇。

如上图,展示了AG新闻语料中,体育新闻在不同的上下文中,标签名称“sports”通过MLM预测出的可以替换「sports」的词汇。

具体地,每一个标签名称位置通过MLM预测TOP50最相似的替换词,然后对于每一个类别的标签名称(Label Name)根据词频大小、结合停用词共选取TOP-100,最终构建类型词汇表(Category Vocabulary)。

通过上述方式找出了AG新闻语料每一个类别-标签名称对应的类别词汇表,如上图所示。

第二步:类别预测

像人类如何进行分类一样,一种直接的方法是:利用上述得到的类型词汇表,然后统计语料中类别词汇出现的次数。但这种方式存在2个缺陷:

  1. 不同词汇在不同的上下文中代表不同意思,不是所有在语料中出现的类型词汇都指示该类型。在第一幅图中,我们就可以清晰发现:单词「sports」在第2个句子并不代表体育主题。
  2. 类型词汇表的覆盖范围有限:在特定上下文中,某些词汇与类别关键字具有相似的含义,但不包含在类别词汇表中。

为了解决上述缺陷,论文构建了一个新的MCP任务——基于遮蔽的类别预测任务(Masked Category Prediction,MCP),如下图所示:

MCP任务共分为两步:

  1. 获取类别指示词:上述已经提到,类别词汇表中不同的词汇在不同上下文会指代不同类别。论文建立了一种查找词汇指示类别的方法(如上图左边所示):对于当前词汇,首先通过BERT的MLM任务预测当前词汇可替代的TOP50相似词,然后TOP50相似词与每个类别词汇表进行比对,如果有超过20个词在当前类别词汇表中,则选取当前词汇作为该类别下的「类别指示词」。
  2. 进行遮蔽类别预测:通过上一步,遍历语料中的每一个词汇,我们就可得到类别指示词集合和词汇所对应的标签。对于类别指示词集合中每一个单词,我们将其替换为「MASK」然后对当前位置进行标签分类训练。

值得注意的是:MASK类别指示词进行类别预测至关重要,因为这会迫使模型根据单词上下文来推断类别,而不是简单地记住无上下文的类别关键字。通过MCP任务,BERT将更好编码类别判断信息。

第三步:自训练

论文将通过MCP任务训练好的BERT模型,又对未标注语料进行了自训练。这样做的原因为:

  • 仍有大规模语料未被MCP任务利用,毕竟不是每一个语料样本含有类别指示词。
  • MCP任务进行类别预测不是在「CLS」位置,「CLS」位置更利于编码全局信息并进行分类任务。

论文采取的自训练方式很简单,如上图所示,每50个batch通过软标签方式更新一次标签类别。

LOTClass表现如何?

为了验证LOTClass的效果,论文在4个分类数据集上与监督、半监督和弱监督进行了对比。

对于弱监督方法,则将整个训练集作为无标注数据;对于半监督方法,每个类别选举10个样本作为标注数据;对于监督方法,则全部训练集就是标注数据。

如上图所示,没有自训练的LOTClass方法就超过了一众弱监督方法,而利用自训练方法后LOTClass甚至在AG-News上可以与半监督学习的SOTA——谷歌提出的UDA相媲美了,与有监督的char-CNN方法也相差不多啦!自训练self-trainng为何如此强大?我们将在接下来的推文中会进一步介绍。

也许你还会问:LOTClass相当于使用多少标注数据呢

如上图,论文给出了答案,那就是:LOTClass效果相当于 每个类别使用48个标注文档的有监督BERT模型

总结与展望:利用标签名称,真香!

首先对本文总结一下:本文提出的LOTClass模型仅仅利用标签名称,无需任务标注数据!在四个分类数据上获得了近90%的准确率,与相关半监督、有监督方法相媲美!LOTClass模型总体实施流程分三个步骤:标签名称替换MASK类别预测自训练

本文提出的LOTClass模型只是基于BERT,并没有采取更NB的LM模型,每个类别最多使用3个单词作为标签名称,没有依赖其他工具(如回译方式)。我们可以预测:随着LM模型的升级,数据增强技术的使用,指标性能会更好!

利用标签名称,我们是不是还可以畅想一些“真香现场”呢?例如:

  • 应用于NER任务:发现实体类别下的更多指示词,如「PERSON」类别;嗯嗯,再好好想象怎么把那套MCP任务嵌入到NER任务中吧。
  • 与半监督学习更好协作:1)没有标注数据时,可以通过LOTClass构建初始标注数据再进行半监督流程;2)将MCP任务设为半监督任务的辅助任务。

JayJay不说再见,欢迎关注我的公众号《高能AI》,那里是首发哦~(图片不全,可直接到微信搜一搜高能AI)

韩家炜课题组重磅发文:文本分类只需标签名称,不需要任何标注数据!相关推荐

  1. 历史上华人计算机科学家,郑州大学韩家炜、张宏江两位校友在世界顶尖计算机科学家排名中再度名列华人科学家和中国大陆科学家之首...

    近日,Guide2Research网站公布了2021年世界顶尖1000名计算机科学家排名.继上一年度之后,郑州大学继续有2位校友进入榜单.其中,78级校友韩家炜再度位居华人科学家之首,综合排名世界第4 ...

  2. 微软、UIUC韩家炜组联合出品:少样本NER最新综述

    ©PaperWeekly 原创 · 作者 | 蔡杰 单位 | 北京大学硕士生 研究方向 | QA 当前的机器学习和深度学习模型都需要大量的标注数据来进行训练,以达到一个较好的效果.但是在带 label ...

  3. 多标签文本分类数据集_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...

    原文: Label-Specific Document Representation for Multi-Label Text Classification(EMNLP 2019) 多标签文本分类 摘要: ...

  4. 蚂蚁分类信息系统 列表显示标签名称和值

    蚂蚁分类信息系统 列表默认只显示标签值,不显示标签名称. 增加显示标签名称,如下图 修改方法: category.php 模版调用 template/default/list.html

  5. 访韩家炜教授记录(部分)

    我之前了解了一下,龙星计划今年是第四届了是吧?是2002年开始第一届的吧? 对,对 您第一年的时候就会来讲学了是吗? 对,第一年我是在北大,也是和这个安排差不多,在北大讲了一个星期的课,但是那次时间比 ...

  6. 深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)...

    1. tf.nn.embedding_lookup(W, X) W的维度为[len(vocabulary_list), 128], X的维度为[?, 8],组合后的维度为[?, 8, 128] 代码说 ...

  7. 文本分类模型_多标签文本分类、情感倾向分析、文本实体抽取模型如何定制?...

    文心(ERNIE)是依托百度深度学习平台飞桨打造的语义理解技术与平台,集先进的预训练模型.全面的NLP算法集.端到端开发套件和平台化服务于一体,为企业和开发者提供一整套NLP定制与应用能力.在2020 ...

  8. NLP入门实践总结:教你用Python实现文本分类(附代码)

    分类问题是NLP(Natural Language Processing,自然语言处理)领域的经典常见任务,而随着预训练模型的发展,预训练时代下的文本分类算法逐步成为了我们从事NLP相关工作的必备技能 ...

  9. 文本分类实战(三)—— charCNN模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  10. 文本分类实战(七)—— Adversarial LSTM模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

最新文章

  1. Scala和范畴论 -- 对Monad的一点认识
  2. 带你一分钟理解闭包--js面向对象编程
  3. 各种协议中的协议类型对应的值
  4. hbase报错:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
  5. 【机器视觉】 dev_map_par算子
  6. 响应式系统reactive system初探
  7. Linux 文件系统基础
  8. 矩阵的“之”字形打印
  9. idea下如何正确导入多个module
  10. 软件验收标准和验收方法_装饰装修工程质量验收标准专题讲座
  11. block compressed sparse row (BSR) matrix format
  12. java冷门小功能代码收集
  13. 南大计算机学硕复试,2017年南京大学计算机科学与技术系考研复试名单
  14. python interpreter下载_Piton - Python interpreter
  15. python随机画笑脸_如何用python画笑脸
  16. view-design 组件库表格筛选条件联动保留前面筛选条件的高亮状态
  17. 大工17秋计算机英语,大工17秋《大学英语1(远程英语1)》在线测试31
  18. Linux IO操作——RIO包
  19. 安卓模拟器可访问电脑ip配置
  20. java发送QQ群邮件,Java使用腾讯企业邮箱 、javamail 、 SSL 发送邮件/群发

热门文章

  1. 通过本地上传工具把CSV文件导入到百会报表
  2. DataFormatString格式字符串
  3. SQL SERVER2008查询分析器的使用
  4. 任意门怎么用团发_任意门日淘app官方手机版-任意门日淘安卓版下载v1.4.6-壹六下载...
  5. 用户登陆问题,session.invalidate销毁session
  6. 2013.05.09
  7. 操作系统与操作系统内核
  8. 费尔个人防火墙采用两种封包过滤技术
  9. 让openkore 更节省你的CPU和内存
  10. 因子分析spss怎么做 spss因子分析教程及结果解释