论文使用bilstm在中文分词上的SOTA模型

Posted 深度学习自然语言处理

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文使用bilstm在中文分词上的SOTA模型相关的知识,希望对你有一定的参考价值。

阅读大概需要6分钟【论文】使用bilstm在中文分词上的SOTA模型

跟随小博主,每天进步一丢丢【论文】使用bilstm在中文分词上的SOTA模型

作者:choose_c
原文链接:
https://blog.csdn.net/choose_c/article/details/86545299

论文题目:State-of-the-art Chinese Word Segmentation with Bi-LSTMs
作者:Ji Ma     Kuzman Ganchev    David Weiss
机构:Google AI Language
论文发表:EMNLP2018


模型:


【论文】使用bilstm在中文分词上的SOTA模型


       文章主要是针对中文分词任务,模型十分简单,使用的双向的LSTM。模型的输入是两种特征(字和bigram),输入先通过embedding,进行concatenate之后送入堆叠的bi-lstm,最后通过softmax输出四个标签(Begin,Inside,End,Single)。


trick:  
        文章提到三个手段来达到State-of-the-art,分别是预训练字向量 、dropout 、调整超参数。1.预训练词(字)向量现在应该是NLP任务的标配了。文章模型使用的是字和字bigram作为输入,所以使用wang2vec(https://github.com/wlin12/wang2vec),在word2vec中加入了顺序信息。2.在LSTM中加入了dropout。3.使用momentum-based averaged SGD(Weiss et al.2015)方法训练模型。主要就是优化算法的小改进加上超参数的网格搜索。


结果:
        下面两张表分别是有预训练字向量和没有预训练字向量的实验结果。在大部分的数据集上加入预训练的字向量都能有一个点左右的提升,除了MSR和PKU两个数据集,这两个数据集上本文算法表现并不好。另外文章还比较了固定的预训练字向量和更新的预训练字向量的效果,固定的预训练字向量在7个数据集中有5个数据集的效果要好于更新的字向量。在我的认知和平时的实验中,一般使用预训练字向量时会选择fine-tuning,因为考虑到任务的特殊性,比较通用的词向量很难学到某些特定领域词在任务中的表示。出现本文的结果个人觉得有几个点,首先是词向量的表示和获得,文章中使用的词向量生成方法不是常用的word2vec等方法,而且输入也不同用到了字和字bigram;再者,因为任务的原因,分词算是NLP中比较的基础的任务,语料比较通用,所以fine-tuning的作用可能不是很大,还有就是在预训练的语料达到一定量级的时候,fine-tuning可能也不是必要的。


【论文】使用bilstm在中文分词上的SOTA模型
【论文】使用bilstm在中文分词上的SOTA模型


附加实验:
【论文】使用bilstm在中文分词上的SOTA模型


        论文也对每一个trick对实验提升的贡献做了实验分析。上图中,在LSTM dropout、stacked bi-LSTM、pretrain三个优化中pretrain的贡献是最大的,平均可以提升0.78个点。论文也给出了fully tuned的提升贡献,下图中,文章对比的是多个任务共享参数和针对每个任务调整不同参数,这个结果应该是很好解释,调参工程师的作用还是有的。个人在看到文章中的三个trick时觉得网格搜索的参数优化可能会是实验效果的最大贡献者,其次才是预训练字向量,最后才是模型结构(因为模型结构很简单,没有多大改进),事实证明自己还是太嫩了,作为NLP初学者还有很长的路要走。


【论文】使用bilstm在中文分词上的SOTA模型


错误分析:
       文章还对错误进行了分析,其中三分之二的错误来自out of vocabulary,而实验证明了pretrain word embedding在oov情况下可以提高10%的召回率,对pretrain word embedding肃然起敬(今年elmo、GPT、bert的惊艳效果也证明了预训练模型和迁移学习在NLP中的巨大发展前景)。对于oov问题,基于字的特征会更加有效,而且基于知识库的研究也可以优化这方面的问题。另外三分之一的错误来自标注错误(人工智能问题=模型+数据,模型优化到头秃,只能数据背锅了)。文章使用一个脚本计算了每个数据集标注的不一致性,不一致性严重的数据集也是现在已有方法效果不好的,这个锅数据就顺理成章地背下了。作者脚本的大概思路是统计单词作为双词出现的次数,或者是双词作为单词和三次出现的次数,没有说的很详细,应该就是一些词频统计的东西。说实话,这些小脚本工具确实有时候很有用,很能快速反映一些数据的问题或者是帮助找到一些特征和信息。


结论:
       作者没有对本文做过多的总结,给出了中文分词两个挑战,也可以说是展望吧:1.模型结构上的调优,2.外部知识库的使用。本文没有过多的创新,用到了都是一些很基础的技巧,可能这就是大神吧。简单的bi-LSTM加一点word embedding,调调弄弄,效果就是好,就是State-of-the-art,甩手就是一篇emnlp。本人NLP的低级玩家一枚,以上也只是在看了论文之后的一些些笔记,没有啥个人见解,大致翻译了一下而已。



方便交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等

【论文】使用bilstm在中文分词上的SOTA模型

记得备注呦

推荐阅读:











让更多的人知道你“在看”

以上是关于论文使用bilstm在中文分词上的SOTA模型的主要内容,如果未能解决你的问题,请参考以下文章

中文分词工具在线PK新增:FoolNLTKLTPStanfordCoreNLP

论文笔记UnifiedQA:新SOTA,生成模型一统问答任务

简单有效的多标准中文分词

FoolNLTK:可能是目前最准的中文分词工具 | 软件推介

RepVGG:极简架构,SOTA性能,论文解读

复旦大学傅金兰:中文分词是个已经解决的任务了吗?