本模型是个seq2seq模型,用Text-GCN做编码器,GRU做解码器的多tag推荐模型,结果比itag好,但是被导师以创新性不够否了,最后没能发论文,这里就简单做一下介绍,放一下结果。
(本实验进行于2020年3月)
背景介绍
itag是一个比较完备的利用seq2seq模型对文本进行多tag推荐的模型,核心机制是一个GRU单元的seq2seq模型,其缺点与大部分seq2seq模型一样,encoder每次只能接受一篇文档的信息,无法利用文档间的互动关系。
GCN是一个高效且普适性强的图神经网络(GNN)模型,通过GCN,可以捕捉到数据集中每项数据之间的互动关系。
Text-GCN的论文提出了一个有效的通过GCN对文本进行编码的模型,并成功的进行了文本分类任务。
因此本项研究使用Text-GCN做encoder,GRU做decoder,进行文本的多tag推荐。
(根据我之前对itag的描述,这个项目是个非常完备的缝合怪,各个创新点之间结合得很紧密,根本无法完美的仅将itag的GRU的encoder替换为Text-GCN,所以虽然这个实验最开始的动机是改良itag,但实际上在最后只是借鉴itag,用seq2seq模型做多标签推荐而已,除此之外几乎没有itag的内容)
模型介绍
本模型使用Text-GCN做编码器,获得每个文本的编码向量后,将编码向量送入GRU中进行多tag预测。
都是之前的文章里介绍过的东西,故这里只做简单介绍。
encoder
Text-GCN是基于GCN的文本编码模型,Text-GCN的图中包含文档和单词两种节点,即全图包含数据集的所有的文档和数据集的所有的单词。图中还包含文档-单词边和单词-单词边(没有文档-文档边)。
边生成公式如下:

其中PMI是指point-wise mutual information算法,一种词关联度的算法,具体公式如下:

模型一共使用两层GCN,两次图卷积操作使得每个文档节点可以聚合自己单词信息,然后聚合和自己关系较近的文档的信息。
decoder
decoder模型非常简单,仅仅是单纯的GRU模型,按照标准的seq2seq中的decoder,接受Text-GCN输出的文本编码作为state输入。
实验
数据集及超参数
因为是要和itag比,因此数据集和超参数和itag保持一致。
数据集来自三个论坛
- Mathematics Stack Exchange
- Ask Ubuntu
- Stack Overflow
超参数如下:
- 词向量和文档向量的长度为300
- 单词按词频保留前20000个
- tag按频率保留前2000个
因为仅仅还在自嗨阶段,没有做其他的基线的实验。
实验结果

可以看到性能是比itag要好的,因为相比itag,GCN能够对文档进行一定的“聚类”,使得同类文章更容易获得接近的输出,虽然丢失了词序信息,但是显然文档间互动关系带来的收益大于这部分的损失,因而性能更好。
总结
虽然结果却是比itag的要好,但是这个东西确实是创新性不够,一方面它并不是对itag进行改良,而是从头搭了个新模型,不方便从这个点展开来写论文。另一方面这个新搭的模型仅仅只是在Text-GCN后接了一个GRU而已,就写论文来说要素不够,换个说法就是能拿来吹逼的点不够多。
当然,发个辣鸡论文应该是能发的,但是我的导师并不能接受发个辣鸡论文,他宁愿让我不发。他对这个东西的评价是太偏工程性质了,如果外面公司要个现在能跑的东西这个东西倒是能用,但是不能拿来发论文。