From 0e232eae3d8971285f9e094774f4ba5c444e4f64 Mon Sep 17 00:00:00 2001 From: jiangzhonglian Date: Fri, 20 Jul 2018 21:42:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20nlp=20=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 44 ++++++++++++++++++++++++++++++++++----- docs/NLP/README.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 docs/NLP/README.md diff --git a/README.md b/README.md index 011e181f5..4d50c835d 100644 --- a/README.md +++ b/README.md @@ -142,27 +142,61 @@ * 1.) [入门介绍](./docs/DeepLearning/1.入门介绍.md) * 2.) 代码位置:src/py2.x or py3.x/DL -## 自然语言处理(NLP) +## 自然语言处理(NLP) - 百度公开课(使用场景了解) -### 第一部分 入门介绍 +> 第一部分 入门介绍 * 1.) [自然语言处理入门介绍](./docs/NLP/1.自然语言处理入门介绍.md) -### 第二部分 机器翻译 +> 第二部分 机器翻译 * 2.) [机器翻译](./docs/NLP/2.机器翻译.md) -### 第三部分 篇章分析 +> 第三部分 篇章分析 * 3.1.) [篇章分析-内容概述](./docs/NLP/3.1.篇章分析-内容概述.md) * 3.2.) [篇章分析-内容标签](./docs/NLP/3.2.篇章分析-内容标签.md) * 3.3.) [篇章分析-情感分析](./docs/NLP/3.3.篇章分析-情感分析.md) * 3.4.) [篇章分析-自动摘要](./docs/NLP/3.4.篇章分析-自动摘要.md) -### 第四部分 UNIT-语言理解与交互技术 +> 第四部分 UNIT-语言理解与交互技术 * 4.) [UNIT-语言理解与交互技术](./docs/NLP/4.UNIT-语言理解与交互技术.md) +## 自然语言处理(NLP) - 相关项目 + +* 入门教程需看资料: https://github.com/apachecn/MachineLearning/tree/dev/docs/NLP + +### 中文分词: + +* 构建DAG图 +* 动态规划查找,综合正反向(正向加权反向输出)求得DAG最大概率路径 +* 使用了SBME语料训练了一套 HMM + Viterbi 模型,解决未登录词问题 + +### 情感分析 + +比赛地址: https://www.kaggle.com/c/word2vec-nlp-tutorial + +* 方案一(0.86):WordCount + 朴素 Bayes +* 方案二(0.94):LDA + 分类模型(knn/决策树/逻辑回归/svm/xgboost/随机森林) + * a) 决策树效果不是很好,这种连续特征不太适合的 + * b) 通过参数调整 200 个topic,信息量保存效果较优(计算主题) +* 方案三(0.72):word2vec + CNN + * 说实话:没有一个好的机器,是调不出来一个好的结果 (: 逃 + +**通过AUC 来评估模型的效果** + +### 文本纠错 + +* bi-gram + levenshtein + +### 文本摘要 + +* textrank + +### 机器翻译(Seq2Seq) + +* Encoder + Decoder(Attention) ## 网站视频 diff --git a/docs/NLP/README.md b/docs/NLP/README.md new file mode 100644 index 000000000..ce465ab14 --- /dev/null +++ b/docs/NLP/README.md @@ -0,0 +1,52 @@ +# 入门教程需看资料 + +## NLP 学习书籍: + +* 百度搜索:Python自然语言处理 +* 读书笔记:https://wnma3mz.github.io/hexo_blog/2018/05/13/《Python自然语言处理》阅读笔记(一) + +## NLP 全局介绍视频:(简单做了解就行) + +地址链接: http://bit.baidu.com/Course/detail/id/56.html + +1. 自然语言处理知识入门 +2. 百度机器翻译 +3. 篇章分析 +4. UNIT:语言理解与交互技术 + +## 中文nlp词向量 + +https://github.com/Embedding/Chinese-Word-Vectors + +> 深度学习必学 + +1.反向传递: https://www.cnblogs.com/charlotte77/p/5629865.html +2.CNN原理: http://www.cnblogs.com/charlotte77/p/7759802.html +3.RNN原理: https://blog.csdn.net/qq_39422642/article/details/78676567 +4.LSTM深入浅出的好文: https://blog.csdn.net/roslei/article/details/61912618 + +## NLP的一般操作流程 + +[本项目](http://pytorch.apachecn.org/cn/tutorials/intermediate/char_rnn_classification_tutorial.html) 试图通过名字分类问题给大家描述一个基础的深度学习中自然语言处理模型,同时也向大家展示了Pytorch的基本玩法。 其实对于大部分基础的NLP工作,都是类似的套路: + +1. 收集数据 +2. 清洗数据 +3. 为数据建立字母表或词表(vocabulary或者叫look-up table) +4. 根据字母表或者词表把数据向量化 +5. 搭建神经网络,深度学习中一般以LSTM或者GRU为主,按照需求结合各种其他的工具,包括embedding,注意力机制,双向RNN等等常见算法。 +6. 输入数据,按需求得到输出,比如分类模型根据类别数来得到输出,生成模型根据指定的长度或者结束标志符来得到输出等等。 +7. 把输出的结果进行处理,得到最终想要的数据。常需要把向量化的结果根据字母表或者词表变回文本数据。 +8. 评估模型。 + +如果真的想要对自然语言处理或者序列模型有更加全面的了解,建议大家去网易云课堂看一看吴恩达深度学习微专业中的序列模型这一板块,可以说是讲的非常清楚了。 此外极力推荐两个blog: + +1. 讲述RNN循环神经网络在深度学习中的各种应用场景。http://karpathy.github.io/2015/05/21/rnn-effectiveness/ +2. 讲述LSTM的来龙去脉。http://colah.github.io/posts/2015-08-Understanding-LSTMs/ + +最后,本文参考整合了: + +* Pytorch中文教程:http://pytorch.apachecn.org/cn/tutorials +* Pytorch中文文档:http://pytorch.apachecn.org/cn/docs/0.3.0 +* Pytorch官方文档:http://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.html +* Ngarneau小哥的博文:https://github.com/ngarneau/understanding-pytorch-batching-lstm +* 另外,本项目搭配Sung Kim的Pytorch Zero To All的第13讲rnn_classification会更加方便食用喔,视频可以在油管和b站中找到。