
序列标记模型在许多NLP任务中都很流行,例如命名实体识别(NER),言论部分(POS)标记和单词分段。最新的序列标签模型主要利用CRF结构具有输入单词功能。 LSTM(或双向LSTM)是序列标记任务中流行的基于深度学习的特征提取器。以及CNN也可以由于更快的计算而使用。此外,单词中的特征也可用于表示单词,可以通过字符LSTM或字符CNN结构或人为定义的神经特征来捕获。
NCRF ++是一个基于Pytorch的框架,具有弹性的输入功能和输出结构的选择。具有NCRF ++的神经序列标记模型的设计是可以通过配置文件完全配置的,该配置文件不需要任何代码工作。 NCRF ++可以被视为CRF ++的神经网络版本,这是一个著名的统计CRF框架。
ACL 2018已接受该框架作为示范文件。在Coling 2018中,使用NCRF ++的详细实验报告和分析是最佳论文。
NCRF ++支持三个级别的不同结构组合:字符序列表示,单词序列表示和推理层。
欢迎来到这个存储库!
Python: 2 or 3
PyTorch: 1.0
Pytorch 0.3兼容版本在这里。
nbest解码(概率)。 NCRF ++支持通过配置文件设计神经网络结构。该程序可以以两个状态运行;培训和解码。 (示例配置和数据已包含在此存储库中)
在培训状态: python main.py --config demo.train.config
在解码状态: python main.py --config demo.decode.config
配置文件控制网络结构,I/O,训练设置和超参数。
详细的配置和说明在此处列出。
NCRF ++以三层设计(如下所示):字符序列层;单词序列层和推理层。通过使用配置文件,大多数最先进的模型可以轻松复制而无需编码。另一方面,用户可以通过设计自己的模块来扩展每一层(例如,除了CNN/LSTM/GRU以外,他们可能想要设计自己的神经结构)。我们的图层设计使模块扩展方便,可以在此处找到模块扩展名的说明。

Conll 2003英语NER任务的结果与与相同结构相同的SOTA结果更好或可比。
Charlstm+WordLSTM+CRF:91.20 vs 90.94,lample .Etc,naacl16;
Charcnn+WordLSTM+CRF:91.35 vs 91.21,Ma .Etc,acl16。
默认情况下, LSTM是双向LSTM。
| ID | 模型 | 不 | 查尔斯特 | 查克恩 |
|---|---|---|---|---|
| 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 |
我们已经比较了十二个神经序列标记模型( {charLSTM, charCNN, None} x {wordLSTM, wordCNN} x {softmax, CRF} )在三个基准测试(POS,pos,chunking,ner,ner)下在统计实验,详细结果,详细结果和比较结果中可能存在于我们的coling coling 2018纸面设计和比较中。
NCRF ++已经集成了几个SOTA神经特征序列提取器:CNN(MA .ETC,ACL16),LSTM(Lample .Etc,NaAcl16)和Gru(Yang .Etc,iclR17)。此外,手工制作的功能已被证明在序列标记任务中很重要。 NCRF ++允许用户设计自己的功能,例如大写,POS标签或任何其他功能(图上图中的灰色圆圈)。用户可以通过配置文件(功能嵌入式大小,验证的功能嵌入.ETC)配置自定义的功能。样品输入数据格式在train.cappos.bmes上给出,其中包括两个人类定义的特征[POS]和[Cap] 。 ( [POS]和[Cap]是两个示例,您可以给您的功能提供任何想要的名称,只需遵循格式[xx]并在配置文件中使用相同名称配置该功能。)用户可以通过使用配置文件中的每个功能配置每个功能
feature = [ POS ] emb_size = 20 emb_dir = % your_pretrained_POS_embedding
feature = [ Cap ] emb_size = 20 emb_dir = % your_pretrained_Cap_embedding没有预告片嵌入的功能将被随机初始化。
NCRF ++是使用完全批处理的计算实现的,这使其在模型训练和解码方面都非常有效。借助GPU(NVIDIA GTX 1080)和较大的批量尺寸,使用NCRF ++构建的LSTMCRF模型分别可以达到1000个洞穴/s和2000s/s的培训和解码状态。

传统的CRF结构仅解码一个具有最大概率的标签序列(即1好的输出)。虽然NCRF ++可以给出很大的选择,但它可以用顶部n概率(即n-bess输出)解码n标签序列。 NBest解码已得到了几个流行的统计CRF框架的支持。但是,据我们所知,NCRF ++是支持NBest解码在神经CRF模型中的唯一和第一个工具包。
在我们的实施中,当NBest = 10时,在NCRF ++中构建的Charcnn+WordLSTM+CRF模型可以给出97.47%的Oracle F1-Value(F1 = 91.35%,NBEST = 1时Conll 2003 NER Task ner task ner task ner task in conll = 91.35%。

要重现我们的2018年Coling 2018论文中的结果,您只需要将iteration=1设置为iteration=100在配置文件demo.train.config中,然后在此配置文件中配置文件目录。默认配置文件描述了Char CNN + Word LSTM + CRF模型,您可以通过相应地修改配置来构建自己的模型。该演示配置文件中的参数在我们的论文中是相同的。 (请注意, Word CNN相关的模型需要略有不同的参数,可以在我们的Coling论文中找到详细信息。)
如果您想在新任务或数据集中使用此框架,请通过 @victor0118的一些调整提示。
如果您想报告问题或提出问题,请在必要时附加以下材料。有了这些信息,我可以进行快速准确的讨论和建议。
log fileconfig filesample data 如果您在论文中使用NCRF ++,请引用我们的ACL演示纸:
@inproceedings{yang2018ncrf,
title={NCRF++: An Open-source Neural Sequence Labeling Toolkit},
author={Yang, Jie and Zhang, Yue},
booktitle={Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics},
Url = {http://aclweb.org/anthology/P18-4013},
year={2018}
}
如果您使用NCRF ++的实验结果和分析,请引用我们的Coling论文:
@inproceedings{yang2018design,
title={Design Challenges and Misconceptions in Neural Sequence Labeling},
author={Yang, Jie and Liang, Shuailong and Zhang, Yue},
booktitle={Proceedings of the 27th International Conference on Computational Linguistics (COLING)},
Url = {http://aclweb.org/anthology/C18-1327},
year={2018}
}