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

阅读大概需要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,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

广告商、博主勿入!

【论文总结】TextGCN相关推荐

  1. 图注意力网络_EMNLP 2019开源论文:针对短文本分类的异质图注意力网络

    本文同步发表在 PaperWeekly EMNLP 2019开源论文:针对短文本分类的异质图注意力网络​mp.weixin.qq.com 本文由北邮和南洋理工联合发表在自然语言处理顶会 EMNLP 2 ...

  2. 我的第一篇论文诞生的故事

    点击上方,选择星标或置顶,每天给你送干货! 作者:郭必扬时间:2020-12-16 [插播]年初抽47份大奖!!参加的人还很少,后天开奖! 新年大礼包:Xbox.Switch,PopMart芝麻街系列 ...

  3. 【论文阅读】Hierarchical Multi-modal Contextual Attention Network for Fake News Detection --- 虚假新闻检测,多模态

    本博客系本人阅读该论文后根据自己理解所写,非逐句翻译,欲深入了解该论文,请参阅原文. 论文标题:Hierarchical Multi-modal Contextual Attention Networ ...

  4. NLP相关论文上新-2019

    文章目录 2019.07 0724 0725 0726 0729 0730 0731 2019.08 0801 0802 0815 个人觉得有价值.有帮助的论文 2019.07 0724 计算机视觉和 ...

  5. 论文溯源树AMiner

    来自 DBLP.ArXiv.STM 等多家学术出版机构和平台的数据表明,在过去 20 年间,计算机科学.物理学.统计学等研究领域的出版物总量都有大幅增加.像 CVPR.AAAI 等有关人工智能等新兴领 ...

  6. 论文阅读工具ReadPaper

    对于搞科研的同学们来说,看论文是要经历的第一关,尤其是要读好多篇论文的时候,更是着实令人头大. 这不,最近无意中发现了个在线论文阅读网站:readpaper.com,号称「论文阅读笔记神器,硕博科研学 ...

  7. SSAN 关系抽取 论文笔记

    20210621 https://zhuanlan.zhihu.com/p/353183322 [KG笔记]八.文档级(Document Level)关系抽取任务 共指id嵌入一样 但是实体嵌入的时候 ...

  8. Distilling the Knowledge in a Neural Network 论文笔记蒸馏

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/bryant_meng/article/ ...

  9. Facebook 发布深度学习工具包 PyTorch Hub,让论文复现变得更容易

    近日,PyTorch 社区发布了一个深度学习工具包 PyTorchHub, 帮助机器学习工作者更快实现重要论文的复现工作.PyTorchHub 由一个预训练模型仓库组成,专门用于提高研究工作的复现性以 ...

  10. ELMo解读(论文 + PyTorch源码)

    ELMo的概念也是很早就出了,应该是18年初的事情了.但我仍然是后知后觉,居然还是等BERT出来很久之后,才知道有这么个东西.这两天才仔细看了下论文和源码,在这里做一些记录,如果有不详实的地方,欢迎指 ...

最新文章

  1. 九度 题目1548:平面上的点
  2. 4月3日 尤金.卡巴斯基在北大精彩演讲
  3. Python多线程下载网络URL图片的方法
  4. chromium net android移植
  5. C# 跨线程调用控件
  6. react(80)--判断值是否udefined
  7. 剑指offer(刷题21-30)--c++,Python版本
  8. java 获得文件的行数据_Java 读取文件指定行数据
  9. PowerDesigner(二)-项目和框架矩阵
  10. 第35次Scrum会议(11/23)【欢迎来怼】
  11. 我33岁,从国企主管零基础转型大数据开发,年薪涨了20W
  12. Linux的链接工具 putty 以及一些命令。
  13. sts bug SpringJUnit4ClassRunner
  14. phpexcel 日期 时分秒_PHPExcel对于Excel中日期和时间类型的处理
  15. 《精通脚本黑客》读本书吧
  16. 用C语言计算矩阵求和
  17. 免费把你的 GoogleDrive 和 OneDrive 变成图床
  18. latex参考文献引用【bibtex】
  19. c语言致命错误解决,解决VC++编译报错error C2248的方案
  20. 证券基础知识——证券标识代码

热门文章

  1. Java多线程——线程安全问题
  2. File类和时间类的两道综合练习
  3. 找出数组中从未出现的最小正整数java实现
  4. tableView选中行的调用顺序/ 取消选中Cell
  5. C++实现演讲比赛小项目
  6. 高校表白App-团队冲刺第十天
  7. 关于pycharm安装出现的interpreter field is empty,无法创建项目存储位置
  8. 设为首页/加入收藏代码
  9. 请不要再用那种态度把我搞火了!
  10. 使用CSS或Javascript实现隔行换色效果