《数学之美》中的自然语言处理

来源:互联网 发布:刷qq币软件 编辑:程序博客网 时间:2024/05/20 12:24

1.      信息的冗余是信息安全的保障。

2.      语言的数据,我们称之为语料,尤其是双语或者多语的对照语料对翻译至关重要,它是我们从事机器翻译研究的基础。

 

现在自然语言处理多用统计语言模型。贾里尼克的观点非常简单:一个句子是否合理,就看看它的可能性大小如何。而可能性就用概率来衡量。

当使用条件概率的时候,每个变量的可能性就是一种语言字典的大小,而如果假定当前的词出现的概率取决于它前面的所有词,这时候条件概率的计算将会相当麻烦,越来越麻烦进而达到无法估算的地步。

高阶语言模型:

19世纪到20世纪初,俄罗斯数学家马尔科夫给出了一个简单有效的方法,即假设任意一个词出现的概率仅和它前面的一个词(二元模型)有关(可扩展到2个(三元模型),3个(四元模型)词)。这种假设在数学上称为马尔科夫假设。

 

N-Gram:假设文本中的每个词 和 前面 N-1 个词有关,这样当前词的概率只取决于前面N-1 个词。这种假设称为N-1 阶马尔科夫假设,对应的语言模型称为N 元模型。

N=2 是最简单的马尔科夫假设;

N=3 是实际中权衡精度与代价后用的最多的模型;

谷歌用的是四元模型。N元模型的大小(空间复杂度)、速度(时间复杂度)几乎是 N 的指数函数。因此N 不能很大。当 N 从1 到2 ,再从 2 到 3 的时候,模型的效果上升显著。而当模型从3 到4 时,效果的提升就不是很显著了,但是资源的耗费却增加的非常快。

零概率问题和平滑方法:

大数定理:只要统计量足够,相对频度就等于概率。

在数理统计中,之所以敢于用采样数据的观察结果来预测概率,是因为有大数定理在背后做支持,它的要求是有足够的观测值。

当观测值不够时,如果用直接的比值计算个概率,大部分条件概率依然是零,这种模型我们称之为“不平滑”。训练统计语言模型的艺术就在于解决好统计样本不足时的概率估计问题。

古德-图灵估计:对于没有看见的事件,我们不能认为它发生的概率就是零,因此我们从概率的总量中分配一个很小的比例给予这些没有看见的事件。这样一来,看见的那些事件的概率总和就要小于1 了,因此需要将所有看见的事件概率调小一点。至于小多少,要根据“越是不可信的统计折扣越多”的方法进行。

卡次退避法进行平滑处理。在实际的自然语言处理中,一般对出现次数超过某个阈值的词,频率不下调,只对出现次数低于这个阈值的词,频率才下调,下调得到的频率总和给未出现的词。

 

 

中文分词:

查字典:

把一个句子从左向右扫描一遍,遇到字典里有的词就标识出来,遇到复合词(比如“扬州大学”)就找最长的词匹配,遇到不认识的字串就分割成单字词,于是简单的分词就完成了(北航,梁南元)。

 

最少词数:

即一句话应该分成数量最少的词串。但是遇到有歧义词的分割时就无能为力。中国古代的断句和说文解字根本就是消除歧义性(哈工大,王晓龙)。

统计语言模型分词:

清华郭进博士用统计语言模型成功解决了分词歧义性问题。郭进是中国大陆自觉地用统计语言模型方法进行自然语言处理的第一人,并且获得了成功。

一个句子可能有几种不同的分词飞方法,那么最好的一种分词方法应该保证分完词后这个句子出现的概率最大。因此只要利用统计语言模型 计算出每种分词后句子出现的概率,并找出其中概率最大的,就能够找到最好的分词方法。

如果穷举所有可能的分词方法并计算出每种可能性下的句子的概率,计算量太大。因此可以把它看成是一个动态规划问题,并利用维特比算法(__补充__)快速的找到最佳分词。

 

一般来讲,根据不同应用,汉语分词的颗粒度大小应该不同。比如,在机器翻译中,颗粒度应该大一些;而在语音识别中,颗粒度应该小一些。中文分词的方法可以帮助判别英语单词的边界。

 

虽然可以对不同的应用构造不同的分词器,但是这样做不仅非常浪费,而且不必要。更好的方法是让一个分词器支持不同层次词的切分。

首先需要一个基本的词表和一个复合词的词表。然后根据基本词表和复合词表各建立一个语言模型。

Step1.根据基本词表和语言模型L1对句子进行分词,就得到了小颗粒度的分词结果(输入“字”串,输出基本“词”串)

Step2.根据复合词表和语言模型L2对句子进行第二次分词(输入“基本词串”,输出“复合词串”)。

以上词表和语言模型两个数据库改变了,但是分词器(程序)和前面的完全相同。

 

分词器准确性问题:

不一致性:

         错误:1、越界型错误(北京大学生——北京大学-生)

                     2、覆盖型错误(贾里尼克——贾-里-尼-克)

         颗粒度不一致性:这类不一致性在度量分词器好坏时,可以不作为错误,以免不同的人看法不同左右了对分词器的度量。

 

中文分词以统计语言模型为基础,经过几十年的发展和完善,基本可以看做是一个已经解决的问题

 

 

 

 

 

 

 

 

 

隐含马尔科夫模型:

         隐含马尔科夫模型比马尔科夫过程多了一个不确定性(概率)状态产生观测值的不确定性。

         关键点:

1.独立输出假设,模型在每个时刻t 状态St 会输出一个符号Ot ,而且Ot 和 St 相关且仅和 St 相关,而与其他S 无关,一个St 可能会产生不同的多个Ot 。

         2.马尔科夫语言模型(二元、统计语言模型)

 

训练方法:(鲍姆-韦尔奇算法-无监督)

首先找到一组能够产生输出序列O的模型参数。(显然它们是一定存在的,因为转移概率P和输出概率Q为均匀分布时,模型可以产生任何输出,当然包括我们观察到的输出O。)现在有了这样一个初始的模型,我们成为M0,需要在此基础上找到一个更好的模型。假定解决了第一个问题和第二个问题,不但可以算出这个模型产生O的概率,P(O|M0),而且能够找到这个模型产生O 的所有可能的路径以及这些路径的概率。这些可能的路径,实际上记录了每个状态经理的多少次,到达了哪些状态,输出了哪些符号,因此可以将它们看做是“标注的训练数据”,并且根据公式计算出一组新的模型参数作为心得的模型M1,从M0到M1 的过程称为一次迭代。接下来不断迭代,直到模型的质量没有明显提高为止。

鲍姆-韦尔奇算法是一个期望最大化的过程。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

信息的度量和作用:

         信息熵的概念:

                   H= -(P1*log P1+、、、+Pn*logPn);

当各随机变量分布均匀时,信息熵最大。

         自古以来,信息和消除不确定性是相联系的。在英语里,信息和情报是同一个词(information),而我们直到情报的作用就是排除不确定性。网页搜索本质上也是利用信息消除不确定性的过程。

         条件熵:

                   已知X的概率分布,可以求得X的信息熵,加入我们还知道Y的一些情况,包括

1.      Y和X一起出现的概率,在数学上称为  联合概率分布 ,

2.      在Y 不同取值的条件下X的概率分布,在数学上称为条件概率分布。

在直到Y的信息的条件下,X的条件熵为 所有变量取值的

联合概率分布*log(条件概率分布) 之和。

         信息的作用在于消除不确定性,自然语言处理的大量问题就是找相关的信息。

 

互信息:

         用以度量两个随机事件的“相关性”。

         X,Y的互信息 = X的信息熵 – Y条件下X的条件熵。

         即了解其中一个Y的前提下,对消除另一个X不确定性所提供的信息量。两者完全无关时,它的取值是0 。

相对熵:

1.      对于两个完全相同的函数,它们的相对熵等于零。

2.      相对熵越大,两个函数差异越大

3.      对于概率分布或者概率密度函数,如果取值均大于零,相对熵可以度量两个随机分布的差异性。

词频率-逆向文档频率(TF-IDF)。补充

 

语言模型复杂度:

         直接衡量语言模型的好坏。

         在给定上下文的条件下,句子中每个位置平均可以选择的单词数量。一个模型的复杂度越小,每个位置的词就越确定,模型越好。

 

 

 

 

 

 

 

 

 

 

 

 

 

确定网页和查询的相关性:

         网页质量(pagerank):

         在互联网上,如果一个网页被其他多个网页所链接,说明它受到普遍的承认和信赖,那么它的排名就高。

         来自不同网页的链接区别对待,因为网页排名搞得的那些网页的链接更可靠,于是要给这些链接以较大的权重。

         由于网页之间链接的数量相比互联网的规模非常稀疏,因此计算网页的网页排名也需要对零概率或者小概率事件进行平滑处理。

 

         搜索关键词权重的科学度量TF-IDF:

         根据网页的长度,对关键词的次数进行归一化以避免内容长的网页比内容短的网页占便宜。得到的商称为“关键词的频率(TF)”,或者“单文本词频”。

         对汉语中的每一个词给一个权重:

1.      一个词预测主题的能力越强,权重越大,反之,权重越小;

2.      停止词(比如“的”“是”等主题无关又大量出现的词)的权重为零。

         逆文本频率指数:(IDF)

                            IDF = log(D/Dw)

                   D是全部网页数.

                   关键词w 在 Dw 个网页中出现过。

         TF-IDF中TF 是词频,IDF是权重。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

余弦定理和新闻的分类

新闻的特征向量:

        任何文本的分类,无非是要把相似的新闻放到同一类中。而计算机本质上只能做快速计算。为了让计算机能够算新闻(而不是读新闻),就要求我们首先把文字的新闻编程可以计算的一组数字,然后再设计一个算法来算出任意两篇新闻的相似性。

         先根据词库建立一个字典

         再根据每篇新闻,在对应词的位置写上对应的TF-IDF值,得到一个代表这篇具体文章的向量,称为新闻的特征向量。

         如果两篇新闻属于同一类,他们的特征向量在某几个维度的值都比较大,而在其他维度的值都比较小。这样的就定性地认识到两篇新闻的主题是否接近,取决于他们的特征向量长得像不像。而定量衡量两个特征向量之间的相似性,如下:

 

向量距离的度量:

          向量的夹角是衡量两个向量相近程度的度量。用余弦定理来计算。

          当两条新闻向量夹角的余弦等于1 时,这两个向量的夹角为零,两条新闻完全相同;当夹角余弦接近于1时,两条新闻相似,从而可以归为一类。

 

1.      假定我们已经知道一些新闻类别的特征向量X ,那么对于任何一个要被分类的新闻Y,很容易计算它和各类新闻特征向量的余弦相似性,并且分到它该去的那一类中。

2.      事先没有这些新闻类别的特征向量

计算所有新闻之间两两的余弦相似性,把相似性大于一个阈值的新闻合并成一个小类。

           把每个小类中所有的新闻作为一个整体,计算小类的特征向量,再通过计算小类之间的余弦相似性,然后合并成大一点的小类。

           直到聚合成我们想要的类别个数为止。

 

         位置的加权:

                   出现在文本不同位置的词在分类时的重要性也不相同。显然出现在标题中的词对主题的贡献远比出现在新闻正文中的重要。因此,要对标题和重要位置的词进行额外的加权,以提高文本分类的准确性。

 

 

 

 

0 0