是时候研读一波导师的论文--一个简单有效的联合模型

点击上方,选择星标置顶,每天给你送干货

阅读大概需要8分钟

跟随小博主,每天进步一丢丢

导读

这篇文章提出了一个简单有效的联合模型,联合学习中文分词和词性标注,并且在五个数据集上面进行验证。作者是张梅山。 代码开源 --- c++版本和pytorch版本。

张梅山导师主页

https://zhangmeishan.github.io/

C++版本

https://github.com/zhangmeishan/NNTranJSTagger

Pytorch版本

https://github.com/bamtercelboo/pytorch_Joint-Word-Segmentation-and-POS-Tagging

引言

      中文分词和词性标注是中文自然语言处理领域的基本问题,目前存在的方法把这两个任务看成结构化学习问题,采用序列标注模型或者是transition-based系统进行处理。我们知道,中文分词和词性标注两个任务之间存在很高的关联性,而且采用两个任务的Pipline模型存在一定的错误传播,然而,联合模型能够考虑两个任务之间的内在关系并且减少Pipline模型的错误传播,所以联合模型能够达到比Pipline更好的性能。

      在这项工作中,提出了一个基于Seq2Seq的联合模型,这个工作主要受张岳在2010年ACL中transition工作的影响,转换解码过程为动作预测过程。另外采用字符级别的unigrams和bigrams特征作为神经网络模型输入。除此之外,还采用多种外部预训练词向量。

神经网络模型

Transition System

Transition-based 框架大多数应用于结构化学习问题,通过预先定义好的transition系统,在解码过程中一步步的进行解码。具体来说,包含两个主要的部分,一个是用于存储部分结果的当前状态(states),另一个则是预测的动作行为(actions)。

本文预先定义好的transition系统同样也包含state和action两个关键部分。其中,状态(state)包含stack和queue两个部分,stack用于存储当前的分词和词性标注的结果,queue用于保存未处理的中文字符。进一步,定义了SEP(t)和APP两种不同的动作行为(action),SEP(t)代表的是一个新词的开始,并且标注好这个词的词性,APP代表紧接着上一个汉字,与前面的多个汉字组成一个词。

本文给出了一个transition系统的案例,给定一个句子:“奥运会正式开幕”,能够得到最终的解码结果:“奥运会|NR 正式|AD 开幕|VV”,动作序列为“SEP(NR) APP APP SEP(AD) APP SEP(VV) APP”。

Seq2Seq Model --- Encoder(编码)

 模型整体结构图如下图所示。

Encoder部分是对句子序列的编码,在这一部分,用到了单字和双字特征,并且采用了static(神经网络训练过程中不更新参数,采用外部预训练词向量)和non-static(神经网络模型训练过程中更新参数,采用随机初始化的方式),图中采用了不同的颜色表示,并且利用非线性层结合这四种特征,然后采用BiLSTM对句子进行编码。

在外部预训练词向量的工作中,采用了两种不同的方式进行训练单字和双字的外部词向量,得到的两种预训练词向量分别称之为Basic Embeddings 和 Word-Context Embeddings,Basic Embeddings仅仅采用语言模型的方式预训练词向量(word2vec),Word-Context Embeddings不仅仅采用语言模型训练词向量,还考虑了词的边界信息以及词性信息等来丰富外部预训练的信息,使其更能够辅助联合模型达到更好的效果。

Seq2Seq Model --- Decoder(解码)

Decoder部分一步对中文分词和词性标注进行解码,如模型结构图Decoder部分所示。首先结合词性信息和词的字符序列表示获取解码端词的表示(Word Representation),然后利用非线性层进行特征学习,进而获取到解码端LSTM的输入, 通过结合解码端LSTM的隐层输出和编码端向量表示进行预测。

与典型的Seq2Seq模型的不同之处一共有两点。第一点是典型的Seq2Seq模型需要采用Attention机制,而本文提出的模型不需要采用Attention机制,采用编码端的向量表示。第二,在分词和词性标注的任务中,词级别的特征异常重要,解码端LSTM是构建在输出的词之上,而不是构建在属于字符级的预测动作序列之上。由于transition的状态标识(state),能够在解码过程中获得词的整个序列,以及它们的词性,可以用来增强词的表示。

实验设置及实验结果

数据

 本文在五个数据集上面进行了实验验证,五个数据集分别为CTB5.0,CTB6.0,CTB7.0,PKU,NCC,其中CTB5.0在中文分词和词性标注任务中广泛使用,但是由于测试集规模较小,所以增加了另外的四组数据集进行评测,数据统计分布如下。

实验结果

实验结果如下图,从实验结果图中可以看出,本文提出的Seq2Seq联合模型在五个数据集上面都达到了最好的性能。

代码开源

本文代码开源,有C++版本和pytorch重现版本,两个版本都有详细的代码说明。
C++版本地址

https://github.com/zhangmeishan/NNTranJSTagger
Pytorch版本

https://github.com/bamtercelboo/pytorch_Joint-Word-Segmentation-and-POS-Tagging

总结

本文提出了一种Seq2Seq联合模型,联合学习中文分词和词性标注,并且在CTB5.0,CTB6.0,CTB7.0,PKU,NCC五个数据集上面进行实验评测,实验结果表明,本文提出的模型在五个数据集上面都达到了最优的性能。

References

A Simple and Effective Neural Model for Joint Word Segmentation and POS Tagging

https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8351918&tag=1

bamtercelboo/pytorch_Joint-Word-Segmentation-and-POS-Tagging

https://github.com/bamtercelboo/pytorch_Joint-Word-Segmentation-and-POS-Tagging

zhangmeishan/NNTranJSTagger

https://github.com/zhangmeishan/NNTranJSTagger

bamtercelboo/NNTranJSTagger

https://github.com/bamtercelboo/NNTranJSTagger

A Fast Decoder for Joint Word Segmentation and POS-Tagging Using a Single Discriminative Model

http://aclweb.org/anthology/D10-1082

往期推荐:

一大批历史精彩文章啦

文本分类有哪些论文中很少提及却对性能有重要影响的tricks?

干货 | 万字长文概述NLP中的深度学习技术

近年来NLP在法律领域的相关研究工作

有偿征稿!


好文!必须点赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值