diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..a089eef55 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,28 @@ +group: travis_latest +language: python +cache: pip +python: + - 2.7 + - 3.7 +matrix: + allow_failures: + - python: 2.7 + include: + - python: 2.7 + env: TEST_DIR=./MachineLearning/src/py2.x, + - python: 3.7 + env: TEST_DIR=./MachineLearning/src/py3.x/ + dist: xenial # required for Python 3.7 + sudo: required # required for Python 3.7 +install: + - pip install flake8 +before_script: + # stop the build if there are Python syntax errors or undefined names + - flake8 ${TEST_DIR} --count --select=E901,E999,F821,F822,F823 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + - flake8 ${TEST_DIR} --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics +script: + - true # add other tests here +notifications: + on_success: change + on_failure: change # `always` will be the setting once code changes slow down diff --git a/README.md b/README.md index baf5bd1b2..c851b2983 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # MachineLearning +* [ApacheCN 开源组织](https://github.com/apachecn/organization): https://github.com/apachecn/organization + > **欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远** * **ApacheCN - 学习机器学习群【629470233】ApacheCN - 学习机器学习群[629470233]** @@ -9,8 +11,7 @@ * **视频已更新完成,如果你觉得有价值,请帮忙点 Star【后续组织学习活动:sklearn、kaggle、 Pytorch 和 tensorflow】** * -- 视频网站:优酷 /bilibili / Acfun / 网易云课堂,可直接在线播放。(最下方有相应链接) * -- [群小哥哥:红色石头的机器学习之路](https://github.com/RedstoneWill): [台湾大学林轩田机器学习基石课程 - **系列学习笔记**](https://mp.weixin.qq.com/s/xb0i55zIQVzCiSZALbvncg) - -**ApacheCN 网友捐赠页面:http://www.apachecn.org/organization/664.html** +* 推荐一个[机器学习笔记](https://feisky.xyz/machine-learning): https://feisky.xyz/machine-learning ## 机器学习 @@ -141,27 +142,199 @@ * 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) - 相关项目 + +学习过程中-内心复杂的变化!!! + +``` +自从学习NLP以后,才发现国内与国外的典型区别: +1. 对资源的态度是完全相反的: + 1) 国内:就好像为了名气,举办工作装逼的会议,就是没有干货,全部都是象征性的PPT介绍,不是针对在做的各位 + 2)国外:就好像是为了推动nlp进步一样,分享者各种干货资料和具体的实现。(特别是: python自然语言处理) +2. 论文的实现: + 1) 各种高大上的论文实现,却还是没看到一个像样的GitHub项目!(可能我的搜索能力差了点,一直没找到) + 2)国外就不举例了,我看不懂! +3. 开源的框架 + 1)国外的开源框架: tensorflow/pytorch 文档+教程+视频(官方提供) + 2) 国内的开源框架: 额额,还真举例不出来!但是牛逼吹得不比国外差!(好像 MXNet 是沐神弄的?? 文档+教程+视频) +每一次深入都要去翻墙,每一次深入都要Google,每一次看着国内的说:哈工大、讯飞、中科大、百度、阿里 多牛逼,但是资料还是得国外去找! +有时候真的挺狠的!真的有点瞧不起自己国内的技术环境! + +当然谢谢国内很多博客大佬,特别是一些入门的Demo和基本概念。【深入的水平有限,没看懂】 +``` + +![](images/NLP/F94581F64C21A1094A473397DFA42F9C.jpg) + +* 入门教程需看资料【添加比赛链接】: https://github.com/apachecn/MachineLearning/tree/dev/docs/NLP +* Python 自然语言处理 第二版: https://usyiyi.github.io/nlp-py-2e-zh + +### 中文分词: + +* 构建DAG图 +* 动态规划查找,综合正反向(正向加权反向输出)求得DAG最大概率路径 +* 使用了SBME语料训练了一套 HMM + Viterbi 模型,解决未登录词问题 + +### 1.文本分类(Text Classification) + +文本分类是指标记句子或文档,例如电子邮件垃圾邮件分类和情感分析。 + +下面是一些很好的初学者文本分类数据集。 + +1. [路透社Newswire主题分类](http://kdd.ics.uci.edu/databases/reuters21578/reuters21578.html)(路透社-21578)。1987年路透社出现的一系列新闻文件,按类别编制索引。[另见RCV1,RCV2和TRC2](http://trec.nist.gov/data/reuters/reuters.html)。 +2. [IMDB电影评论情感分类(斯坦福)](http://ai.stanford.edu/~amaas/data/sentiment)。来自网站imdb.com的一系列电影评论及其积极或消极的情绪。 +3. [新闻组电影评论情感分类(康奈尔)](http://www.cs.cornell.edu/people/pabo/movie-review-data/)。来自网站imdb.com的一系列电影评论及其积极或消极的情绪。 + +有关更多信息,请参阅帖子: +[单标签文本分类的数据集](http://ana.cachopo.org/datasets-for-single-label-text-categorization)。 + +> 情感分析 + +比赛地址: 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 来评估模型的效果** + + +### 2.语言模型(Language Modeling) + +语言建模涉及开发一种统计模型,用于预测句子中的下一个单词或一个单词中的下一个单词。它是语音识别和机器翻译等任务中的前置任务。 + +它是语音识别和机器翻译等任务中的前置任务。 + +下面是一些很好的初学者语言建模数据集。 + +1. [古腾堡项目](https://www.gutenberg.org/),一系列免费书籍,可以用纯文本检索各种语言。 +2. 还有更多正式的语料库得到了很好的研究; 例如: + [布朗大学现代美国英语标准语料库](https://en.wikipedia.org/wiki/Brown_Corpus)。大量英语单词样本。 + [谷歌10亿字语料库](https://github.com/ciprian-chelba/1-billion-word-language-modeling-benchmark)。 + +> 句子相似度识别 + +* 项目地址: https://www.kaggle.com/c/quora-question-pairs +* 解决方案: word2vec + Bi-GRU + +> 文本纠错 + +* bi-gram + levenshtein + + + +### 3.图像字幕(Image Captioning) + +mage字幕是为给定图像生成文本描述的任务。 + +下面是一些很好的初学者图像字幕数据集。 + +1. [上下文中的公共对象(COCO)](http://mscoco.org/dataset/#overview)。包含超过12万张带描述的图像的集合 +2. [Flickr 8K](http://nlp.cs.illinois.edu/HockenmaierGroup/8k-pictures.html)。从flickr.com获取的8千个描述图像的集合。 +3. [Flickr 30K](http://shannon.cs.illinois.edu/DenotationGraph/)。从flickr.com获取的3万个描述图像的集合。 + 欲了解更多,请看帖子: + +[探索图像字幕数据集,2016年](http://sidgan.me/technical/2016/01/09/Exploring-Datasets) + +### 4.机器翻译(Machine Translation) + +机器翻译是将文本从一种语言翻译成另一种语言的任务。 + +下面是一些很好的初学者机器翻译数据集。 + +1. [加拿大第36届议会的协调国会议员](https://www.isi.edu/natural-language/download/hansard/)。成对的英语和法语句子。 +2. [欧洲议会诉讼平行语料库1996-2011](http://www.statmt.org/europarl/)。句子对一套欧洲语言。 + 有大量标准数据集用于年度机器翻译挑战; 看到: + +[统计机器翻译](http://www.statmt.org/) + +> 机器翻译 + +* Encoder + Decoder(Attention) +* 参考案例: http://pytorch.apachecn.org/cn/tutorials/intermediate/seq2seq_translation_tutorial.html + +### 5.问答系统(Question Answering) + +问答是一项任务,其中提供了一个句子或文本样本,从中提出问题并且必须回答问题。 + +下面是一些很好的初学者问题回答数据集。 + +1. [斯坦福问题回答数据集(SQuAD)](https://rajpurkar.github.io/SQuAD-explorer/)。回答有关维基百科文章的问题。 +2. [Deepmind问题回答语料库](https://github.com/deepmind/rc-data)。从每日邮报回答有关新闻文章的问题。 +3. [亚马逊问答数据](http://jmcauley.ucsd.edu/data/amazon/qa/)。回答有关亚马逊产品的问题。 + 有关更多信息,请参阅帖子: + +[数据集:我如何获得问答网站的语料库,如Quora或Yahoo Answers或Stack Overflow来分析答案质量?](https://www.quora.com/Datasets-How-can-I-get-corpus-of-a-question-answering-website-like-Quora-or-Yahoo-Answers-or-Stack-Overflow-for-analyzing-answer-quality) + +### 6.语音识别(Speech Recognition) + +语音识别是将口语的音频转换为人类可读文本的任务。 + +下面是一些很好的初学者语音识别数据集。 + +1. [TIMIT声学 - 语音连续语音语料库](https://catalog.ldc.upenn.edu/LDC93S1)。不是免费的,但因其广泛使用而上市。口语美国英语和相关的转录。 +2. [VoxForge](http://voxforge.org/)。用于构建用于语音识别的开源数据库的项目。 +3. [LibriSpeech ASR语料库](http://www.openslr.org/12/)。从LibriVox收集的大量英语有声读物。 + +### 7.自动文摘(Document Summarization) + +文档摘要是创建较大文档的简短有意义描述的任务。 + +下面是一些很好的初学者文档摘要数据集。 + +1. [法律案例报告数据集](https://archive.ics.uci.edu/ml/datasets/Legal+Case+Reports)。收集了4000份法律案件及其摘要。 +2. [TIPSTER文本摘要评估会议语料库](http://www-nlpir.nist.gov/related_projects/tipster_summac/cmp_lg.html)。收集了近200份文件及其摘要。 +3. [英语新闻文本的AQUAINT语料库](https://catalog.ldc.upenn.edu/LDC2002T31)。不是免费的,而是广泛使用的。新闻文章的语料库。 + 欲了解更多信息: + +[文档理解会议(DUC)任务](http://www-nlpir.nist.gov/projects/duc/data.html)。 +[在哪里可以找到用于文本摘要的良好数据集?](https://www.quora.com/Where-can-I-find-good-data-sets-for-text-summarization) + +> 命名实体识别 + +* Bi-LSTM CRF +* 参考案例: http://pytorch.apachecn.org/cn/tutorials/beginner/nlp/advanced_tutorial.html + + +> 文本摘要 + +* word2vec + textrank + +### 进一步阅读 + +如果您希望更深入,本节提供了其他数据集列表。 + +1. [维基百科研究中使用的文本数据集](https://en.wikipedia.org/wiki/List_of_datasets_for_machine_learning_research#Text_data) +2. [数据集:计算语言学家和自然语言处理研究人员使用的主要文本语料库是什么?](https://www.quora.com/Datasets-What-are-the-major-text-corpora-used-by-computational-linguists-and-natural-language-processing-researchers-and-what-are-the-characteristics-biases-of-each-corpus) +3. [斯坦福统计自然语言处理语料库](https://nlp.stanford.edu/links/statnlp.html#Corpora) +4. [按字母顺序排列的NLP数据集列表](https://github.com/niderhoff/nlp-datasets) +5. [该机构NLTK](http://www.nltk.org/nltk_data/) +6. [在DL4J上打开深度学习数据](https://deeplearning4j.org/opendata) +7. [NLP数据集](https://github.com/caesar0301/awesome-public-datasets#natural-language) +8. 国内开放数据集: https://bosonnlp.com/dev/resource ## 网站视频 @@ -292,14 +465,10 @@ * ApacheCN 纯粹出于学习目的与个人兴趣翻译本书 * ApacheCN 保留对此版本译文的署名权及其它相关权利 -## [ApacheCN 组织资源](http://www.apachecn.org/) +* * * + +资料来源: -> [kaggle: 机器学习竞赛](https://github.com/apachecn/kaggle) +* https://machinelearningmastery.com/datasets-natural-language-processing +* 【比赛收集平台】: https://github.com/iphysresearch/DataSciComp -| 深度学习 | 机器学习 | 大数据 | 运维工具 | -| --- | --- | --- | --- | -| [TensorFlow R1.2 中文文档](http://cwiki.apachecn.org/pages/viewpage.action?pageId=10030122) | [机器学习实战-教学](https://github.com/apachecn/MachineLearning) | [Spark 2.2.0和2.0.2 中文文档](http://spark.apachecn.org/) | [Zeppelin 0.7.2 中文文档](http://cwiki.apachecn.org/pages/viewpage.action?pageId=10030467) | -| [Pytorch 0.3 中文文档 ](http://pytorch.apachecn.org/cn/0.3.0/) | [Sklearn 0.19 中文文档](http://sklearn.apachecn.org/) | [Storm 1.1.0和1.0.1 中文文档](http://storm.apachecn.org/) | [Kibana 5.2 中文文档](http://cwiki.apachecn.org/pages/viewpage.action?pageId=8159377) | -| | [LightGBM 中文文档](http://lightgbm.apachecn.org/cn/latest) | [Kudu 1.4.0 中文文档](http://cwiki.apachecn.org/pages/viewpage.action?pageId=10813594) | | -| | [XGBoost 中文文档](http://xgboost.apachecn.org/cn/latest) | [Elasticsearch 5.4 中文文档](http://cwiki.apachecn.org/pages/viewpage.action?pageId=4260364) | -| | | [Beam 中文文档](http://beam.apachecn.org/) | diff --git "a/docs/1.\346\234\272\345\231\250\345\255\246\344\271\240\345\237\272\347\241\200.md" "b/docs/1.\346\234\272\345\231\250\345\255\246\344\271\240\345\237\272\347\241\200.md" index e4d5244b5..3f5da9e0b 100644 --- "a/docs/1.\346\234\272\345\231\250\345\255\246\344\271\240\345\237\272\347\241\200.md" +++ "b/docs/1.\346\234\272\345\231\250\345\255\246\344\271\240\345\237\272\347\241\200.md" @@ -154,7 +154,7 @@ * 训练样本(training sample):训练用到的每个样本 * 训练集(training set):训练样本组成的集合 * 假设(hypothesis):学习模型对应了关于数据的某种潜在规则 -* 真相(group-true):真正存在的潜在规律 +* 真相(ground-truth):真正存在的潜在规律 * 学习器(learner):模型的另一种叫法,把学习算法在给定数据和参数空间的实例化 * 预测(prediction):判断一个东西的属性 * 标记(label):关于示例的结果信息,比如我是一个“好人”。 diff --git a/docs/NLP/README.md b/docs/NLP/README.md new file mode 100644 index 000000000..17eb671db --- /dev/null +++ b/docs/NLP/README.md @@ -0,0 +1,78 @@ +# 入门教程需看资料 + +## 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站中找到。 + +## nlp - 比赛链接 + +* https://competitions.codalab.org/competitions/12731 +* https://sites.ualberta.ca/%7Emiyoung2/COLIEE2018/ +* https://visualdialog.org/challenge/2018 ++ 人机对话 NLP + - http://jddc.jd.com ++ 司法数据文本的 NLP + - http://cail.cipsc.org.cn ++ “达观杯” 文本智能处理挑战赛 + - http://www.dcjingsai.com/common/cmpt/%E2%80%9C%E8%BE%BE%E8%A7%82%E6%9D%AF%E2%80%9D%E6%96%87%E6%9C%AC%E6%99%BA%E8%83%BD%E5%A4%84%E7%90%86%E6%8C%91%E6%88%98%E8%B5%9B_%E7%AB%9E%E8%B5%9B%E4%BF%A1%E6%81%AF.html ++ 中文论文摘要数据 + - https://biendata.com/competition/smpetst2018 ++ 中文问答任务 + - https://biendata.com/competition/CCKS2018_4/ ++ 第二届讯飞杯中文机器阅读理解评测 + - http://www.hfl-tek.com/cmrc2018 ++ 2018机器阅读理解技术竞赛 这也是结束了的 NLP + - http://mrc2018.cipsc.org.cn ++ 句子文本相似度计算 + - https://www.kaggle.com/c/quora-question-pairs + +* * * + +【比赛收集平台】: https://github.com/iphysresearch/DataSciComp diff --git a/images/NLP/F94581F64C21A1094A473397DFA42F9C.jpg b/images/NLP/F94581F64C21A1094A473397DFA42F9C.jpg new file mode 100644 index 000000000..3d656059b Binary files /dev/null and b/images/NLP/F94581F64C21A1094A473397DFA42F9C.jpg differ