nlp 统计语言模型

sjyttkl 2017-08-08

统计模型把句子看做,单词的依次排列,即多个单词的复合条件概率。词是文章的原子单位,nlp的基本思路是,向量化词(可计算),为文档建模,之后进行分类、相关性分析等处理。

一、bow(bag of word)

单词的组合,表示文档。不考虑单词的顺序和上下文。 

二、n-gram模型

除了bow还考虑上下文

三、词的向量化(数学建模):

1、one hot representation  除了一个维度是1,剩余的都是0

2、distributed representation  

one hot太稀疏,所以先让神经网络学习向量空间的映射,从稀疏表示变成分布式表示(深度学习的特色就是自动提取特征)。每个词映射为一个小向量,其中有多个分量数值不是0(所以叫分布式的表示)

3、word embedding:就是将单词word映射到另外一个空间,其中这个映射具有injective(单射)和structure-preserving(序和结构可以保持)的特点。通俗的翻译可以认为是单词嵌入,就是把X所属空间的单词映射为到Y空间的多维向量,那么该多维向量相当于嵌入到Y所属空间中,一个萝卜一个坑。word embedding,就是找到一个映射或者函数,生成在一个新的空间上的表达,该表达就是word representation。

4、目前常用的表示形式(model)

tfidf

LSA(latent semantic analysis):基于矩阵的信息压缩

LDA(latent dirichlet allocation):在doc和word之间引入topic,用2个层次的概率分布来描述语言的内在联系。

word2vec(与语言模型同时得到):输出层用霍夫曼编码来提高学习的速度。篇章层面叫thought vector

整个路径上每个分支的概率乘积就表达了对应的上下文环境。这个东西在深度学习里实际上就是一个编码器(encoder)

FastText: 有监督,只使用bow,不使用顺序.适合于语法类比   

VarEmbed:

WordRank: WordRank更适合语义类比

GloVe:

5、word2vec的2种思路 CBOW skip-gram

CBOW:前后的环境确定,寻找当前词的概率。

skip-gram:当前词确定,探索前后的词组合

四、学习方式

一》(基于词频,直接使用概率的数学表达式)

1、每个词的出现,只和前面有限的词有关系,需要确定的参数个数是 O(N^n)一般n=3是效果和复杂度的均衡。

2、计算步骤:1》提取词汇表 2》根据语料库统计词频率,根据频率近似模拟概率(要求语料库足够大)

二》神经网络表示

1、输入是表示各个词的向量(先进行数字化)序列

2、输出是相应序列下的各个词汇的概率

3、网络结构和参数来体现词的前驱,和联合概率分布

三》深度学习的语言模型(各种RNN)

LSTM

GRU

五、分词

1、(复杂)最大匹配,基于词典和规则

2、全切分路径选择方法: 全切分方法就是将所有可能的切分组合全部列出来,并从中选择最佳的一条切分路径。关于路径的选择方式,一般有n最短路径方法,基于词的n元语法模型方法等。

2、字标注(用机器学习出来字构成词的概率),比如条件随机场(CRF, Conditional Random Fields) HMM(HiddenMarkov Model)最大熵

3、统计与字典相结合

4、深度学习 (RNN、 LSTM)

5、相关的库

结巴分词的原理 http://blog.csdn.net/john_xyz/article/details/54645527

https://github.com/fxsjy/jieba CRF HMM 目前看最靠谱

https://github.com/NLPchina/ansj_seg n-Gram+CRF+HMM

IKAnalyzer 基于匹配,效果一般

相关推荐