mirror of
https://github.com/apachecn/ailearning.git
synced 2026-04-24 02:23:45 +08:00
git 项目大瘦身
This commit is contained in:
83
docs/nlp/1.自然语言处理入门介绍.md
Normal file
83
docs/nlp/1.自然语言处理入门介绍.md
Normal file
@@ -0,0 +1,83 @@
|
||||
# 自然语言处理介绍
|
||||
|
||||
* 语言是知识和思维的载体
|
||||
* 自然语言处理 (Natural Language Processing, NLP) 是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。
|
||||
|
||||
## NLP相关的技术
|
||||
|
||||
| 中文 | 英文 | 描述 |
|
||||
| --- | --- | --- |
|
||||
| 分词 | Word Segmentation | 将连续的自然语言文本,切分成具有语义合理性和完整性的词汇序列 |
|
||||
| 命名实体识别 | Named Entity Recognition | 识别自然语言文本中具有特定意义的实体(人、地、机构、时间、作品等) |
|
||||
| 词性标注 | Part-Speech Tagging | 为自然语言文本中的每个词汇赋予一个词性(名词、动词、形容词等) |
|
||||
| 依存句法分析 | Dependency Parsing | 自动分析句子中的句法成分(主语、谓语、宾语、定语、状语和补语等成分) |
|
||||
| 词向量与语义相似度 | Word Embedding & Semantic Similarity | 依托全网海量数据和深度神经网络技术,实现了对词汇的向量化表示,并据此实现了词汇的语义相似度计算 |
|
||||
| 文本语义相似度 | Text Semantic Similarity | 依托全网海量数据和深度神经网络技术,实现文本间的语义相似度计算的能力 |
|
||||
| 篇章分析 | Document Analysis | 分析篇章级文本的内在结构,进而分析文本情感倾向,提取评论性观点,并生成反映文本关键信息的标签与摘要 |
|
||||
| 机器翻译技术 | Machine Translating | 基于互联网大数据,融合深度神经网络、统计、规则多种翻译方法,帮助用户跨越语言鸿沟,与世界自由沟通 |
|
||||
|
||||
## 场景案例
|
||||
|
||||
### 案例1(解决交叉歧义)
|
||||
|
||||
**分词(Word Segmentation)** :将连续的自然语言文本,切分成具有语义合理性和完整性的词汇序列
|
||||
|
||||
例句:致毕业和尚未毕业的同学。
|
||||
|
||||
分词:
|
||||
1. `致` `毕业` `和` `尚未` `毕业` `的` `同学`
|
||||
2. `致` `毕业` `和尚` `未` `毕业` `的` `同学`
|
||||
|
||||
推荐:
|
||||
1. 校友 和 老师 给 尚未 毕业 同学 的 一 封 信
|
||||
2. 本科 未 毕业 可以 当 和尚 吗
|
||||
|
||||
### 案例2(从粒度整合未登录体词)
|
||||
|
||||
**命名实体识别(Named Entity Recognition)**:识别自然语言文本中具有特定意义的实体(人、地、机构、时间、作品等)
|
||||
|
||||
例句:天使爱美丽在线观看
|
||||
|
||||
分词:`天使` `爱` `美丽` `在线` `观看`
|
||||
|
||||
实体: 天使爱美丽 -> 电影
|
||||
|
||||
推荐:
|
||||
1. 网页:天使爱美丽 土豆 高清视频
|
||||
2. 网页:在线直播爱美丽的天使
|
||||
|
||||
### 案例3(结构歧义问题)
|
||||
|
||||
**词性标注(Part-Speech Tagging)**: 为自然语言文本中的每个词汇赋予一个词性(名词、动词、形容词等)
|
||||
**依存句法分析(Dependency Parsing)**:自动分析句子中的句法成分(主语、谓语、宾语、定语、状语和补语等成分)
|
||||
|
||||
评论:房间里还可以欣赏日出
|
||||
|
||||
歧义:
|
||||
1. 房间还可以
|
||||
2. 可以欣赏日出
|
||||
|
||||
词性:(???)
|
||||
房间里:主语
|
||||
还可以:谓语
|
||||
欣赏日出: 动宾短语
|
||||
|
||||
### 案例4(词汇语言相似度)
|
||||
|
||||
**词向量与语义相似度(Word Embedding & Semantic Similarity)**:对词汇进行向量化表示,并据此实现词汇的语义相似度计算。
|
||||
|
||||
例如:西瓜 与 (呆瓜/草莓),哪个更接近?
|
||||
|
||||
向量化表示: 西瓜(0.1222, 0.22333, .. )
|
||||
相似度计算: 呆瓜(0.115) 草莓(0.325)
|
||||
向量化表示:(-0.333, 0.1223 .. ) (0.333, 0.3333, .. )
|
||||
|
||||
### 案例5(文本语义相似度)
|
||||
|
||||
**文本语义相似度(Text Semantic Similarity)**:依托全网海量数据和深度神经网络技术,实现文本间的语义相似度计算的能力
|
||||
|
||||
例如:车头如何防止车牌 与 (前牌照怎么装/如何办理北京牌照),哪个更接近?
|
||||
|
||||
向量化表示: 车头如何防止车牌(0.1222, 0.22333, .. )
|
||||
相似度计算: 前牌照怎么装(0.762) 如何办理北京牌照(0.486)
|
||||
向量化表示: (-0.333, 0.1223 .. ) (0.333, 0.3333, .. )
|
||||
30
docs/nlp/3.1.篇章分析-内容概述.md
Normal file
30
docs/nlp/3.1.篇章分析-内容概述.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# 篇章分析-内容概述
|
||||
|
||||
## 篇章分析变迁
|
||||
|
||||
1. 内容生态: 新浪 -> 百家号、今日头条(自媒体)
|
||||
2. 用户成为信息的生产中心: web 1.0 -> 百度贴吧、新浪微博、团购网站(用户评论,富有个人情感和用户观点的信息)
|
||||
3. 移动、无屏: 显示屏 -> 手机、Siri(展示的终端)
|
||||
|
||||
## 篇章分析场景
|
||||
|
||||
篇章分析重要性:让人们最平等`便捷`地`获取信息`,`找到所求`。
|
||||
|
||||
1. 个性化信息获取(搜索引擎的理解和推荐):从搜索的角度来看,通过对内容的深入理解,我们能够精准地对内容进行分析,然后将内容推荐给需要的用户,达到不搜即得。
|
||||
2. 便捷咨询阅读(头条的热门推荐):从资讯阅读的角度来看,我们通过对内容进行概括总结、形成摘要,就能搞让用户更快捷地浏览信息、获取知识。
|
||||
3. 信息直接满足:更进一步说,对用户的问题,我们可以基于内容理解,直接给出答案,从而满足用户的需求。
|
||||
|
||||
`总之`:通过篇章分析,我们能够进行内容理解,从而更好地服务用户。
|
||||
|
||||
## 篇章分析概述
|
||||
|
||||
`篇章是形式上互相衔接、语义上前后连贯的句子序列。`
|
||||
|
||||
有以下3种:
|
||||
* 1.文章:新闻稿、博客、微博
|
||||
* 2.评论:O2O服务的用户评论、豆瓣的影评、微博上的动态
|
||||
* 3.对话:话题上是相互衔接的、语义上也是连贯的一个对话序列
|
||||
|
||||
## 篇章分析任务
|
||||
|
||||
整理的nlp全面知识体系: <https://liuhuanyong.github.io>
|
||||
|
||||
## nlp 学习书籍和工具:
|
||||
|
||||
* 百度搜索:Python自然语言处理
|
||||
* 读书笔记:https://wnma3mz.github.io/hexo_blog/2018/05/13/《Python自然语言处理》阅读笔记(一)
|
||||
* Python自然语言处理工具汇总: <https://blog.csdn.net/sa14023053/article/details/51823122>
|
||||
|
||||
## nlp 全局介绍视频:(简单做了解就行)
|
||||
|
||||
地址链接: http://bit.baidu.com/Course/detail/id/56.html
|
||||
|
||||
1. 自然语言处理知识入门
|
||||
2. 百度机器翻译
|
||||
3. 篇章分析
|
||||
4. UNIT:语言理解与交互技术
|
||||
|
||||
## 中文 NLP
|
||||
|
||||
> 开源 - 词向量库集合
|
||||
|
||||
* <https://github.com/Embedding/Chinese-Word-Vectors>
|
||||
* <https://github.com/brightmart/nlp_chinese_corpus>
|
||||
* <https://github.com/codemayq/chinese_chatbot_corpus>
|
||||
* <https://github.com/candlewill/Dialog_Corpus>
|
||||
|
||||
> 深度学习必学
|
||||
|
||||
1. [反向传递](/docs/dl/反向传递.md): https://www.cnblogs.com/charlotte77/p/5629865.html
|
||||
2. [CNN原理](/docs/dl/CNN原理.md): http://www.cnblogs.com/charlotte77/p/7759802.html
|
||||
3. [RNN原理](/docs/dl/RNN原理.md): https://blog.csdn.net/qq_39422642/article/details/78676567
|
||||
4. [LSTM原理](/docs/dl/LSTM原理.md): https://blog.csdn.net/weixin_42111770/article/details/80900575
|
||||
|
||||
> [Word2Vec 原理](/docs/nlp/Word2Vec.md):
|
||||
|
||||
1. 负采样
|
||||
|
||||
介绍:
|
||||
自然语言处理领域中,判断两个单词是不是一对上下文词(context)与目标词(target),如果是一对,则是正样本,如果不是一对,则是负样本。
|
||||
采样得到一个上下文词和一个目标词,生成一个正样本(positive example),生成一个负样本(negative example),则是用与正样本相同的上下文词,再在字典中随机选择一个单词,这就是负采样(negative sampling)。
|
||||
|
||||
案例:
|
||||
比如给定一句话“这是去上学的班车”,则对这句话进行正采样,得到上下文“上”和目标词“学”,则这两个字就是正样本。
|
||||
负样本的采样需要选定同样的“上”,然后在训练的字典中任意取另一个字,如“我”、“梦”、“目”,这一对就构成负样本。
|
||||
训练需要正样本和负样本同时存在。
|
||||
|
||||
优势:
|
||||
负采样的本质:每次让一个训练样本只更新部分权重,其他权重全部固定;减少计算量;(一定程度上还可以增加随机性)
|
||||
|
||||
## nlp 操作流程
|
||||
|
||||
[本项目](https://pytorch.apachecn.org/docs/1.0/#/char_rnn_classification_tutorial) 试图通过名字分类问题给大家描述一个基础的深度学习中自然语言处理模型,同时也向大家展示了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中文文档:https://pytorch.apachecn.org
|
||||
* 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/“达观杯”文本智能处理挑战赛_竞赛信息.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
|
||||
48
docs/nlp/Word2Vec.md
Normal file
48
docs/nlp/Word2Vec.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Word2Vec 讲解
|
||||
|
||||
## 介绍
|
||||
|
||||
**需要复习** 手写 Word2Vec 源码:https://blog.csdn.net/u014595019/article/details/51943428
|
||||
|
||||
* 2013年,Google开源了一款用于词向量计算的工具—— `word2vec`,引起了工业界和学术界的关注。
|
||||
* `word2vec` 算法或模型的时候,其实指的是其背后用于计算 **word vector** 的 `CBoW` 模型和 `Skip-gram` 模型
|
||||
* 很多人以为 `word2vec` 指的是一个算法或模型,这也是一种谬误。
|
||||
* 因此通过 Word2Vec 技术 输出的词向量可以被用来做很多NLP相关的工作,比如聚类、找同义词、词性分析等等.
|
||||
|
||||
> 适用场景
|
||||
|
||||
1. cbow适用于小规模,或者主题比较散的语料,毕竟他的向量产生只跟临近的字有关系,更远的语料并没有被采用。
|
||||
2. 而相反的skip-gram可以处理基于相同语义,义群的一大批语料。
|
||||
|
||||
## CBoW 模型(Continuous Bag-of-Words Model)
|
||||
|
||||
* 连续词袋模型(CBOW)常用于NLP深度学习。
|
||||
* 这是一种模式,它试图根据目标词 `之前` 和 `之后` 几个单词的背景来预测单词(CBOW不是顺序)。
|
||||
* CBOW 模型: 能够根据输入周围n-1个词来预测出这个词本身.
|
||||
* 也就是说,CBOW模型的输入是某个词A周围的n个单词的词向量之和,输出是词A本身的词向量.
|
||||
|
||||
![CBoW 模型/img/NLP/Word2Vce/CBoW.png)
|
||||
|
||||
## Skip-gram 模型
|
||||
|
||||
* skip-gram与CBOW相比,只有细微的不同。skip-gram的输入是当前词的词向量,而输出是周围词的词向量。
|
||||
* Skip-gram 模型: 能够根据词本身来预测周围有哪些词.
|
||||
* 也就是说,Skip-gram模型的输入是词A本身,输出是词A周围的n个单词的词向量.
|
||||
|
||||
![Skip-gram 模型/img/NLP/Word2Vce/Skip-gram.png)
|
||||
|
||||
|
||||
明天看看这个案例:https://blog.csdn.net/lyb3b3b/article/details/72897952
|
||||
|
||||
|
||||
## 补充:NPLM - Ngram 模型
|
||||
|
||||
* n-gram 模型是一种近似策略,作了一个马尔可夫假设:认为目标词的条件概率只与其之前的 n 个词有关
|
||||
* NPLM基于 n-gram, 相当于目标词只有上文。
|
||||
|
||||
|
||||
* * *
|
||||
|
||||
参考资料:
|
||||
|
||||
1. https://www.cnblogs.com/iloveai/p/word2vec.html
|
||||
Reference in New Issue
Block a user