自然语言处理
自然语言处理在作为深度学习的一个发展方向,近些年已经取得很好效果,平时看一些国外的资料,都会借助百度翻译先进行预翻译一下,通过提供翻译对文章有个大概了解后再去看省了不少力气。当然现在机器翻译还不能替代专业翻译去做某些特定领域的专业,但我相信在不久将来机器翻译会逐渐取代部分的人工翻译。
什么是 NLP
NLP 是自然语言处理的缩写,其实 NLP 就是 NLU + NLG 两部分组成
- NLU (natural language understanding) 理解语言过程叫做 NLU
- NLG (natural language generation) 在理解基础上给予回复就是 NLG
NLP 应用领域
- 聊天机器人
- 机器翻译
- 问答系统 最经典的就是 IBM 的 watson 系统
-
情感分析
- 股票股价预测
- 产品评论
- 事件监控
- 自动摘要
- 信息抽取
词向量
如何通过量化的方式来表示一个单词是 NLP 领域核心的问题。为了便于计算机计算我们需要文本进行转换,例如可以用一个数字、向量或者张量来表示文字。那么词向量就是用来表示词的向量,通常也会认为词向量就是词的特征向量。而且词向量今天已经成为自然语言处理的基础知识,随后会介绍几种主流词向量的模型。
独热编码(One-Hot)
什么是独热编码呢?也就是在向量中只有一个位置为 1 的向量,向量的维度和词库维度一样。
词库:[我,去,在,图书馆,学习]
词 | 独热编码 |
---|---|
我 | [1,0,0,0,0] |
去 | [0,0,1,0,0] |
图书馆 | [0,0,0,1,0] |
学习 | [0,0,0,0,1] |
词向量
如何通过某种方式来代表单词的语义是 NLP 理解的最为核心问题。基于独热编码是无法表示单词之间的语义相似度。我们之前学习其他模型时候已经了解到通常会用欧式距离、或是余弦相似度来衡量样本的相似度。但是用独热编码是无法计算两个单词间的相似度。这里我们来进一步解释一下
因为用 独热编码 表示词都是两两正交所有他们之间余弦相似度都是 0 。
而且我们用较少维度向量表示词汇。这里在补充一点独热编码是稀疏向量,而词向量是稠密向量。
词 | 词向量 |
---|---|
我 | [0.1,0.2,0.3] |
去 | [0.2,0.3,0.7] |
图书馆 | [0.2,0.5,0.6] |
学习 | [0.1,0.9,0.3] |
如何将词向量表示出来,我们发现一些类似单词都是聚集在一起,表示他们在某个维度上具有一定相似性。对于词向量的降维通常我们用 T-SNE(随后介绍)。
如何使用模型学习出词向量
- 准备用于生成词向量的文档
- 选择模型(CBow,SkipGram,NNLM,Glove,ELMo,Gause Embedding,LDA,Bert)这些模型都会用于学习词向量,我尽可能给大家讲解一些这些词向量。
语言模型
语言模型用来判断: 是否一个句子从语法上是否合理。我们都知道在韩语和日语也好这些语言语序和中文是不同,喜欢将动词放在最后。
逐词翻译的话我去图书馆就变成了我图书馆去
- 我去图书馆
- 我图书馆去
显然按中文习惯第一句是比较通顺的。通过语言模型可以计算出上面句子的概率要大于下面句子,这就是语言模型要做的事。语言模型可以调整我们逐词翻译的顺序。那么我们是如何计算出一个句子按一定顺序出现概率呢,这时候就会需要计算这个组成这个句子所有词按一定顺序出现的联合概率。
我们可以使用条件概率来表示联合概率,我们语言模型就是最大化这个联合概率来训练模型。当使用训练好模型,模型会根据输入我这个词来预测去这个词,然后根据我,去这两个词来预测出图书馆这个词。
我们简单回顾了一下词向量和语言模型。语言模型在随后扩展阶段会介绍
- Chain Rule,Markov Assumption
- Unigram,Bigram,Ngram
- Add-one smoothing,Good-turning Smoothing
- Perplexity
网友评论