Skip to content

fulstock/binder

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Форк Bi-Encoder (Binder) для русского языка на примере данных в формате BRAT.

См. оригинальный репозиторий за подробностями архитектуры модели.

Подготовка

1. Окружение и библиотеки

Python: 3.9

Установка библиотек:

pip install torch==1.13.0 --index-url https://download.pytorch.org/whl/cu116
pip install -r requirements.txt

2. Подготовка данных

Конвертация

Для запуска обучения 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 не требуется.

Использование

1. Запуск модели

Запуск обучения осуществляется скриптом run_ner.py, которому нужно передать конфигурационный файл с параметрами обучения:

python ./run_ner.py ./conf/lexical-conf.json

Параметры самой модели указаны в исходной архитектуре.

Остальные параметры передаются в transformers.Trainer как transformers.TrainingArguments. Подробнее о них можно прочесть в документации.

Пример конфигурационного файла с параметрами по умолчанию представлен в conf/lexical-conf.json.

2. Тестирование

После обучения, в конце вывода можно увидеть результаты обучения и предсказания на тестовом наборе данных. Итоговые предсказания будут находиться в папке вывода (указанной в параметре 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, позволяющий подсчитать метрики заново для итогового предсказания. См. файл за подробностями.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%