自然语言处理|语言模型介绍
Posted Python与算法社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自然语言处理|语言模型介绍相关的知识,希望对你有一定的参考价值。
01
—
回顾
昨天说到自然语言处理中如何将词语转化为词向量,主要用 Distributed Representation 思想,比如谷歌的word2vec就是其中思想下的实现方法之一,关于这篇总结,请参考:
下面,总结自然语言处理中的语言模型,那么何为语言模型?语言模型是用来判断某句话是不是按照某种语言的习惯正确表达出来的,比如,我已经吃过饭,是一句符合汉语习惯的话,那么,吃过饭我已经,就不是一句符合习惯的表达,那么如何让机器判断出,
我已经吃过饭,
吃过饭我已经,
哪个是更可能表达准确的句子呢?
下面就来说说语言模型相关的算法。
02
—
语言模型
首先分析下如何让机器做出判断那句话出现的概率更高的解决思路,一般地,我们假定已经正确地将一句话进行分词了,也就是说,这句话有下面4个词语组成:
我
已经
吃过
饭
那么问题就化简为 判断 P(我已经吃过饭),P(吃过饭我已经),哪个概率大,哪个就是更符合习惯的。
这个问题就是语言模型需要解决的问题,下面介绍几种求解这个概率的算法。
1 N-gram模型
前者概率的计算方法:P(我)*(已经 | 我) * P( 吃过|我,已经) *P(饭|我,已经,吃过),转化为计算这个概率,这种假定是人为某个词的出现,与前面出现的词相关,这种模型称为N-gram模型。
N-gram模型,对以上的概率乘积做了一步简化,利用马尔科夫链的假设,即当前这个词仅仅跟前面 n 个有限的词相关,因此也就不必追溯到最开始的那个词,这样便可以大幅缩减计算的长度。即
如果 n 取为 2,就是一个二元模型(bigram model),即前一个词出现的情况下当前词出现的概率乘积,比如已经后面出现吃过的概率:
2 N-pos模型
N-gram 模型主要缺点需要大规模的文本训练,同时假定第i个词出现概率条件依赖它前几个词。实际上,许多词出现的概率是条件依赖于它前面词的语法功能。N-pos模型,将词按照其语法功能进行分类,由这些词类决定下一个词出现的概率。这样的词类成为词性(Part-of-Speech,简称为POS)。记住,这个语言模型,关注的是词所属的此类,比如统计了某个语料库,最后有3个词类:名次,动词,形容词;而“吃过”这个词出现的概率就等于动词出现的概率乘以这个词在动词类中出现的概率。
3 基于决策树的语言模型
考虑了相近的概率分布,例如英语中(动词,冠词)和(介词,冠词)的概率分布情况相近。因此,决策树模型,利用这种数据点的特征,举例说明吧,训练语料库中出现一个词wi,它的前一个词为wi-1,这样一个数据点(wi-1,wi)=(已经,吃过)。在关于上下文信息的问题集中都是这样的提问:“它前一个词的词性是名词(词性标号)吗?”,通过回答提问进入下一级子节点,直到叶节点为止。
4 动态语言模型
以上介绍的这3种语言模型,都属于静态语言模型,都是预先从训练语料库中估算好的。实际上,在自然语言中,经常出现这样现象:某些在文本中通常很少出现的词,在某一局部文本中突然大量地出现。能够根据词在局部文本中出现的情况,动态地调整语言模型中的概率分布数据的语言模型,使之成为动态、自适应或者基于缓存的语言模型,这种混合模型可以有效地避免数据稀疏的问题。
以上就是几种常用的语言模型算法。
算法channel会有系统地,认真地推送:机器学习(包含深度学习,强化学习等)的理论,算法,实践,源码实现。期待您的参与!
以上是关于自然语言处理|语言模型介绍的主要内容,如果未能解决你的问题,请参考以下文章