
Модели маркировки последовательностей довольно популярны во многих задачах НЛП, таких как названное распознавание сущности (NER), часть речи (POS) и сегментация слов. Современные модели маркировки последовательности в основном используют структуру 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
Файл конфигурации управляет структурой сети, вводом -выводом, настройками обучения и гиперпараметрам.
Подробные конфигурации и объяснения перечислены здесь.
NCRF ++ разработан в трех слоях (показан ниже): слой последовательности символов; слой последовательности слов и слой вывода. Используя файл конфигурации, большинство современных моделей можно легко воспроизвести без кодирования . С другой стороны, пользователи могут расширить каждый слой, разработав свои собственные модули (например, они могут захотеть разработать свои собственные нейронные структуры, кроме CNN/LSTM/GRU). Наша конструкция, расположенная на слое, делает расширение модуля удобным, инструкция расширения модуля можно найти здесь.

Результаты на задаче Conll 2003 English NER лучше или сопоставимы с результатами SOTA с одинаковыми структурами.
Charlstm+Wordlstm+CRF: 91.20 против 90,94 из LAMELP .ETC, NAACL16;
Charcnn+wordlstm+crf: 91.35 против 91.21 Ma .etc, acl16.
По умолчанию LSTM является двунаправленным LSTM.
| ИДЕНТИФИКАТОР | Модель | Норчар | Чарльстм | 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 |
Мы сравнили двенадцать моделей маркировки нейронных последовательностей ( {charLSTM, charCNN, None} x {wordLSTM, wordCNN} x {softmax, CRF} ) на трех критериях (POS, Chunking, NER) под статистическими экспериментами, деталями и сравнениями могут быть найдены в наших вызовах бумажных дизайнов 2018 года, и не соответствующие вызовы в сочетании.
NCRF ++ включает в себя несколько экстракторов последовательностей нейронных характеристик SOTA: CNN (MA .ETC, ACL16), LSTM (lample .etc, NAACL16) и GRU (yang .etc, ICLR17). Кроме того, функции ручной работы были доказаны важными в задачах маркировки последовательности. NCRF ++ позволяет пользователям разрабатывать свои собственные функции, такие как капитализация, POS -тег или любые другие функции (серые круги на рисунке выше). Пользователи могут настроить самоопределенные функции с помощью файла конфигурации (размер встраивания функций, предварительно предварительно подготовленные функции Embeddings .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) и большого размера партии, модель LSTMCRF, построенная с NCRF ++, может достигать 1000 Sents/S и 2000Sents/S по обучению и статусу декодирования соответственно.

Традиционная структура CRF декодирует только одну последовательность метки с самыми большими вероятностями (т.е. 1 лучший выход). В то время как NCRF ++ может дать большой выбор, он может декодировать n последовательности метки с верхними вероятностями n (т.е. лучший выход). Самое NBE Decoding поддерживалось несколькими популярными статистическими структурами CRF. Однако, насколько нам известно, NCRF ++ - единственный и первый инструментарий, который поддерживает NBEST Декодирование в нейронных моделях CRF.
В нашей реализации, когда NBEST = 10, CHARCNN+WordLSTM+CRF-модель, встроенная в NCRF ++, может дать 97,47% Oracle F1-значение (F1 = 91,35%, когда nbest = 1) на задаче NER 2003.

Чтобы воспроизвести результаты в нашей статье Coling 2018, вам нужно только установить iteration=1 в качестве iteration=100 в файле конфигурации demo.train.config и настроить свой файловый каталог в этом файле конфигурации. Файл конфигурации по умолчанию описывает модель Char CNN + Word LSTM + CRF , вы можете создать свою собственную модель, соответственно, изменив конфигурацию. Параметры в этом файле демо -конфигурации одинаковы в нашей статье. (Обратите внимание на Word CNN , нуждаются в немного разных параметрах, детали можно найти в нашей бумаге для Колинг.)
Если вы хотите использовать эту структуру в новых задачах или наборах данных, вот несколько советов по настройке @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 ++, пожалуйста, цитируйте нашу колесковую бумагу:
@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}
}