资源算法神经序列标记模型

神经序列标记模型

2019-08-19 | |  146 |   0 |   0

NCRF ++:开源神经序列标记工具包

序列标记模型在许多NLP任务中非常流行,例如命名实体识别(NER),词性(POS)标记和分词。最先进的序列标记模型主要利用具有输入字特征的CRF结构。LSTM(或双向LSTM)是序列标记任务中流行的基于深度学习的特征提取器。并且由于更快的计算,也可以使用CNN。此外,单词内的特征对于表示单词也是有用的,可以通过字符LSTM或字符CNN结构或人类定义的神经特征来捕获单词。

NCRF ++是一个基于PyTorch的框架,可灵活选择输入功能和输出结构。使用NCRF ++的神经序列标记模型的设计可通过配置文件完全配置,该配置文件不需要任何代码工作。NCRF ++是一个神经版CRF ++,这是著名的统计CRF框架。使用NCRF ++的详细实验报告已在COLING 2018中被接受。

NCRF ++支持三个级别的不同结构组合:字符序列表示,字序列表示和推理层。

  • 字符序列表示:字符LSTM,字符GRU,字符CNN和手工制作的单词功能。

  • 单词序列表示:单词LSTM,单词GRU,单词CNN。

  • 推理层:Softmax,CRF。

欢迎来到这个存储库!

需求:

Python: 2.7   
PyTorch: 0.3 (currently not support 0.4, will update soon)

好处

  • 1.完全可配置:所有神经模型结构都可以使用配置文件进行设置。

  • 2.最先进的系统性能:与最先进的模型相比,基于NCRF ++的模型可以提供相当或更好的结果。

  • 3.灵活的功能:用户可以定义自己的功能和预训练的功能嵌入。

  • 4.快速运行:NCRF ++利用完全批量操作,在GPU的帮助下使系统高效(> 1000sent / s用于训练,> 2000sent / s用于解码)。

  • 5.N最佳输出:NCRF ++支持nbest解码(具有其概率)。

1.用途

NCRF ++支持通过配置文件设计神经网络结构。该程序可以运行两种状态; 训练解码(示例配置和数据已包含在此存储库中)

培训状态: python main.py --config demo.train.config

解码状态: python main.py --config demo.decode.config

配置文件控制网络结构,I / O,培训设置和超参数。详细配置在此处列出

NCRF ++分为三层设计(如下所示):字符序列层; 单词序列层和推理层。通过使用配置文件,可以轻松复制大多数最先进的模型而无需编码另一方面,用户可以通过设计自己的模块来扩展每一层(例如,他们可能想要设计除CNN / LSTM / GRU之外的其他神经结构)。我们的层设计使模块扩展方便,模块扩展的指令可以在这里找到

替代文字

2.性能

CONLL 2003英语NER任务的结果与具有相同结构的SOTA结果更好或相当。

CharLSTM + WordLSTM + CRF:91.20 vs。90%Lample .etc,NAACL16 ;

CharCNN + WordLSTM + CRF:91.35 vs Ma .etc,ACL16的 91.21 

默认情况下,LSTM是双向LSTM。

| ID | 型号| Nochar | CharLSTM | CharCNN 
| --- | --------- | --- | --- | ------ 
| 1 | WordLSTM | 88.57 | 90.84 | 90.73 
| 2 | WordLSTM + CRF | 89.45 | 91.20 | 91.35 | 3 | WordCNN | 88.56 | 90.46 | 90.30 
| 4 | WordCNN + CRF | 88.90 | 90.70 | 90.43

3.外部特征定义

NCRF ++集成了几种SOTA神经特征序列特征提取器:CNN(Ma .etc,ACL16),LSTM(Lample .etc,NAACL16)和GRU(Yang .etc,ICLR17)。此外,手工制作的功能已被证明在序列标记任务中很重要。NCRF ++允许用户设计自己的功能,如大写,POS标签或任何其他功能(上图中的灰色圆圈)。用户可以通过配置文件(特征嵌入大小,预训练特征嵌入.etc)配置自定义特征。样本输入数据格式在train.cappos.bmes中给出,其中包括两个人为定义的特征[POS][Cap]用户可以使用配置文件中的每个功能

feature=[POS] emb_size=20 emb_dir=%your_pretrained_POS_embeddingfeature=[Cap] emb_size=20 emb_dir=%your_pretrained_Cap_embedding

没有预训练嵌入的特征将被随机初始化。

4.Speed

NCRF ++使用完全批量计算实现,使其在模型训练和解码方面都非常有效。在GPU(Nvidia GTX 1080)和大批量大小的帮助下,使用NCRF ++构建的LSTMCRF模型可分别在训练和解码状态下达到1000 sents / s和2000sents / s。

替代文字

5.N最佳解码性能:

传统的CRF结构仅解码具有最大可能性的一个标签序列(即1个最佳输出)。虽然NCRF ++可以提供很多选择,但它可以解码n具有最高n概率的标签序列(即n-最佳输出)。最流行的解码已得到几个流行的统计 CRF框架的支持。然而据我们所知,NCRF ++是唯一且第一个支持神经 CRF模型中的nbest解码的工具包

在我们的实现中,当nbest = 10时,在NCRF ++中构建的CharCNN + WordLSTM + CRF模型在CoNLL 2003 NER任务上可以给出97.47%oracle F1值(当nbest = 1时F1 = 91.35%)。

替代文字

引用:

如果您使用NCRF ++的实验结果,请引用我们的COLING论文:

@article{yang2018design,  
 title={Design Challenges and Misconceptions in Neural Sequence Labeling},  
 author={Jie Yang, Shuailong Liang and Yue Zhang},  
 booktitle={Proceedings of the 27th International Conference on Computational Linguistics (CONLING)},
 year={2018}  
}

更新中...

  • 2018年3月30日,NCRF ++ v0.1,初始版本

  • 2018年1月6日,添加结果比较。

  • 2018年1月 - 02日,支持角色特征选择。

  • 2017年12月 - 06年,初始版本


上一篇:Ultrasound nerve segmentation

下一篇:使用PyTorch框架实现的序列到序列转换模型的集合

用户评价
全部评价

热门资源

  • Keras-ResNeXt

    Keras ResNeXt Implementation of ResNeXt models...

  • seetafaceJNI

    项目介绍 基于中科院seetaface2进行封装的JAVA...

  • spark-corenlp

    This package wraps Stanford CoreNLP annotators ...

  • capsnet-with-caps...

    CapsNet with capsule-wise convolution Project ...

  • inferno-boilerplate

    This is a very basic boilerplate example for pe...