首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

NLP 学习札记 01

2013-03-01 
NLP 学习笔记 01coursera上MichaelCollins的课程nlp开始了,在读大部头(mlapp)学习ML的过程中看看nlp也着实

NLP 学习笔记 01

       coursera上MichaelCollins的课程nlp开始了,在读大部头(mlapp)学习ML的过程中看看nlp也着实不错,可以做一些实践

      这个课程老师语速很慢,讲解思路十分清晰,推荐给大家。在学习中我可能会把两周的内容在我的blog做一个总结(也许是一周的,看内容的多少了,这第一周的内容太详实了,总结起来太费劲了NLP 学习札记 01),方便以后学习和查看

----------------------------------------

1.Introductionto Natural Language Processing

      这一节主要介绍了nlp的一些基本内容,nlp的一般定义计算机使用自然语言作为输入和输出,比如siri可以听懂你说的话。这是让电脑与人类交流最重要的一个中间步骤,其应用大致可以分为Machine Translation(机器翻译,典型应用:谷歌翻译),Information Extraction(信息提取),TextSummarization(文本归纳),DialogueSystems(对话系统:典型应用:siri)。

      最基本的nlp问题叫做Tagging,也就是对于一段话的每个词进行特定的标记,举个例子:

               “Profitts/N soared/V at/P Boeing/N Co./N ,/,easily/ADV topping/V forecasts/N on/P Wall/N Street/N ./.”

      其中红色的标记部分就叫做tag,上例的N表示名词,P表示介词,V表示动词,ADV表示副词,当然tagging的目标具体不仅仅限于词语的词性,可以灵活地设定。比如:

                 "Pro ts/NA soared/NA at/NA Boeing/SC Co./CC"

      其中SC表示Start of Company,CC表示 Company的结束,/NA表示无意义,这样就可以识别出具体的公司的名字了。

        nlp是一个很难的问题,因为同一个词汇可能会有不同的词性和意思,甚至同一句话的不同断句都表示不同的意思,这是nlp问题的难点,除此之外,语音识别也面临着同音字的问题,总的来说nlp的主要难点就是Ambiguity。

2.The Language Modeling Problem

            我们有有限个数的词汇

                  NLP 学习札记 01

            无限个数的句子,由词汇自由组成,而语言模型就是判断一个句子是否符合要求,对于人来说可以很自然地判断一个句子是否正确,但对于电脑来说就没那么简单了,所以我们会使用一个概率分布来体现这个句子的正确性:

             如下式,其中NLP 学习札记 01是所有句子组成的集合。

              NLP 学习札记 01(2式)

         一些例子:

               NLP 学习札记 01

          这样通过概率的大小可以较为科学地区分句子的正确性,这种技术典型的应用就是语音识别以及中文中的分词。

         语言模型中使用最为广泛的模型叫做Markov模型,它对于语言的分析做了一个很强的假设,也就是说“一个词汇出现的概率只与前面的一个或者数个词相关”,很明显这个假设是错的,但在目前的应用中非常有效。用公式解释这个假设也就是:

                      NLP 学习札记 01

           其中最后一个等式使用了假设

                NLP 学习札记 01

          上式因为一个词汇的概率只与前一个词有关,所有又被称为First-OrderMarkov Processess除此之外还有Second-Order MarkovProcesses:与前两个词有关:

                 NLP 学习札记 01

      一般为了表示的方便,我们设定x(0)=*,x(-1)=* 。' * '表示一种特殊的开始符号,所以Second-Order又可以表示为:

              NLP 学习札记 01

3.Trigram Language Models

        一个三元语言模型就是由:

                         1.一个词的集合V;

                         2.一个参数q(w|u,v)其中w,u,v满足 NLP 学习札记 01

                       组成的,并且对于任意一个句子X1……Xn,其中Xn等于STOP,其它词属于V.并且对于这个句子有:

                                   NLP 学习札记 01其中设定      NLP 学习札记 01

         举一个例子:

                        NLP 学习札记 01

           这样我们就定义了这个模型,并且是满足(2式)的要求,那么现在需要的就是计算参数q了。

           一个很自然的解就是根据条件概率的定义,通过统计词组出现的次数来计算,也就是:

                       NLP 学习札记 01

           然而这样的确可以,但是会遇到Sparse Data Problems,也就是说分母可能为0,这是极有可能出现的事情,而且当|V|越来越大时,参数q的个数也就越来越多,因为我们知道参数的个数等于|V|^3,这里留待以后解决。

4.Evaluating a Language Model: Perplexity 衡量一个语言模型的标准:复杂度?      我们有一系列用来测试的句子NLP 学习札记 01,我们可以用我们做好的模型来衡量它们概率和,为了方便起见对其取log                                                NLP 学习札记 01      那么对于perplexity的定义也就是:                                   NLP 学习札记 01      我们假设一个模型,有N=|V|+1,V是词汇的数量,并且q(w | u,v)=1 / N,可以计算这个模型的perplexity=N,而perplexity的值越小则越好。        通过一个实际的例子来予以说明:                                         NLP 学习札记 01        其中的bigram model(二元模型)和unigram model(一元模型)是类似于三元模型的定义,这点在上面可以看得很清楚,可以发现三个模型中trigram的perplexity是最低的,与|V|+1=50001相比差距十分巨大。 5.Linear Interpolation 线性插值?     这里又涉及到了Bias-Variance的区分了,具体来说就是简单的模型容易欠拟合,复杂的模型容易过拟合,上面列举的三个模型也一样,我们不能单单看perplexity来说一个模型的好坏,应该看这个模型在测试数据上的表现如何。     Linear Interpolation也就是将三个模型综合起来,首先对三个模型的参数q进行最大似然估计,得到:                                        NLP 学习札记 01      然后将这三个结果通过参数结合起来:                                           NLP 学习札记 01      其中                             NLP 学习札记 01      那么如何得到这三个参数的值呢?这需要我们将一部分的训练数据留下作为验证集(validation set),选择λ1,λ2,λ3使得下式最大:                            NLP 学习札记 01      其中NLP 学习札记 01NLP 学习札记 01在validation set 中出现的次数,这样一来也就是说最大化了模型对于validation set的精度,并以此来求出三个参数


热点排行