神经概率语言模型
语言模型
词典
D={ω(1),ω(2),…,ω(n)}
ω=ω1ω2…ωn
其中
ω
是字符串,
ωi
与
ω(i)
指代同一个词。
概率模型
假设字符串中词出现的概率具有平稳性,即词的概率与此出现在字符串的位置无关。
字符串出现的概率为
p(s)=p(ω1,ω2,⋯,ωn)
根据全概率公式可以得出
p(s)=p(ω1)p(ω2|ω1)…p(ωn|ω1…ωn−1)
通过以上公式可以通过求解
p(ωi|ω1…ωi−1)
得出全概率。
求解方法若采用技术的方法直接做除法
p(ωi|ω1…ωi−1)=count(ω1…ωi−1ωi)count(ω1…ωi−1)
问题:词语之间组合爆炸,数据稀疏严重
基于马尔科夫假设
假设当前词只依赖于它前面一或者多个词,即所谓的n-gram。
bigram
p(s)=p(ω1)p(ω2|ω1)…p(ωn|ωn−1)
trigram
p(s)=p(ω1)p(ω2|ω1)…p(ωn|ωn−2ωn−1)
求解
p(ωi|ωi−1)=count(ωi,ωi−1)count(ωi−1)
可能出现的问题:零概率问题
词向量
自然语言理解的问题要转化为机器学习的问题,第一步肯定是要找一种方法把这些符号数学化。
NLP 中最直观,也是到目前为止最常用的词表示方法是 One-hot Representation,这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前的词。
举个栗子,
“话筒”表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 …]
“麦克”表示为 [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 …]
每个词都是茫茫 0 海中的一个 1。
神经网络模型
神经网络模型尝试去预测一个概率分布
数据
字符串
ω=ω1ω2…ωn
可以使用滑窗进行操作。
模型
A Neural Probabilistic Language Model
准则
求解方法
BP算法