【论文总结】TextGCN

2020 年 4 月 17 日 深度学习自然语言处理

点击上方,选择星标置顶,每天给你送干货

阅读大概需要4分钟

跟随小博主,每天进步一丢丢


来自 | 知乎

地址 | https://zhuanlan.zhihu.com/p/111945052

作者 | S先森

编辑 | 机器学习算法与自然语言处理公众号

本文仅作学术分享,若侵权,请联系后台删文处理

这篇论文,还是挺简单的基于GCN的应用型文章,主要的贡献在于构建了基于文本和词的异构图,使得在GCN上能够对文本进行半监督分类。

Graph Convolutional Networks for Text Classification


既然图是核心,那我们先看看图是怎么构建的。

1. 图的构建

1.1 节点

这个图包含了两种节点,分别是document节点和word节点,这不难理解,文本就只有词嘛。关于词的预处理,只要我们按照文章给出要求(包括低频词处理、停留词处理、标点符号的处理)来处理,基本上就能获得同样的节点数量(特别是词节点数量)。

1.2 边

这里的边也是包含两种边:document-word 和 word-word

document-word

这个边的权重就是 TF-IDF,用 sklearn 的 TfidfTransformer 函数就能获得,当然,也可以按照作者代码里的那样自己手写。

但是用 TfidfTransformer 值得注意的是一些参数的调整,我下面直接给出代码吧。

使用 Pipeline是为了能够处理更大量的文本,不让会导致内存溢出。
text_tfidf = Pipeline([
("vect", CountVectorizer(min_df=1,
max_df=1.0,
token_pattern=r"\S+")),
("tfidf", TfidfTransformer(norm=None,
use_idf=True,
smooth_idf=False,
sublinear_tf=False
))
])

值得注意的 CountVectorizer 中的这三个参数 min_df, max_df 和 token_pattern,如果按照默认的来,会过滤掉一些词,这样就没法完全重现文章的最后效果。

而 TfidfTransformer 中,就要注意 norm=None ,这些都是复现过程中的一些坑。

这样,就能构建document-word的边及其权重。

word-word

在这里,文章用了一个叫做 PMI 的方法来计算的。简单来说,就是在一定的范围内,这两个词共现的频率,这很容易理解,就是共现次数越高,权重越大。

  1. 首先我们需要用一个长度为 L 的窗口(window)来把一个句子切割成一个个小段 (注意词去重)。这样,我们就会获得一大堆 windows(一堆长度为 L 的词片段),也就是 #W。

  2. 然后统计 词在 windows 里出现的频率;再统计 windows 每个window 里 词 两两组合 的频率。这样我们就能获得 #W(i) 和 #W(i, j)。

  3. 最后就是根据公式来计算了,如下图。

PMI的计算公式

这样子,我们就完成了TextGCN里所说异构图了。

其他

  1. TextGCN使用的是 one-hot 作为特征输入,我试了用随机或者GloVe、BERT,效果都莫名其妙地差,不知道为啥呢?

  2. 训练集和测试集 得按照数据集里标注的那样切割,随机划分,效果也会不好。

  3. word-word PMI 这个边,去除了会有1%~3%的准确率下降,但训练速度会快很多,毕竟减少了很多边。

  4. 迭代次数和训练率也会影响最后的复现效果,严格按照论文里给出的条件吧。

那就总结到这里,以后补一下其他实验吧。



交流学习,进群备注: 昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多: 机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等
广告商、博主勿入!


登录查看更多
2

相关内容

图卷积网络(简称GCN),由Thomas Kpif于2017年在论文Semi-supervised classification with graph convolutional networks中提出。它为图(graph)结构数据的处理提供了一个崭新的思路,将深度学习中常用于图像的卷积神经网络应用到图数据上。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
212+阅读 · 2020年4月26日
【ICLR2020-哥伦比亚大学】多关系图神经网络CompGCN
专知会员服务
49+阅读 · 2020年4月2日
【图神经网络(GNN)结构化数据分析】
专知会员服务
115+阅读 · 2020年3月22日
近期必读的12篇KDD 2019【图神经网络(GNN)】相关论文
专知会员服务
62+阅读 · 2020年1月10日
必读的7篇 IJCAI 2019【图神经网络(GNN)】相关论文
专知会员服务
91+阅读 · 2020年1月10日
【综述】关键词生成,附10页pdf论文下载
专知会员服务
52+阅读 · 2019年11月20日
R语言自然语言处理:情感分析
R语言中文社区
16+阅读 · 2019年4月16日
R语言自然语言处理:关键词提取与文本摘要(TextRank)
R语言中文社区
4+阅读 · 2019年3月18日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
一文看懂深度文本分类之 DPCNN 原理与代码
人工智能头条
10+阅读 · 2019年2月11日
2018年最全干货总结
计算机视觉战队
3+阅读 · 2018年10月15日
机器学习必知的8大神经网络架构
七月在线实验室
7+阅读 · 2018年4月26日
[情人节] jieba分词介绍
机器学习和数学
3+阅读 · 2018年2月14日
【干货】--基于Python的文本情感分类
R语言中文社区
5+阅读 · 2018年1月5日
干货 | 自然语言处理(2)之浅谈向量化与Hash-Trick
机器学习算法与Python学习
3+阅读 · 2017年12月13日
Tutorial on NLP-Inspired Network Embedding
Arxiv
7+阅读 · 2019年10月16日
Signed Graph Attention Networks
Arxiv
7+阅读 · 2019年9月5日
Self-Attention Graph Pooling
Arxiv
5+阅读 · 2019年4月17日
Arxiv
12+阅读 · 2018年9月15日
Bidirectional Attention for SQL Generation
Arxiv
4+阅读 · 2018年6月21日
Arxiv
7+阅读 · 2018年3月22日
VIP会员
相关资讯
R语言自然语言处理:情感分析
R语言中文社区
16+阅读 · 2019年4月16日
R语言自然语言处理:关键词提取与文本摘要(TextRank)
R语言中文社区
4+阅读 · 2019年3月18日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
一文看懂深度文本分类之 DPCNN 原理与代码
人工智能头条
10+阅读 · 2019年2月11日
2018年最全干货总结
计算机视觉战队
3+阅读 · 2018年10月15日
机器学习必知的8大神经网络架构
七月在线实验室
7+阅读 · 2018年4月26日
[情人节] jieba分词介绍
机器学习和数学
3+阅读 · 2018年2月14日
【干货】--基于Python的文本情感分类
R语言中文社区
5+阅读 · 2018年1月5日
干货 | 自然语言处理(2)之浅谈向量化与Hash-Trick
机器学习算法与Python学习
3+阅读 · 2017年12月13日
相关论文
Tutorial on NLP-Inspired Network Embedding
Arxiv
7+阅读 · 2019年10月16日
Signed Graph Attention Networks
Arxiv
7+阅读 · 2019年9月5日
Self-Attention Graph Pooling
Arxiv
5+阅读 · 2019年4月17日
Arxiv
12+阅读 · 2018年9月15日
Bidirectional Attention for SQL Generation
Arxiv
4+阅读 · 2018年6月21日
Arxiv
7+阅读 · 2018年3月22日
Top
微信扫码咨询专知VIP会员