
序列標記模型在許多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}
}