NLP 学习笔记 06 Brown Clustering Global Linear Models

               

=================================================================

== all is based on the open course nlp on coursera.org week 9,week 10 lecture  ==

=================================================================

这是nlp课程最后两周的内容了,感觉机器学习和nlp等方向是非常想通的,一如既往!下一步大概会系统地看大部头和paper,增强编码实现能力!

第十周的内容主要是GLMs分别在tagging和 Parsing上面的应用,我就不罗嗦了

1.Brown Clustering

1.1 Introduction

      布朗聚类是一种针对词汇的聚类方法,Input是一系列的文章或者句子,Output有两种
      第一种是:一系列的词组,具体多少个类看你之前的设定:
            
      第二种是:每个词都有一长串的二进制码,用类似霍夫曼编码的方式对每个词进行编码
               
        可以显而易见的是,前缀相似度更高的词就越相近
        什么样的词汇相似呢?一个直觉的想法就是:相似的词出现在相似的位置。
        更精确的说法就是:相似词的前驱词和后继词的分布相似,也就是它前面的词和后面的词出现得是相似的。

 1.2 Formulation

         假设我们现在有一个分类器,可以把每个词分配到一个类里面,一共有k个类:

         

         整个模型如下:

         

          w1……wn是一条语料的词,w0是一个特殊的开始符号

          e,q和我们之前学习的是一样的,不过是从词汇换成了分类而已

  1.3 The Brown Clustering

        我们现在来看整个布朗分类的模型:

          

        可以看到最重要的东西就是分类器C,怎么衡量C的好坏呢:

          

        其中:G是一个常数

               

                   其中:n()是在分类器C的基础下的计数的函数,统计分类在语料库中出现的次数,和以前的count类似

        如何得到C呢,课程介绍了两种方法:

         方法1.

                一开始我们把每一个词单独分配到一个类中,假设有|V|=n个,记住我们的目标是找到k个分类

                我们进行n-k次合并,每次把两个类合并到一起,每次合并贪心地选择能最大程度增加Quality(C)的两个类

                这个naive算法的复杂度是多少呢?(n-k)*n*n*n^2,大概是O(N^5),即使是能优化到三次方复杂度,对于太大的 |V| 依然很不现实            

         方法2.

                 开始设置一个参数m,比如m=1000,我们按照词汇出现的频率对其进行排序
                 然后把频率最高的m个词各自分到一个类中,对于第m+1到|V|个词进行循环:
                               1.对当前词新建一个类,我们现在又m+1个类了
                               2.从这m+1个类中贪心选择最好的两个类合并(和方法1一个意思),现在我们剩下m个类
                 最后我们再做m-1词合并,就得到了我们一开始说的一串01编码所对应的树,可以转化为响应编码

2. Global Linear Models (GLMs)

2.1 Introduction

           到目前为止,我们所有的模型都是这样一个过程:把问题结构派生成一系列的组合(或者说decision),比如我们之前讨论过的基于历史的方法 (Log-linear Models),每个decision关系到一个概率,最后的模型是把所有decision的概率乘起来,这其中有两种方式:
      
          这里就不再详述了,这在以前的笔记有记录的。
          现在我们将进入到一种新的模型:Global Linear Models。
          以前我们把总的结构拆分成一个个decision,而GLMs则是用一些feature来考虑整体的结构,而不是孤立地拆分组合。
          现在看看GLMs都是由什么组成的:

          :一个feature function : f  (和以前类似,但是我们还没有具体定义,这里先搁置)
         :一个函数 GEN(x)   :x是一个输入,GEN函数生成一系列的候选结果
          :一个向量 v                :和以前是一样
          
          其实可以看到,GMLs和Log-Linear的最大区别就在于feature function的选择上,下面我们考虑一下feature function的选择

2.2 Features

             我们之前说过, GLMs是用一些feature来考虑整体的结构,而不是孤立地拆分组合,那么怎么才能考虑整体的结构呢?
          一个直观的理解就是把拆分的feature组合起来就是整体了
          基于这个思想,我们用更下一层的参数组合成我们要的feature function,比如:
          
          表示方框内的结构在语法树上出现的次数,如果我们有多个这样的参数对应不同的结构,那么我们最终可以组成一个f:
         
          
           除此之外,另一个比较重要的部分是GEN函数,如果对于一个输入要生成所有的候选结果,我们知道这个集合是非常大的,一个一般的想法就是使用基于历史的模型(之前的模型)选出前多少个最好的候选答案。

2.3 Together

           最后,我们的总的东西就是:
   

2.4 the Perceptron Algorithm    

           最后一个问题,我们的v向量怎么求呢?直接上算法吧
        
           很简单的算法,你可以看到对v进行变动的那一行公式,如果到目前为止的算法生成的结果和目标结果yi一致,v其实是不变的,如果不一致,v就会朝着目标结果的方向进行变化。
           除了这个Perceptron算法之外,也可以用最大似然等方法,只是复杂度会高很多
=========================================================
到此为止吧,具体的应用就不讲了,虽然感觉烂尾了
========================================================

           

猜你喜欢

转载自blog.csdn.net/qq_44943626/article/details/89488004