
시퀀스 라벨링 모델은 이름이 지정된 엔티티 인식 (POS) 태그 및 워드 세분화와 같은 많은 NLP 작업에서 매우 인기가 있습니다. 최첨단 시퀀스 라벨링 모델은 주로 입력 워드 기능과 함께 CRF 구조를 사용합니다. LSTM (또는 양방향 LSTM)은 순서 라벨링 작업에서 인기있는 딥 러닝 기반 기능 추출기입니다. CNN은 더 빠른 계산으로 인해 사용할 수 있습니다. 게다가, 단어 내의 특징은 또한 단어를 나타내는 데 유용하며, 문자 LSTM 또는 문자 CNN 구조 또는 인간 정의 신경 특징으로 캡처 할 수 있습니다.
NCRF ++는 입력 기능 및 출력 구조 중 유연한 선택을 갖춘 Pytorch 기반 프레임 워크입니다. NCRF ++를 사용한 신경 서열 레이블링 모델의 설계는 구성 파일을 통해 완전히 구성 가능하며 코드 작업이 필요하지 않습니다. NCRF ++는 유명한 통계 CRF 프레임 워크 인 CRF ++의 신경망 버전으로 간주 될 수 있습니다.
이 프레임 워크는 ACL 2018에 의해 데모 논문으로 인정되었습니다. NCRF ++를 사용한 자세한 실험 보고서 및 분석은 Coling 2018에서 최고의 논문으로 받아 들여졌습니다.
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 ++는 3 개의 층으로 설계되었습니다 (아래 그림) : 문자 시퀀스 층; 단어 시퀀스 층 및 추론 층. 구성 파일을 사용하면 대부분의 최첨단 모델을 코딩하지 않고 쉽게 복제 할 수 있습니다. 반면, 사용자는 자체 모듈을 설계하여 각 계층을 확장 할 수 있습니다 (예 : CNN/LSTM/GRU 이외의 자체 신경 구조를 설계 할 수 있음). 우리의 계층 주택 설계는 모듈 확장을 편리하게 만들고 모듈 확장의 지침은 여기에서 찾을 수 있습니다.

Conll 2003 English NER 과제에 대한 결과는 동일한 구조의 SOTA 결과와 더 좋거나 비교할 수 있습니다.
charlstm+wordlstm+crf : 91.20 vs 90.94, lample .etc, NAACL16;
charcnn+wordlstm+crf : 91.35 vs 91.21, ACL16.
기본적으로 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 |
우리는 통계 실험에서 세 가지 벤치 마크 (POS, Chunking, NER)에서 12 개의 신경 서열 라벨링 모델 ( {charLSTM, charCNN, None} x {wordLSTM, wordCNN} x {softmax, CRF} )을 비교하여 2018 년 종이 디자인 과제 및 비교에서 발견 될 수 있습니다.
NCRF ++는 CNN (MA .ETC, ACL16), LSTM (LAMPE .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 및 2000sents/s에 도달 할 수 있습니다.

전통적인 CRF 구조는 최대의 프로 벨로 비티 (즉, 1 위 출력)로 하나의 레이블 시퀀스 만 디코딩합니다. NCRF ++는 큰 선택을 제공 할 수 있지만 상단 n 확률 (예 : N- 최고의 출력)으로 n 레이블 시퀀스를 디코딩 할 수 있습니다. NBEST 디코딩은 몇 가지 인기있는 통계 CRF 프레임 워크에 의해 지원되었습니다. 그러나 우리가 아는 한, NCRF ++는 신경 CRF 모델에서 NBEST 디코딩을 지원하는 유일한 툴킷입니다.
우리의 구현에서 NBEST = 10 일 때 NCRF ++에 내장 된 Charcnn+WordLStm+CRF 모델은 Conll 2003 NER 작업에서 97.47% Oracle F1- 값 (NBEST = 1 일 때 F1 = 91.35%)을 제공 할 수 있습니다.

Coling 2018 용지에서 결과를 재현하려면 구성 파일에서 반복 = iteration=100 iteration=1 설정하면이 구성 파일에서 파일 디렉토리를 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}
}