Save you from anything

0%

论文阅读:Graph Convolutional Networks for Text Classification

本文是一篇使用GCN进行文本分类的文章,发表在AAAI 2019上,其主要创新点是提出了一种使用GCN对文本进行编码的方式,可以借鉴到多tag推荐任务上。

和之前的论文阅读博文一样,写的东西会有大量我个人的加工,如果看了之后觉得有点兴趣建议去阅读原文。

(这篇论文在2020年2月左右阅读)

背景介绍

文本分类任务需要通过一定的手段提取出文本的信息,然后使用某个手段利用提取的信息对文本进行分类。

传统的文本分类使用RNN、CNN等模型进行文本特征提取,复杂一点的再加上attention等机制,再复杂用bert、GPT、ELmo之类的预训练模型进行特征提取。但所有特征提取都是在对单篇文章进行提取。

而文本间的互动关系隐含着大量的有效信息,例如对于分类任务,同类文本倾向于在某种表征方法下聚集在一起,只要能寻找到合适的表征方式,初始的图结构就能显示出明显的类别倾向(详见GCN的空手道部数据集例子),这是对单篇文章进行特征提取做不到的。实际上,GCN的实验已经表明了,图结构中的节点与邻居的互动关系足以用于表征节点。

本论文的方法

如前所述,本文的创新点是提出了一个使用GCN对文本进行建模的方法,如这篇论文自己描述的:

We propose a novel graph neural network method for text classification. To the best of our knowledge, this is the first…

使用GCN对文本建模面临着一个显而易见问题:怎么对文本建模?本文提出了一个使用文档节点和单词节点的异构图对文档间进行表征,并将其命名为text-GCN。其具体实现如下:

节点生成算法

text-GCN的图中一共存在两种节点,单词节点和文档节点,全图的节点总数为:数据集的文档数(文档节点)+数据集的单词数量(单词节点)

(上图白色节点为单词节点,彩色节点为文档节点,不同颜色代表不同的类别)

文档节点实际上为空节点,单词节点的值为单词对应的词向量,词向量是预训练好的通用词向量。

文档节点初始化代码:

1
2
3
...
doc_vec = np.array([0.0 for k in range(word_embeddings_dim)])
...

词节点初始化代码:

1
2
3
4
5
6
...
word_vector_map = loadWord2Vec(word_vector_file)
...
for word in words:
if word in word_vector_map:
word_vector = word_vector_map[word]

每个文档节点只连接到其拥有的单词的单词节点,即任意两篇文档的节点之间不直接相连,而是通过其共用的单词进行连接。

这种表征方式非常的巧妙,对于NLP任务,如果舍弃掉文本内容只保留文档间互动关系显然会极大的影响模型性能。通过文档间的单词共现进行连接,既表征了文档间的关系,又很程度上的保留了文本的的内容,在第一轮“卷积”过程中,文档节点可以聚合周围的单词节点生成文档向量。

但这种方法丢失了词频词序等信息,尤其是词序信息被证明对于NLP任务是很重要的,这是text-GCN的一个缺点。

边生成算法

除了上文所述的文档-单词边外,text-GCN的图中还存在单词-单词的边,边生成及边权重算法如下:

其中,Aij是指节点ij间的边A,TF-IDF大家都知道是啥,PMI是指point-wise mutual information算法,一种词关联度的算法,具体实现如下:

其中#W(i)是包含单词i的语料库中的滑动窗口数,#W(i,j)是包含单词i和j的滑动窗口数,而#W是滑动窗口总数。 PMI值为正表示i和j的语义相关性较高,而PMI值为负表示i和j的语义相关性很小或没有。 本论文仅在具有正PMI值的单词对之间添加边。

简而言之就是单词和文本之间的关系使用TF-IDF衡量,这一定程度上补偿了丢失的词频信息(词序信息还是没有),而单词和单词间的关系使用PMI衡量,根据这两个算法来生成边和边权重。

卷积传播算法

这篇论文的重点不是在卷积传播算法和分类算法,没有在GCN的基础上魔改卷积传播算法,也没有用特殊的分类算法,仅仅只是获取到卷积传播后的文档节点向量后通过softmax进行分类,这里不进行更多的分析。

不过有一点值得一提,根据论文的描述,在text-GCN这个模型上,2层卷积比1层效果好,但是继续增加层数效果就一般了。

这个现象也很符合这个模型的设计,如果仅进行一层卷积,那每篇文档仅仅只是获取到了一跳以内的单词信息而已,没有进行所谓的捕捉文档间互动信息,至少需要两层卷积,文档节点间才能完成互动。

但如果继续增加卷积层数,获取更远的文档信息是没有意义的,同类文档已经在构成图的时候完成一定程度的聚类了,更远处的文档反而相关性更低。

总结

实验结果照例没有,基本吊打全部基线,值得一提的是这篇论文用了巨量的基线,如果有做文本分类觉得缺基线的可以看看这篇论文的基线。

本篇论文的创新点就是这个文本图构建方法,通过单词-文档异构图,可以利用GCN生成文档表征,从而执行后续任务。个人认为,相比腾讯那篇用GCN生成新闻评论的论文,这篇的创新性更大,普适性也更大。