1 前言
今天分享2019年ACL上的一篇paper——《Towards Unsupervised Text Classification Leveraging Experts and Word Embeddings》,是关于利用专家知识和word embedding来进行无监督文本分类,paper链接。
在工业领域,获取大量标记数据成本往往很大,需要一些无监督或者半监督的方式解决数据标记问题。近年在学术上,无监督方法关注度有所提升,但相对有监督方法,比例还是很小。这篇关于无监督文本分类的方法,对我目前工作起了一定的指引作用,希望也能对读者有些启发。接下来详细介绍。
2 Introduction
论文作者任务背景:在面向金融领域的文本数据分类时,随业务操作细度提高,需要将原始的20个文本类别label扩充到264个类别label,无法获取大量的对应标记数据。因此作者提出:利用专家知识和word embedding的方式进行无监督文本分类。
3 Model
论文的model很简单,简单的就如上图所示。其主要思路为:
1.将文档d清洗后生成代表文档的向量V(d*);
2.将文本类别L通过清洗,扩充,过滤的方式生成对应的类别词库,用词库生成代表类别L的向量V(L*);
3.最后similarity(V(d*),V(L*)),文本与哪个类别L相似度最高,就属于该类。
方法关键:如何生成高质量的类别词库,这是本论文的核心;
3.1 Model / Cleaning
在model的第一个步骤就是对文档按照一定原则进行清洗,类别标签也是一样的方式,清洗具体有:
1.删掉类似标点符号的特殊字符;
2.去停用词;
3.删掉文档高频词top3%;
4.删掉不常见的单词,即逆文档频率top3%;
5.删掉特殊表达式,如日期,货币等;
3.2 Model / Enrichment
该步骤是针对label进行的,其主要目的就是通过四个具体方法扩充类别词库,具体为:
1.利用专家或者搜索引擎方式,为每个类别提供3-5个代表词;
2.利用WordNet,把上步找的词对应的同义词,近义词加入词库;
3.利用已有的类别词库,找到每个类别代表性的文档(阈值70%),将文档中的词加入类别词库;
4.利用Word Embedding的方式,找到一些相似词加入词库;
备注:每个步骤找的词都必须是在文档中出现过;
3.3 Model/Consolidation
consolidation是指将enrichment步骤找到的类别词库中,有些代表类别不是特别明显的词过滤掉,剩下高质量的词,过滤的标准是按下列公式来判断:
TF(w,c)是词w在类别c中出现的频率,分子右边是表示词w在所有类别出现的平均频率,分母表示词w在除c类别外分布的方差。当FAC(w,c)低于一定阈值时,就将词w从从类别删除掉,类别中阈值取为16,这个实际中依个人情况而定。
3.4 Model/similarity
模型的最后一个步骤将文档d和类别l进行cosine相似度计算,在向量化上,作者采用了LSA方法,具体为:
1.使用LSA,利用word-document,word-label矩阵,进行奇异值分解,生成各自的潜在语义空间;
2.利用各自生成的向量进行cosine similarity计算;
为何使用LSA:作者认为相似的文档在潜在的语义空间有相似的表示,即使文档之间没有共现的词,也会有相同的语义空间;此外LSA具有降噪,检测同义词的功能。该方法,作者在实验部分没有将其他方法进行与之对比。
4.Experiments
在实验部分,作者使用5个开源数据集,外加一个自己金融领域的数据集,5个开源数据统计为下图:
在这5个数据集上,作者使用自己的model,外加一些变体进行了实验对比,详细如下图:
实验结果显示:FAC-ALL keywords 方法在后三个数据集取的最佳效果;对比贝叶斯监督学习方法,仅在Yahoo-Answers数据集表现超过。在此个人有一些看法:一,觉得model不同的trick在不同数据集表现有差异性,也就说明某个trick在具体场景才有效;二,监督学习用贝叶斯做对比,充分性不太够;三,在similarity上使用LSA没有进行对比说明。
在金融领域数据集上,作者展示了数据集label的层次性和各个层次label的识别结果,如下图:
可以看出,随着label层级递增,识别效果差别特别大,在Level3上的类别,F1值才22%,这个结果跟样本不平衡有一定关系。
5 结语
总的来说,本篇paper总体模型框架很简单。作者是将工作中解决思路进行发表,虽然各个操作步骤也是常见的方法,但工业界的确崇尚简单有效至上的原则。论文中形成类别词库这个思路是有一定借鉴意义的,在遇到分类任务时,累积label对应的词库是十分有用的,刚好本篇论文有对应体现的方法。