测评Mimick模型对词向量重构效果

 论文《Mimicking Word Embeddings using Subword RNNS》开源的代码是基于DyNet深度学习框架。不同于静态声明深度学习框架,例如:TensorFlowTheanoCNTK等,户需要首先定义计算图(computation graph),然后样本会被传递给执行该计算的引擎并计算其导数。而对于DyNet,计算图的构建(construction)基本是透明的,对于任意一个输入,用户都可以自由得使用不同的网络结构。个人感觉DyNet确实还挺好用的。

Mimick模型介绍

目的:论文《Mimicking Word Embeddings usingSubword RNNS》发表在EMNLP2017论文主要目的在于解决NLP中基于词基础的序列标注和求句法属性的相关应用,不在词库中out-of-vocabulary的词向量问题,从作者的paper描述中,实验了23种语言,在序列标注等NLP应用中都提升了效果。

测评Mimick模型对词向量重构效果_第1张图片

 通过对已经训练好的词向量,学习字向量,然后BiLSTM模型进行词向量的重构。由于中文词太多,但是字的话就会相对少很多,如果能够通过字向量去重构词向量,减少存储问题。另外,词组合太多,训练语料库中的词不足以涵盖所有词,且上下文的差异,分词工具在分词的时候也是有差异,包括一些新词等。BiLSTM模型输入序列是一个词中的所有字,通过最小化模型预测的词向量与输入词的原始词向量的距离优化各参数值。

实验数据:

    基于wiki上的中文词库以及其它的一些语料库的合并,利用word2vector训练好的大概有75万多个词以及对应的词向量,作为Mimick模型的训练数据

实验效果

第一:针对句子相似性任务来评估模型重构的词向量(用来训练的词)效果

 

 

   

     小儿腹泻偏方

   

     大家都爱看喜剧

 

原始Word2vector词向量(加学习权重)方法

 

宝宝拉肚子偏方  0.744

 

很多人喜欢看幽默的电0.842

 

小儿感冒偏方  0.969

 

他是一个幽默的人     0.322

 

Mimick模型重构词向量(加学习权重)方法

 

宝宝拉肚子偏方           0.836

 

很多人喜欢看幽默的电0.800

 

小儿感冒偏方      0.932

 

他是一个幽默的人     0.115

 

 

 

   

    信号忽强忽弱

   

    红米更新出错

 

原始Word2vector词向量(加学习权重)方法

 

信号忽高忽低   0.864

 

 

红米升级系统出错     0.921

 

信号忽然中断   0.321

 

 

如何买到小米手机     0.723

 

Mimick模型重构词向量(加学习权重)方法

 

信号忽高忽低   0.900

 

 

红米升级系统出错     0.962

 

信号忽然中断   0.704

 

 

如何买到小米手机     0.791

 第二:评估mimick模型预测不在训练中的词(新词)词向量与word2vector原词向量相似性。

word2vector中留下2万多个词不作为mimick模型的训练,随机抽取几个词的评估效果如下:

        

       词

           

    原词向量与mimick模型通过字向量重构的词向量相似性

          

      李大夫

 

 

                           0.748

         

      照相师

       

                           0.768

 

      穷人区

                           

                         0.784

 

      养马户

                          

                           0.397

       

      初犯者

 

       

                           0.771

 

      紫荆楼

                           0.850

           

 习声乐

                           

               0.763

 

      19.7亿

 

      

                           0.852

 

      达旦河

 

                           0.849

 

      52.86%

 

 

                           0.757

 

     食之无味

 

 

                           0.337

 (3) 实验分析

 从上面的实验来看,模型还是起到了一定的作用。但也存在一些bad case,可能原因在于:利用BiLSTM模型对所有的词向量重构,包含了75万多的词,每个词向量维度200维,而且很多词之间都有相同的字,但意思却可能完全不一样,要想靠模型去完全拟合多样化的词向量分布,感觉有一定得难度。

(4) 总结

(a)  训练mimick模型的时候,模型参数细节还是很影响实验效果

(b)   当模型的记忆和拟合能力足够强的时候,完全可以不用分词,直接基于字的模型。但在本文处理中,字与字之间相关性是很大的,特征之间是不独立,为了削弱相关性,降低对词序的依赖,将句子分为若干个相关性比较弱的部分,有利于更进一步处理,也许这是分词的目的之一。用CNN模型做文本分类也是通过把若干个字组合作为特征来看。

 

你可能感兴趣的:(NLP)