一 序
学习没有捷径可以走。对于NLP来说数学跟Python是绕不过去的。立个flag.希望能踏实的通过学习,知道别人的文章写得啥,对于工作有指导。
老师说:要具备这样的能力
现实生活中的问题=========》》》数学优化问题=========》》》通过适合的工具解决
二 NLP的定义以及歧义性
NLP=NLU(语音、文本-->意思)+ NLG(意思-->文本/语音)
NLP:理解,NLG表达
2.1Ambiguity (一词多义)
苹果的例子--》公司还是水果?
怎么 解决:有统计数据。
还有根据上下文(context ),去更新认知。
2.2 Machine Translation
简单来说,机器翻译就是把一种语言翻译成另外一种语言,在这里,老师举例假设有个语料库,从A语言-B 语言。
直接case: 根据单词直接匹配。(基于规则的方法,可以理解为整理出一个词典)
问题: 慢、语法不对
步骤1: 分词后词典话处理。
步骤2: 对于所有结果排列组合,同于语言模型(LM)进行打分,找出得分最高的。
翻译模型建立起两种语言的桥梁,语言模型是衡量一个句子在目标语言中是不是流利和地道。这两种模型结合起来,加上其他一些小的优化,就能起到基础的机器翻译的作用。
这种方案的缺点:计算量很大,单词多的话计算排列有N!的方式。从你给你算法复杂度上看属于指数型。
改进: 把两步合并为一步。就是维特比算法。
从数学角度来看:可以理解为假设中文为C,英语为E。
补充下数学知识:
正向概率:
已知袋子有多少个黑球、白球,问从袋子中任意取出一个球,是红球或黑球的概率 。
逆向概率:
如果我们只知道袋子里不是黑球就是白球,并不知道各自有多少个,而是通过我们摸出的球的颜色,问袋子里黑白球的个数。
先验概率:
过经验来判断事情发生的概率就是先验概率。北京冬天有雾霾比较多。这就是个事实,不用任何条件。
条件概率:
P(A|B),即在B发生的条件下,A发生的概率
后验概率:
后验概率就是事情发生结果之后,事情发生可能有很多原因,推测事情有哪个原因引起的概率。
好了,再来看机器翻译的目标,假设源语言是法语x,目标语言是英语y,机器翻译的目标就是寻找y,使得P(y|x)最大。
根据贝叶斯公式:
如下图所示,通过贝叶斯公式可拆分成两个概率的乘积:
上图中P(y)就是之前介绍过的语言模型,P(x|y)是由目标语言到源语言的翻译模型。这样就能逐个计算了,所以问题就转化为怎样求解P(x|y)。
(你可能会跟我一样有疑问,贝叶斯公式下面不是还有个分母吗,上面怎么就只要分子那两项了?这里为了简化,把分母视为常数给忽略了)
语言模型是提前训练出来的,打分越高表示约接近语法,更通顺。
怎么打分? 可以用n-gram的方法。
老师开始手写公式了。
联合概率: P(w1,w2,⋯,wm)=P(w1)P(w2|w1)P(w3|w1,w2)⋯P(wm|w1,⋯,wm−1)
Unigram model:
不考虑条件概率,= P(w1)P(w2)...P(wm)
bigram model: 考虑到与前1个单词的顺序
=P(W1)⋅P(W2∣W1)⋅P(W3∣W2)⋅...⋅P(Wn∣Wn−1)
trigram model:考虑到与前2个单词的顺序,
= P(W1)⋅P(W2∣W1)⋅P(W3∣W1,W2)⋅P(W4∣W2,W3)⋅...⋅P(Wn∣Wn−2,Wn−1)
这就是马尔科夫假设(markov assumption),是对理想条件的一个近似求值。