Python 基于 NLP 的文本分类
这是前一段时间在做的事情,有些python库需要python3.5以上,所以mac请先升级 brew安装以下就好,然后Preference(comm+',')->Project: Text-Classification-m...->Project Interpreter->setting button->add,添加python的虚拟环境(usr/local/bin/python3.7),然后就去安装那些包
然后去github找一份代码学习下,在此之前请先连接这个技术需要什么,我找到了是这份代码Text-Classification
通过代码继续学习
我们需要掌握JieBa 分词的内部实现原理,了解 TF-IDF 统计方法的基本原理。然后进行网络的训练、网络的预测,以此来达到一个比较高的文本分类正确率。
我们需要大量的测试集,并给其标上标签,单一标签和多标签方法并不一样,当然我们经常面对的是多标签
深度学习文本分类模型:
1,fastText
原理:句子中所有的词向量进行平均(某种意义上可以理解为只有一个avg pooling特殊CNN),然后直接连接一个 softmax 层进行分类。
2,TextCNN: 利用CNN来提取句子中类似 n-gram 的关键信息。
改进: fastText 中的网络结果是完全没有考虑词序信息的,而TextCNN提取句子中类似 n-gram 的关键信息。
3,TextRNN:
模型: Bi-directional RNN(实际使用的是双向LSTM)从某种意义上可以理解为可以捕获变长且双向的的 “n-gram” 信息。
改进: CNN有个最大问题是固定 filter_size 的视野,一方面无法建模更长的序列信息,另一方面 filter_size 的超参调节也很繁琐。
4,TextRNN + Attention:
改进:注意力(Attention)机制是自然语言处理领域一个常用的建模长时间记忆机制,能够很直观的给出每个词对结果的贡献,基本成了Seq2Seq模型的标配了。实际上文本分类从某种意义上也可以理解为一种特殊的Seq2Seq,所以考虑把Attention机制引入近来。
5,TextRCNN(TextRNN + CNN):
过程:
利用前向和后向RNN得到每个词的前向和后向上下文的表示:
词的表示变成词向量和前向后向上下文向量连接起来的形式:
再接跟TextCNN相同卷积层,pooling层即可,唯一不同的是卷积层 filter_size = 1就可以了,不再需要更大 filter_size 获得更大视野。
上面那份代码使用的是TextCNN,我们可以来分析下这个的使用
最新文章
- sqlserver 连接mysql
- 初识HTML
- css3新增的属性选择器
- 获取URL列表,设置代理请求URL,https的加密方式处理
- [译] 二、开始iOS编程之前,你还需要做什么?
- debian下mysql主从配置
- 基于时间点恢复数据库stopat
- js复习(二)
- 如何避免regionServer宕机
- rem移动端适配
- Linux远程登录
- TCP/IP之TCP交互数据流、成块数据流
- C#操作Xml:linq to xml操作XML
- 第十一章 泛型算法 C++ PRIMER
- poj supermaket (贪心)
- html+css手机端自动适应
- Angular4 响应式编程
- 教你phpstudy如何搭建本地多站点
- ubuntu 下python环境的切换使用
- Python学习笔记(4):容器、迭代对象、迭代器、生成器、生成器表达式