语言模型1(N-Gram):进行NLP的基础

自然语言处理(natural language processing,NLP)是近年来发展十分迅速的一门涵盖自然语言学、数学与计算机科学的交叉性学科,研究的是在人与人交际中以及人与计算机交际中的语言问题。在现今社会中应用十分频繁,其中就有我们日常使用的语音识别输入、中英文翻译等。它不仅是社会需求十分巨大的应用技术,也是一门具有非常重要科学意义的自然科学。

  • 要掌握NLP,我们需要有概率论、信息论等预备知识

1、什么是自然语言?

(1)不是人为设计而是自然进化的,虽然人们试图强加一些规则,
(2)由语音、词汇、语法构成,
(3)语音是词汇的物质外壳,是最原始的语言,
(4)文字是记录语言的书写符号系统。

2、模型简述

语言模型(language model,LM)在自然语言处理中占有着重要的地位,尤其在基于统计的语音识别、机器翻译、句法分析等相关研究中得到了广泛应用。目前主要采用的是n元语法模型,这种模型构建简单、直接。

(1)n元语法

一个语言模型通常表现为构建字符串s的概率分布p(s),这里p(s)试图反映的是字符串s作为一个句子出现的频率,即是组成字符串的这个组合在训练语料库中出现的似然。需要注意的是,与语言学中不同,语言模型与句子是否合乎语法逻辑无关,即使一个句子组合完全合乎语法,但这个组合在语料库中出现的似然极小,我们仍然可以认为它出现的概率接近为零。

  • 对于一个由n个基元(“基元”可以为字、词或短语等)构成的句子s=w1w2…wn,其概率计算公式可以表示为:

Alt
从上面公式可以看到,产生第k(1≤k≤n)个词的概率是由已经产生的k-1个词w1w2…wk-1决定的。一般地,我们把前k-1个词w1w2…wk-1称为第k个词的“历史(history)”。计算一个词跟在一些词后面的频率,尽可能的接近于人话,这样应用于汉语分词、自动翻译等,计算机都可以达到很好的效果。

(2)特殊的n元模型

当n=1时,表示出现在第k位上的词独立于历史, 记作unigram,或uni-gram,或monogram;

当n=2时,表示出现在第k位上的词 仅与它前面的一个历史词 有关,称为一阶马尔可夫链(Markov chain),记作bigram或bi-gram;

当n=3时,表示出现在第k位置上的词 仅与它前面的两个历史词 有关,三元文法模型被称为二阶马尔可夫链,记作trigram或tri-gram。

(3)算法带来的问题

随着历史长度的增加,不同的历史数目按指数级增长。如果历史的长度为k-1,那么,就有在这里插入图片描述 种不同的历史(假设L为词汇集的大小),而我们必须考虑在所有不同的历史情况下,产生第k个词的概率。这样的话,模型中就有在这里插入图片描述 个自由参数p(wk|w1,w2,…,wk-1)。这使我们基本不可能从训练数据中正确地估计出这些参数。而实际上,绝大多数历史根本不可能出现在训练数集中。

(4)减少自由参数的方法

为了自由参数过大的问题,引进了等价类E(w1w2…wk-1),可以将历史按照某种法则映射到等价类,等价类的数目远远小于不同历史的数目。
这里假定:
Alt

有很多方法可以将历史划分成等价类,其中,一种比较实际的做法是,将两个历史 在这里插入图片描述在这里插入图片描述 映射到同一个等价类,当且仅当这两个历史最近的n-1(1≤n≤l)个词相同,即如果在这里插入图片描述 ,当且仅当( )=( )。这样,就使得自由参数的数目大大减少了。

  • 注意:在n元语法里,n的取值不能太大,否则,等价类太多,自由参数过多的问题仍然存在。在实际应用中,n = 3的情况较多。

3、算法实例

使用二元模型:
语料库:
研究生物很有意思。
他是研究应用。
踏实研究生物的。
他实验救生物的。
他大学时代是研究生物的。
生物专业是他的首选目标。

以分词模式”<BOS> 他 是 研究 生物 的 <EOS>”计算出现句子“他是研究生物的”的概率。

P(s) = P(他|<BOS>)P(是|他)P(研究|是)P(生物|研究)P(的|生物)P(<EOS>|的)
= 3/6 * 1/4 * 2/3 * 3/4 * 3/5 * 3/4

  • 注意:BOS表示句首标签,EOS表示句尾标签。P(他|<BOS>)表示在句子中“”的前面是BOS,(即“”处于句首时)时的概率;同理,P(<EOS>|的)表示EOS的前面是“”(即“的”处于句尾)时在“”条件下的概率。
    代码展示点击https://blog.csdn.net/best_of_times/article/details/101318774

你可能感兴趣的:(自然语言处理)