Основано на
A Unified MRC Framework for Named Entity Recognition
Xiaoya Li, Jingrong Feng, Yuxian Meng, Qinghong Han, Fei Wu and Jiwei Li
In ACL 2020. (Статья) и соответствующем репозитории,
а также
Adaptation of Deep Bidirectional Multilingual Transformers for Russian Language
Yuri Kuratov, Mikhail Arkhipov (Статья)
и самой модели.
Помимо использования скриптов, можно воспользоваться ноутбуком Main.ipynb
. В нём можно задать все параметры обучения, провести само обучение, тестирование и оценку вывода. См. Main.ipynb
за подробностями.
pip install -r requirements.txt
Проект построен на pytorch-lightning. Все подробности о параметрах обучения можно узнать в документации pytorch-lightning.
Перед началом использования требуется переформатировать исходные данные. Они должны быть подготовлены в формате, предоставлямом системой BRAT. Конвертация данных в формат mrc-json
, принимаемый моделью, производится с помощью запуска скрипта datasets\brat2mrc.py
. См. файл за подробностями.
Для использования и применения какой-либо подсказки для модели, вместо datasets\brat2mrc.py
требуется воспользоваться соответствующим скриптом из каталога prompts
. Возможные подсказки и их использование перечислены там же.
Обучение - запуск скрипта trainer.py
с соответствующими параметрами.
Для минимального запуска требуется указать директорию с моделью и директорию с данными
через --bert_config_dir
и --data_dir
соответственно.
Данные должны быть подготовлены в формате, предоставляемом системой BRAT.
Пример:
python .\trainer.py --bert_config_dir .\bert --data_dir .\dataset
Еще пример:
python .\trainer.py --pretrained_checkpoint <путь к чекпойнту> --bert_config_dir .\bert
--data_dir .\data --batch_size 4 --max_epochs 1 --val_check_interval 0.25
- запуск обучения с чекпойнта на основе bert и данных data с размером минибатчей в 4, одной эпохой и валидирования каждые 0.25 батчей одной эпохи.
Все остальные параметры (выходную директорию, гиперпараметры модели, ...) можно узнать,
вызвав справку --help
.
trainer.py
автоматически валидируется на dev выборке каждые val_check_interval
эпох,
и сохраняет лучшие k
чекпойнтов в default_root_dir
.
Для тестирования на test следует запустить скрипт tester.py
с теми же параметрами командной строки, как и для trainer.py
.
Также возможно взглянуть на вывод модели и сверить её с исходной разметкой: см. скрипт test_dataset.py
.
Дополнительно присутствует система вывода модели inference.py
. Данные на входе и выходе - в формате mrc-json
. См. файл за подробностями.
Также в каталоге ckpt
добавлены ссылки на обученные модели на разных подсказках на данных NEREL-bio
. См. ckpt\links.md
.
Ниже представлена подсказка "5 самых частотных компонентов сущностей", взятая на данных NEREL-bio
. Сгенерировано автоматически на основе обучающего набора данных (см. prompts\mfc.py
)
Класс сущности (Entity class) | Подсказка (Prompt) |
---|---|
ACTIVITY | ACTIVITY - это сущности, такие как курение, алкоголь, курить, активность, обращение. |
ADMINISTRATION_ROUTE | ADMINISTRATION_ROUTE - это сущности, такие как внутривенно, инъекция, доступ, интравитреальный, капельный. |
AGE | AGE - это сущности, такие как год, старший, 60, 18, мес. |
ANATOMY | ANATOMY - это сущности, такие как артерия, мозг, кровь, головной, клетка. |
CHEM | CHEM - это сущности, такие как белок, раствор, препарат, кислота, рецептор. |
CITY | CITY - это сущности, такие как москва, новосибирск, город, монреальский, сибирский. |
COUNTRY | COUNTRY - это сущности, такие как российский, россия, китай, сша, республика. |
DATE | DATE - это сущности, такие как год, мес, день, течение, г. |
DEVICE | DEVICE - это сущности, такие как протез, иол, линза, шунт, компьютерный. |
DISO | DISO - это сущности, такие как опухоль, осложнение, нарушение, болезнь, заболевание. |
FACILITY | FACILITY - это сущности, такие как стационар, отделение, больница, клиника, городской. |
FINDING | FINDING - это сущности, такие как снижение, высокий, уровень, эффективность, эффект. |
FOOD | FOOD - это сущности, такие как алкоголь, алкогольный, пищевой, напиток, агд. |
GENE | GENE - это сущности, такие как ген, генотип, полиморфный, хромосома, маркер. |
HEALTH_CARE_ACTIVITY | HEALTH_CARE_ACTIVITY - это сущности, такие как диспансеризация, помощь, госпитализация, госпитализировать, медицинский. |
INJURY_POISONING | INJURY_POISONING - это сущности, такие как травма, ранение, повреждение, кровопотеря, чмт. |
LABPROC | LABPROC - это сущности, такие как исследование, томография, метод, мрт, анализ. |
LIVB | LIVB - это сущности, такие как группа, вирус, вич, животное, крыса. |
LOCATION | LOCATION - это сущности, такие как район, тихий, азия, африка, сибирь. |
MEDPROC | MEDPROC - это сущности, такие как терапия, операция, лечение, хирургический, резекция. |
MENTALPROC | MENTALPROC - это сущности, такие как когнитивный, психический, функция, эмоциональный, статус. |
NUMBER | NUMBER - это сущности, такие как 2, 1, 0,05, 3, 4. |
ORDINAL | ORDINAL - это сущности, такие как 2-й, 1-й, первый, 3-й, ii. |
ORGANIZATION | ORGANIZATION - это сущности, такие как больница, центр, ., отделение, здравоохранение. |
PERCENT | PERCENT - это сущности, такие как %, 95, 80, 100, 50. |
PERSON | PERSON - это сущности, такие как группа, пациент, больной, ребёнок, женщина. |
PHYS | PHYS - это сущности, такие как уровень, возраст, смертность, жизнь, кровоток. |
PRODUCT | PRODUCT - это сущности, такие как statistica, сигарета, 10, lentis, ls-312. |
PROFESSION | PROFESSION - это сущности, такие как врач, хирург, эксперт, медицинский, терапевт. |
SCIPROC | SCIPROC - это сущности, такие как шкала, исследование, анализ, оценка, р. |
STATE_OR_PROVINCE | STATE_OR_PROVINCE - это сущности, такие как область, республика, край, ставропольский, якутия. |
TIME | TIME - это сущности, такие как мина, ч, сутки, 12, день. |
Based upon
A Unified MRC Framework for Named Entity Recognition
Xiaoya Li, Jingrong Feng, Yuxian Meng, Qinghong Han, Fei Wu and Jiwei Li
In ACL 2020. (Article) and corresponding repo,
as well as
Adaptation of Deep Bidirectional Multilingual Transformers for Russian Language
Yuri Kuratov, Mikhail Arkhipov (Article)
and the model.
In addition to using scripts, you can use the notebook Main.ipynb
. There you can set all the training parameters, run the training itself, test and evaluate the output. See Main.ipynb
for details.
pip install -r requirements.txt
The project is built on pytorch-lightning. For full details on training parameters, see the pytorch-lightning documentation.
Before usage, you need to reformat the original data. They must be prepared in the format provided by the BRAT system. Converting data to the mrc-json
format accepted by the model is done by running the datasets\brat2mrc.py
script. See the file for details.
To use and apply any prompts for the model, instead of datasets\brat2mrc.py
, you need to use the appropriate script from the prompts
directory. Possible prompts are listed there.
Run the trainer.py
script with the appropriate parameters.
For a minimal launch, you need to specify a directory with a model and a directory with data
via --bert_config_dir
and --data_dir
respectively.
Data must be prepared in the format provided by the BRAT system.
Example:
python .\trainer.py --bert_config_dir .\bert --data_dir .\dataset
Another example:
python .\trainer.py --pretrained_checkpoint <path to checkpoint> --bert_config_dir .\bert
--data_dir .\data --batch_size 4 --max_epochs 1 --val_check_interval 0.25
- start training from checkpoint based on bert and data with minibatch size of 4, one epoch and validation every 0.25 batches of one epoch.
All other parameters (output directory, model hyperparameters, ...) can be found by calling --help
.
trainer.py
is automatically validated on dev subset every val_check_interval
epochs,
and stores the best k
checkpoints in default_root_dir
.
To run test on the test subset, run the tester.py
script with the same command line options as for trainer.py
.
It is also possible to look at the output of the model and check it on the original markup: see the test_dataset.py
script.
Additionally, there is an inference.py
model inference system. The input and output data is in mrc-json
format. See file for details.
Also in the ckpt
directory, links to trained models with different prompts on the NEREL-bio
data have been added. See ckpt\links.md
.