См. оригинальный репозиторий за подробностями архитектуры модели.
Python: 3.9
Установка библиотек:
pip install torch==1.13.0 --index-url https://download.pytorch.org/whl/cu116
pip install -r requirements.txt
Для запуска обучения Binder требуется конвертировать формат данных BRAT во внутренний формат HFDS. Для этого достаточно запустить скрипт data_preproc/brat_to_hfds.py
, который принимает следующие параметры командной строки:
--brat_dataset_path
: путь к папке, где расположены данные в формате BRAT. Предполагается, что они уже разделены на три поднабора по трём папками и названы соответственноtrain
,dev
,test
.--hfds_output_path
: путь, куда будет экспортирован конвертированный набор данных. Если оставить параметр пустым, то путь будет совпадать с путём, указанным в--brat_dataset_path
.--tags_path
: путь к файлу с названиями всех классов именованных сущностей в рассматриваемом наборе данных.
Пример запуска:
python data_preproc/brat_to_hfds.py --brat_dataset_path ./data/NEREL --hfds_output_path ./data/NEREL-binder --tags_path ./data/nerel.tags
Пример файла с названиями классов см. data_preproc/nerel.tags
.
В data
можно увидеть набор данных NEREL до и после конвертации.
После выполнения, в конечной папке появятся три конвертированных файла набора данных в формате HFDS, названные соответственно по поднаборам train.json
, dev.json
, test.json
.
Для предсказания сущностей на данных без разметки всё равно требуется их конвертация из формата BRAT в формат HFDS. Этим занимается скрипт brat_to_hfds_inference.py
. Параметры те же, но параметр --tags_path
не требуется.
Запуск обучения осуществляется скриптом run_ner.py
, которому нужно передать конфигурационный файл с параметрами обучения:
python ./run_ner.py ./conf/lexical-conf.json
Параметры самой модели указаны в исходной архитектуре.
Остальные параметры передаются в transformers.Trainer
как transformers.TrainingArguments
. Подробнее о них можно прочесть в документации.
Пример конфигурационного файла с параметрами по умолчанию представлен в conf/lexical-conf.json
.
После обучения, в конце вывода можно увидеть результаты обучения и предсказания на тестовом наборе данных. Итоговые предсказания будут находиться в папке вывода (указанной в параметре output_dir
) под названием predict_predictions.json
. Там же будут результаты по метрикам, конфигурации и прочая полезная информация об обучении.
Для того, чтобы получить итоговые результаты предсказания в читаемом виде (например, в формате BRAT), требуется запустить скрипт export/hfds_to_brat.py
со следующими параметрами:
--output_path
: путь к папке, где будут сохранены итоговые предсказания в формате BRAT--pred_file
: путь кpredict_predictions.json
--orig_path
: путь к исходной папке с текстами (над которыми проводилось предсказание модели)--tags_file
: путь к файлу с названиями классов сущностей (тот же параметр, что и в подготовке данных)
Пример запуска:
python export/hfds_to_brat.py --output_path ./data/NEREL/test_pred --pred_file ./logs/NEREL-binder/lao/pure/33/predict_predictions.json --orig_path ./data/NEREL/test --tags_file ./data_preproc/nerel.tags
Также в папке export
предложен скрипт metrics.py
, позволяющий подсчитать метрики заново для итогового предсказания. См. файл за подробностями.