0、自然语言处理--NLP
0.1 数字、文本、语言
"数字、文字和自然语言处理一样,都是信息的载体,数字与语言的产生都是为了同一个目的----记录和传播信息。"
--《数学之美》
文字只是信息的载体,而非信息本身,那么不用文字,而用其它的载体(比如word2vec形式的词向量)是否一样可以储存同样意义的信息呢?这个答案是肯定的,这也是现在通信技术的基础,如果想让计算机来处理我们的人类语言、文本数据,首要的就是换一种数据的载体(表示形式)---数值化。
任何一种语言都是一种对信息进行编码的方式,而语言的语法规则就是编解码的算法,这就是语言的数学本质。
0.2 什么是自然语言处理?
自然语言处理NLP (Natural Language Processing)是研究人与计算机交互的语言问题的一门学科,自然语言处理的关键是要让计算机“理解”自然语言,是人工智能(AI)的一个核心子领域之一。
自然语言处理=文本处理+机器学习。自然语言处理技术主要是让机器理解人类的语言的一门领域。在自然语言处理技术中,大量使用了编译原理相关的技术,例如词法分析,语法分析等等,除此之外,在理解这个层面,则使用了语义理解,机器学习等技术。作为唯一由人类自身创造的符号,自然语言处理一直是机器学习界不断研究的方向。按照百度机器学习专家余凯的说法“听与看,说白了就是阿猫和阿狗都会的,而只有语言才是人类独有的”。如何利用机器学习技术进行自然语言的的深度理解,一直是工业和学术界关注的焦点。
1、语言模型
宏观上:语言模型是根据语言客观事实而进行的语言抽象数学建模,是一种对应关系。语言模型与语言客观事实之间的关系,如同数学上的抽象直线与具体直线之间的关系。
简单说,语言模型就是用来计算一个句子的概率的模型。
利用语言模型,可以确定哪个词序列的可能性更大,或者给定若干个词,可以预测下一个最可能出现的词语。
按照语言模型的演进历史,大体可分为三类:文法型语言模型、统计语言模型、神经概率语言模型。
下面偷个懒,哈哈,直接从我做论文分享时的做的PPT里粘贴出来:
n-gram语言模型的应用非常广泛,最早期的应用是语音识别、机器翻译等问题。哈尔滨工业大学王晓龙教授最早将其应用到音字转换问题,提出了“语句级拼音输入法”,后来该技术转让给微软,也就是后来的微软拼音输入法。从windows95开始,系统就会自动安装该输入法,并在以后更高版本的windows中和Office办公软件都会集成最新的微软拼音输入法。n年之后,各个输入法的新秀(如搜狗和谷歌)也都采用了n-gram技术。
基于神经网络的语言模型
Bengio 在 2003 年提出的神经概率语言模型(Neural Probabilistic Language Model, NPLM)是影响较大的基于神经网络的语言模型1。其模型思想其实和 N-gram 语言模型还是同出一源,即基于 N-1 阶马尔可夫假设,认为句子中某个词是由其前面的 N-1 个词决定的。模型使用的网络结构如下图所示。
这个模型将 N-1 个词的表示拼接起来作为输入,然后去预测下一个词最有可能是哪个。输出层会是一个很大的向量,每一维的值就是每一个可能的词的条件概率,这样要计算一个句子的概率也就没问题了。
**这样基于神经网络的语言模型有什么好处呢? **
- N-gram 需要显式存储每个 N-gram 的内容和概率,于是模型体积会随着语料的扩充而膨胀,但 NPLM 没有这个问题。
- N-gram 需要应用各种平滑方法来解决零概率问题,但 NPLM 不存在这个问题,即使是语料中没出现的 N-gram ,依然能给出非 0 的概率值。
- 模型中会学习一个固定长度的向量来表示一个词,且向量中各维度的值都是连续实值而非离散的 0/1 ,此即词向量「Word Embedding」的较早形式。
2、文末总结
理解各种语言模型,是理解计算机如何处理语言、文本等信息的基础,在NPLM模型中,我们也提到了词向量,这里后续深度学习技术能够应用到自然语言处理中来的一个重要的理论基础,在学习深度学习在NLP中大展神威之前我们首先需要系统的了解词向量的由来以及常用的表示形式,还有一个非常重要的获取词向量的工具---word2vec,它的理论来源可以理解为是作者Tomas Mikolov对NLPM模型的延伸拓展。
有时间的话,我会继续从词向量-->word2vec-->doc2vec-->文本分类-->......的流程继续往下写,这也是我入门NLP时的学习路线。