本节课结合了旧版的前半部分(NLP的基本概念的内容)以及新版的绝大多数内容。
0. 本节课程计划
- NLP的基本概念和人类语言的本质。
- 什么是深度学习。
- 课程安排。
- 为什么NLP难?
- NLP的应用。
1. NLP的基本概念
1.1 什么是NLP?
NLP是计算机科学、人工智能、语言学的交叉学科。
它的目标是让计算机理解人类语言,从而完成有意义的任务。例如:
- 下订单或者买东西
- 知识问答,如Siri、谷歌助手、微软小冰等
完全理解和表达语言的内涵是极其困难的,完美的语言理解等效于实现完备的人工智能系统。
1.2 NLP的层次
语言的输入有两种方式,一种是语音识别,一种是文本(OCR和分词)。接下来是形态学(Morphology),简单可理解为对英文单词进行形态变换,如act->action。
接下来是语法分析和语义分析。最后是篇章处理,它更加注重于通过上下文进行理解。
本门课主要注重于画圈的三大部分,尤其是后两部分(语法分析和语义分析)。
1.3 自然语言处理应用
推荐和广告依然是AI在互联网行业落地最早也最为成熟的两个方向。所以将NLP技术利用于这两个方向也是顺其自然的事情。具体来说:
- 搜索(拼写自动纠正)
- 在线广告匹配
现如今NLP最火热的两个方向分别是知识图谱和智能客服(聊天机器人)。
1.4 人类语言的特殊之处
自然语言与信号处理、数据挖掘不同(后两者是处理数据,目的是从一堆随机数据中找出规律),自然语言都是用来传输有意义的信息的。另外,自然语言对应的系统很复杂,但是小孩子也能很快学会说话。人类语言是离散的、明确的符号系统。事实上,我们是用符号系统和别人交流,但这种富有表现力的系统可能会出现微小的差异,比如颜文字,随意的错误拼写“I loooove it”。有了符号以后,我们就可以进行可靠的远距离的传输。所以说语言文字并不仅仅是形式逻辑或传统AI的产物。
当人们使用语言进行交流,尽管交流的内容包括符号,但都是通过承载在连续的载体中的。一个有趣的现象是,使用不同的载体可以表达完全相同的信息。
哲学、科学、人工智能的主要观点是把语言的符号体系映射到大脑。对于深度学习来说,可以把大脑想象成具有连续激活模式的大脑,上图表示的是,我们使用语言是把连续转换成符号,再转换成连续的过程。
另外巨大的词表(每种语言最少有几万个词汇)也导致数据稀疏,是机器学习要解决的一个重要问题。
2. 如何表示词的含义
这部分内容不是很好理解,包括了人类的发展史、哲学思想等等,能发明符号表示含义看起来非常容易简单,但是从0到1绝对是智慧的表现。
2.1 如何在计算机中表示含义
安装NLTK wordnet的方法:
pip install nltk
import nltk
nltk.download('wordnet')
- 1
- 2
- 3
相同词在不同词性下的同义词
from nltk.corpus import wordnet as wn
poses = { 'n':'noun', 'v':'verb', 's':'adj (s)', 'a':'adj', 'r':'adv'}
for synset in wn.synsets("good"):
print("{}: {}".format(poses[synset.pos()],
", ".join([l.name() for l in synset.lemmas()])))
- 1
- 2
- 3
- 4
- 5
词的逐级上位词
from nltk.corpus import wordnet as wn
panda = wn.synset("panda.n.01")
hyper = lambda s: s.hypernyms()
list(panda.closure(hyper))
- 1
- 2
- 3
- 4
使用WordNet存在的一些问题:
2.2 离散化表示
one-hot表示的问题在于,两个向量是正交的,所以无法计算向量之间的相似度。
2.3 分布式表示
通过相邻词来表示该词的含义(从小到大的阅读理解中都是使用该方法来判断新词的意思)。
使用分布式表示就可以用稠密的向量来代替系数的向量,并且可以表示词与词之间的相似性。
通过t-SNE将100维向量降维为2维的向量。
2.4 Word2Vec
大量的文本称为是语料。每个词由向量表示,并且由随机向量进行起始表示。
通过中心词计算背景词的概率
∂vc∂uoTvc=(u1,u2,…)T=uo
本节课结合了旧版的前半部分(NLP的基本概念的内容)以及新版的绝大多数内容。
0. 本节课程计划
- NLP的基本概念和人类语言的本质。
- 什么是深度学习。
- 课程安排。
- 为什么NLP难?
- NLP的应用。
1. NLP的基本概念
1.1 什么是NLP?
NLP是计算机科学、人工智能、语言学的交叉学科。
它的目标是让计算机理解人类语言,从而完成有意义的任务。例如:
- 下订单或者买东西
- 知识问答,如Siri、谷歌助手、微软小冰等
完全理解和表达语言的内涵是极其困难的,完美的语言理解等效于实现完备的人工智能系统。
1.2 NLP的层次
语言的输入有两种方式,一种是语音识别,一种是文本(OCR和分词)。接下来是形态学(Morphology),简单可理解为对英文单词进行形态变换,如act->action。
接下来是语法分析和语义分析。最后是篇章处理,它更加注重于通过上下文进行理解。
本门课主要注重于画圈的三大部分,尤其是后两部分(语法分析和语义分析)。
1.3 自然语言处理应用
推荐和广告依然是AI在互联网行业落地最早也最为成熟的两个方向。所以将NLP技术利用于这两个方向也是顺其自然的事情。具体来说:
- 搜索(拼写自动纠正)
- 在线广告匹配
现如今NLP最火热的两个方向分别是知识图谱和智能客服(聊天机器人)。
1.4 人类语言的特殊之处
自然语言与信号处理、数据挖掘不同(后两者是处理数据,目的是从一堆随机数据中找出规律),自然语言都是用来传输有意义的信息的。另外,自然语言对应的系统很复杂,但是小孩子也能很快学会说话。人类语言是离散的、明确的符号系统。事实上,我们是用符号系统和别人交流,但这种富有表现力的系统可能会出现微小的差异,比如颜文字,随意的错误拼写“I loooove it”。有了符号以后,我们就可以进行可靠的远距离的传输。所以说语言文字并不仅仅是形式逻辑或传统AI的产物。
当人们使用语言进行交流,尽管交流的内容包括符号,但都是通过承载在连续的载体中的。一个有趣的现象是,使用不同的载体可以表达完全相同的信息。
哲学、科学、人工智能的主要观点是把语言的符号体系映射到大脑。对于深度学习来说,可以把大脑想象成具有连续激活模式的大脑,上图表示的是,我们使用语言是把连续转换成符号,再转换成连续的过程。
另外巨大的词表(每种语言最少有几万个词汇)也导致数据稀疏,是机器学习要解决的一个重要问题。
2. 如何表示词的含义
这部分内容不是很好理解,包括了人类的发展史、哲学思想等等,能发明符号表示含义看起来非常容易简单,但是从0到1绝对是智慧的表现。
2.1 如何在计算机中表示含义
安装NLTK wordnet的方法:
pip install nltk
import nltk
nltk.download('wordnet')
- 1
- 2
- 3
相同词在不同词性下的同义词
from nltk.corpus import wordnet as wn
poses = { 'n':'noun', 'v':'verb', 's':'adj (s)', 'a':'adj', 'r':'adv'}
for synset in wn.synsets("good"):
print("{}: {}".format(poses[synset.pos()],
", ".join([l.name() for l in synset.lemmas()])))
- 1
- 2
- 3
- 4
- 5
词的逐级上位词
from nltk.corpus import wordnet as wn
panda = wn.synset("panda.n.01")
hyper = lambda s: s.hypernyms()
list(panda.closure(hyper))
- 1
- 2
- 3
- 4
使用WordNet存在的一些问题:
2.2 离散化表示
one-hot表示的问题在于,两个向量是正交的,所以无法计算向量之间的相似度。
2.3 分布式表示
通过相邻词来表示该词的含义(从小到大的阅读理解中都是使用该方法来判断新词的意思)。
使用分布式表示就可以用稠密的向量来代替系数的向量,并且可以表示词与词之间的相似性。
通过t-SNE将100维向量降维为2维的向量。
2.4 Word2Vec
大量的文本称为是语料。每个词由向量表示,并且由随机向量进行起始表示。
通过中心词计算背景词的概率
∂vc∂uoTvc=(u1,u2,…)T=uo
来源:CSDN
作者:Amadues_Mozart
链接:https://blog.csdn.net/Amadues_Mozart/article/details/104579733