Text-CNN、Word2Vec、RNN、NLP、Keras、
本文集仅为收录自己感兴趣、感觉不错的文章与资源,方便日后查找和阅读,所以排版可能会让人觉得乱。内容会不断更新与调整。文中涉及公众号的文章链接可以会失效,知道如何生成永久链接的小伙伴还望告知。
此前更新的不频繁,尽量之后多更文。另外欢迎加群“Python交友娱乐会所”(QQ群:613176398)。
本文关键词:Text-CNN、Word2Vec、Keras、RNN、NLP、fast.ai
- 利用一个暑假的时间,做了研究生生涯中的第一个正式比赛,最终排名第二,有些小遗憾,但收获更多的是成长和经验。我们之前没有参加过机器学习和文本相关的比赛,只是学过一些理论基础知识,没有付诸过实践,看过的几篇论文也多亏前辈的分享(一个是用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践,另一个是brightmart的 text_classification,里面用Keras实现了很多文本分类的模型)。
- 下面对在这次比赛中用到的方法和收获的经验,做一个简单的总结和分享。
基于 word2vec 和 CNN 的文本分类 :综述 & 实践
- 传统的向量空间模型(VSM)假设特征项之间相互独立,这与实际情况是不相符的,为了解决这个问题,可以采用文本的分布式表示方式(例如 word embedding形式),通过文本的分布式表示,把文本表示成类似图像和语音的连续、稠密的数据。
- 这样我们就可以把深度学习方法迁移到文本分类领域了。基于词向量和卷积神经网络的文本分类方法不仅考虑了词语之间的相关性,而且还考虑了词语在文本中的相对位置,这无疑会提升在分类任务中的准确率。 经过实验,该方法在验证数据集上的F1-score值达到了0.9372,相对于原来业务中所采用的分类方法,有20%的提升。
Text-CNN
-
TextCNN 是利用卷积神经网络对文本进行分类的算法,由 Yoon Kim 在 “Convolutional Neural Networks for Sentence Classification” 一文 (见参考[1]) 中提出. 是2014年的算法.
TextCNN-1
TextCNN-2
文本分类需要CNN?No!fastText完美解决你的需求(后篇)
- 想必通过前一篇的介绍,各位小主已经对word2vec以及CBOW和Skip-gram有了比较清晰的了解。在这一篇中,小编带大家走进业内最新潮的文本分类算法,也就是fastText分类器。fastText与word2vec的提出者之所以会想到用fastText取代CNN(卷积神经网络)等深度学习模型,目的是为了在大数据情况下提高运算速度。
使用Keras进行深度学习:(三)使用text-CNN处理自然语言(上)
- CNN模型首次使用在文本分类,是Yoon Kim发表的“Convolutional Neural Networks for Sentence Classification”论文中。在讲解text-CNN之前,先介绍自然语言处理和Keras对自然语言的预处理。
fastText、TextCNN、TextRNN……这里有一套NLP文本分类深度学习方法库供你选择
- brightmart的 text_classification
[站外图片上传中...(image-dd1d2e-1525483118820)]
Another Twitter sentiment analysis with Python — Part 11 (CNN + Word2Vec)
- This is the 11th and the last part of my Twitter sentiment analysis project.
挺不错的系列
- Part 1: Data cleaning
- Part 2: EDA, Data visualisation
- Part 3: Zipf’s Law, Data visualisation
- Part 4: Feature extraction (count vectorizer), N-gram, confusion matrix
- Part 5: Feature extraction (Tfidf vectorizer), machine learning model comparison, lexical approach
- Part 6: Doc2Vec
- Part 7: Phrase modeling + Doc2Vec
- Part 8: Dimensionality reduction (Chi2, PCA)
- Part 9: Neural Networks with Tfidf vectors
- Part 10: Neural Networks with Doc2Vec/Word2Vec/GloVe
Dive Into NLTK, Part XI: From Word2Vec to WordNet
挺不错的系列
Using pre-trained word embeddings in a Keras model
- In this tutorial, we will walk you through the process of solving a text classification problem using pre-trained word embeddings and a convolutional neural network.
- The full code for this tutorial is available on Github.
Keras-RNN
结合DL with python的书一起看
循环神经网络(RNN)介绍2:keras代码分析
目标:使用keras搭建RNN网路,使用推文数据训练模型
思路:准备工作 -> 数据序列化 -> 得到词嵌入矩阵 -> 训练网络
- 准备工作:读取相关库函数,读入数据集,划分训练集和测试集,
- 数据序列化:将文本转换为数字序列
- 得到词嵌入矩阵:读取glove模型,得到词嵌入矩阵
- 训练网络:划分训练集和验证集,搭建简单的RNN网络,训练网络
- 深度学习常用的文本分类网络有LSTM和GRU,同时CNN在文本分类中也有一定的效果。 本文将简单实现一个LSTM文本分类框架。
NLP文本分类实战: 传统方法与深度学习 - 文档分类是指给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个,本文以人机写作为例子,针对有监督学习简单介绍传统机器学习方法和深度学习方法。
- 包含数据预处理:jieba、gensim特征提取,传统ML方法Adaboost以及深度学习方法
- 本文尝试了多层CNN、并行CNN、RNN与CNN的结合、基于Hierarchical Attention的RNN、迁移学习、多任务学习、联合模型学习。在单模型和联合模型学习上,我们复现、借鉴了2017知乎看山杯比赛第一名陈云的方案,在此表示感谢。深度学习部分代码都是使用Keras框架实现的。
NLP
image用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践
- 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类领域特别是应用深度学习解决文本分类的相关的思路、做法和部分实践的经验。
- 本文主要以CMU CS 11-747(Neural Networks for NLP)课程中Convolutional Networks for Text这一章节的内容作为主线进行讲解。本文主要包括了对如下几块内容的讲解,第一部分是对于常见的语言模型在进行文本表示时遇到的问题以及引入卷积神经网络的意义,第二部分是对于卷积神经网络模块的介绍,第三部分主要是介绍一些卷积神经网络应用于自然语言处理中的论文,第四部分主要是对这一篇综述进行总结。
- 本文总结了文本分类相关的深度学习模型、优化思路以及今后可以进行的一些工作。
DL4NLP —— 序列标注:BiLSTM-CRF模型做基于字的中文命名实体识别
这个博客也可以看看
Determined22
NLP中自动生产文摘(auto text summarization)
用CNN分100,000类图像
在这篇文章中我们尝试了 用CNN分类113,287类图像(MSCOCO)。
- 实际上我们将每张训练集中的图像认为成一类。(当然, 如果只用一张图像一类,CNN肯定会过拟合)。同时,我们利用了5句图像描述(文本),加入了训练。所以每一类相当于 有6个样本 (1张图像+5句描述)。
- 文章想解决的问题是instance-level的retrieval,也就是说 如果你在5000张图的image pool中,要找“一个穿蓝色衣服的金发女郎在打车。” 实际上你只有一个正确答案。不像class-level 或category-level的 要找“女性“可能有很多个正确答案。所以这个问题更细粒度,也更需要detail的视觉和文本特征。
fast.ai
imageFast.ai 最实战深度学习在线课程 Lesson1
Fast.ai 最实战深度学习在线课程 Lesson1-7-搜狗微信
Fast.ai 深度学习实战课程-腾讯视频
在 fast.ai 课堂上,我总结的 8 个深度学习最佳实践
深度学习+自然语言处理(NLP)”专栏索引
CRF和LSTM 模型在序列标注上的优劣?
句法分析(使用NLTK+Stanford nlp、LTP)
刘兵《Entity and aspect extraction for opinion mining 》翻译笔记
哈工大车万翔:NLP中的深度学习模型是否依赖于树结构?
Word2vec
image无痛理解word2vec
大白话讲解word2vec到底在做些什么
Deep Learning in NLP (一)词向量和语言模型-来博士
NLP 秒懂词向量Word2vec的本质
word2vec前世今生
word2vec 中的数学原理详解(一)目录和前言
词向量-paddlepaddle
词向量-paddlepaddle-极客学院
回望2017,基于深度学习的NLP研究大盘点
张钹院士:AI科学突破的前夜,教授们应当看到什么?
NLP 解决方案是如何被深度学习改写的?
Semantic Data Retrieval: Search, Ranking, and Summarization-讲义网站
神经机器翻译综述
SEE: Syntax-aware Entity Embedding for Neural Relation Extraction
https://arxiv.org/abs/1801.03603
Word embeddings in 2017: Trends and future directions
- 这个博客也是很多综述、NLP前沿、全面的涉猎
Deep Learning for NLP Best Practices
(Stanford CS224d) Deep Learning and NLP课程笔记(二):word2vec
- wordNet的缺点
- one-hot encoding所有词相似度都是0,且存在数据稀疏性和维度灾难的问题;
- Distributional Representation。从大量语料中构建一个co-occurrence矩阵来定义word representation。矩阵的构造通常有两种方式:基于document和基于windows。通过统计word与document共现的次数得到的矩阵被称为word-document矩阵。这个矩阵一般被用于主题模型。相同主题的word之间往往有着较高的相似度。但该矩阵很难描述word的语法信息(例如POS tag)。我们在课堂上主要讲授的是第二类矩阵:word-context矩阵。通过统计一个事先指定大小的窗口内的word共现次数,不仅可以刻画word的语义信息,还在一定程度上反应了word的语法结构信息。co-occurrence矩阵定义的词向量在一定程度上缓解了one-hot向量相似度为0的问题,但没有解决数据稀疏性和维度灾难的问题。
- SVD分解:低维词向量的间接学习。基于co-occurrence矩阵得到的离散词向量存在着高维和稀疏性的问题,一个自然而然的解决思路是对原始词向量进行降维,从而得到一个稠密的连续词向量。然而,高昂的计算复杂度(O(mn**2))是SVD算法的性能瓶颈。每一个新词的加入都需要在一个新的矩阵上重新运行一遍SVD分解。
- word2vec:低维词向量的直接学习。word2vec模型背后的基本思想是对出现在上下文环境里的词进行预测(事实上,后面会看到,这种对上下文环境的预测本质上也是一种对co-occurrence统计特征的学习)。梯度计算需要对每个上下文窗口都计算出训练集中所有单词的条件概率。这对于动辄上百万的词典而言,几乎是一件不可能完成的任务。因此,Mikolov在他2013年发表的论文里提出了一些性能优化的Hacks,包括近似归一化的层次Softmax,和避免归一化的负采样技术。
- 下一节课,学习结合二者优势的新的词向量模型——Glove模型。
(Stanford CS224d) Deep Learning and NLP课程笔记(三):GloVe与模型的评估
- 本节课继续讲授word2vec模型的算法细节,并介绍一种新的基于共现矩阵的词向量模型——GloVe模型。最后,重点介绍word2vec模型评估的两种方式。
- 负采样(Negative Sampling)的似然函数,避免了归一化概率的计算。
- GloVe模型
上节课比较了基于统计的词向量模型和基于预测的词向量模型。前者以基于SVD分解技术的LSA模型为代表,通过构建一个共现矩阵得到隐层的语义向量,充分利用了全局的统计信息。然而这类模型得到的语义向量往往很难把握词与词之间的线性关系(例如著名的King、Queen、Man、Woman等式)。后者则以基于神经网络的Skip-gram模型为代表,通过预测一个词出现在上下文里的概率得到embedding词向量。这类模型的缺陷在于其对统计信息的利用不充分,训练时间与语料大小息息相关。不过,其得到的词向量能够较好地把握词与词之间的线性关系,因此在很多任务上的表现都要略优于SVD模型。既然两种模型各有优劣,那么能不能二者各取其长,构造一个更强大的词向量模型呢?这就是接下来要介绍的GloVe模型。在GloVe的原始论文里,作者首先分析了Skip-gram模型能够挖掘出词与词之间线性关系的背后成因,然后通过在共现矩阵上构造相似的条件,得到一个基于全局信息的词向量模型——GloVe模型。 - 模型的评估:在NLP的研究领域里,一个模型的评估通常有两种方式:Intrinsic 和 Extrinsic。