
multi_task_nlp - это утилита, позволяющий разработчикам NLP легко обучать и выводить одну модель для нескольких задач. Мы поддерживаем различные форматы данных для большинства задач NLU и множественных энкодеров на основе трансформаторов (например, Берт, Дистиль-Берт, Альберт, Роберта, XLNET и т. Д.)
Для получения полной документации для этой библиотеки, пожалуйста, обратитесь к документации
Любая разговорная система ИИ включает в себя создание нескольких компонентов для выполнения различных задач и трубопровода для сшивания всех компонентов. При условии недавней эффективности моделей на основе трансформаторов в НЛП, очень распространено создание модели на основе трансформаторов для решения вашего варианта использования. Но наличие нескольких таких моделей, работающих вместе для разговорной системы ИИ, может привести к дорогому потреблению ресурсов, увеличению задержек для прогнозов и затрудняет управление системой. Это создает реальную проблему для всех, кто хочет построить разговорную систему ИИ в упрощенном виде.
multi_task_nlp дает вам возможность определить несколько задач вместе и обучать одну модель, которая одновременно изучает все определенные задачи. Это означает, что можно выполнить несколько задач с задержкой и потреблением ресурсов, эквивалентной одной задаче.
Чтобы использовать многозадачный NLP, вы можете клонировать репозиторий в желаемое место в вашей системе со следующей командой терминала.
$ cd /desired/location/
$ git clone https://github.com/hellohaptik/multi-task-NLP.git
$ cd multi-task-NLP
$ pip install -r requirements.txt Примечание.- Библиотека создана и протестирована с использованием Python 3.7.3 . Рекомендуется установить требования в виртуальной среде.
Быстрое руководство, чтобы показать, как модель может быть обучена для одиночных/нескольких задач NLU всего за 3 простых шага и без необходимости кодировать !!
Следуйте этим 3 простым шагам, чтобы обучить свою многозадачную модель!
Файл задачи-это файл формата YAML, в котором вы можете добавить все свои задачи, для которых вы хотите обучить многозадачную модель.
TaskA :
model_type : BERT
config_name : bert-base-uncased
dropout_prob : 0.05
label_map_or_file :
- label1
- label2
- label3
metrics :
- accuracy
loss_type : CrossEntropyLoss
task_type : SingleSenClassification
file_names :
- taskA_train.tsv
- taskA_dev.tsv
- taskA_test.tsv
TaskB :
model_type : BERT
config_name : bert-base-uncased
dropout_prob : 0.3
label_map_or_file : data/taskB_train_label_map.joblib
metrics :
- seq_f1
- seq_precision
- seq_recall
loss_type : NERLoss
task_type : NER
file_names :
- taskB_train.tsv
- taskB_dev.tsv
- taskB_test.tsvДля знания о параметрах файла задачи, чтобы сделать файл задачи, параметры файла задачи.
После определения файла задачи запустите следующую команду, чтобы подготовить данные.
$ python data_preparation.py
--task_file 'sample_task_file.yml'
--data_dir 'data'
--max_seq_len 50 Чтобы узнать о сценарии data_preparation.py и его аргументах, обратитесь к запуску данных.
Наконец, вы можете начать обучение, используя следующую команду.
$ python train.py
--data_dir 'data/bert-base-uncased_prepared_data'
--task_file 'sample_task_file.yml'
--out_dir 'sample_out'
--epochs 5
--train_batch_size 4
--eval_batch_size 8
--grad_accumulation_steps 2
--log_per_updates 25
--save_per_updates 1000
--eval_while_train True
--test_while_train True
--max_seq_len 50
--silent True Для знания о сценарии train.py и его аргументах обратитесь к бегу.
После того, как у вас есть многозадачная модель, обученная вашими задачами, мы предоставляем удобный и простой способ использовать ее для получения прогнозов на образцах через конвейер с выводом .
Для выполнения вывода на образцах с использованием обученной модели для Say Taska, Taskb и Taskc вы можете импортировать класс InferPipeline и загрузить соответствующую многозадачную модель, сделав объект этого класса.
> >> from infer_pipeline import inferPipeline
> >> pipe = inferPipeline ( modelPath = 'sample_out_dir/multi_task_model.pt' , maxSeqLen = 50 ) Функция infer может быть вызвана для получения прогнозов для входных образцов для упомянутых задач.
> >> samples = [ [ 'sample_sentence_1' ], [ 'sample_sentence_2' ] ]
> >> tasks = [ 'TaskA' , 'TaskB' ]
> >> pipe . infer ( samples , tasks ) Чтобы узнать о infer_pipeline , см.
Здесь вы можете найти различные разговорные задачи ИИ в качестве примеров и можете обучить многозадачные модели в простых шагах, упомянутых в ноутбуках.
(Настройка: многозадачная, тип задачи: несколько)
Обнаружение намерений (Тип задачи: классификация единого предложения)
Query: I need a reservation for a bar in bangladesh on feb the 11th 2032
Intent: BookRestaurant
Ner (тип задачи: маркировка последовательности)
Query: ['book', 'a', 'spot', 'for', 'ten', 'at', 'a', 'top-rated', 'caucasian', 'restaurant', 'not', 'far', 'from', 'selmer']
NER tags: ['O', 'O', 'O', 'O', 'B-party_size_number', 'O', 'O', 'B-sort', 'B-cuisine', 'B-restaurant_type', 'B-spatial_relation', 'I-spatial_relation', 'O', 'B-city']
Обнаружение фрагментов (тип задачи: классификация отдельных предложений)
Query: a reservation for
Label: fragment
Записная книжка :- intent_ner_fragment
Файл преобразования :- transform_file_snips
Файл задач :- tasks_file_snips
(Настройка: одно задача, тип задачи: классификация пары предложений)
Query1: An old man with a package poses in front of an advertisement.
Query2: A man poses in front of an ad.
Label: entailment
Query1: An old man with a package poses in front of an advertisement.
Query2: A man poses in front of an ad for beer.
Label: non-entailment
Записная книжка :- entailment_snli
Файл преобразования :- transform_file_snli
Файл задач :- tasks_file_snli
(Настройка: одно задача, тип задачи: классификация пары предложений)
Query: how much money did evander holyfield make
Context: Evander Holyfield Net Worth. How much is Evander Holyfield Worth? Evander Holyfield Net Worth: Evander Holyfield is a retired American professional boxer who has a net worth of $500 thousand. A professional boxer, Evander Holyfield has fought at the Heavyweight, Cruiserweight, and Light-Heavyweight Divisions, and won a Bronze medal a the 1984 Olympic Games.
Label: answerable
Записная книжка :- Ответственность_detection_msmarco
Файл преобразования :- transform_file_answorkability
Файл задач :- tasks_file_answerability
(Настройка: одна задача, тип задачи: классификация единого предложения)
Query: what's the distance between destin florida and birmingham alabama?
Label: NUMERIC
Query: who is suing scott wolter
Label: PERSON
Ноутбук :- Query_type_detection
Файл преобразования :- transform_file_querytype
Файл задач :- tasks_file_querytype
(Настройка: многозадачная, тип задачи: маркировка последовательности)
Query: ['Despite', 'winning', 'the', 'Asian', 'Games', 'title', 'two', 'years', 'ago', ',', 'Uzbekistan', 'are', 'in', 'the', 'finals', 'as', 'outsiders', '.']
NER tags: ['O', 'O', 'O', 'I-MISC', 'I-MISC', 'O', 'O', 'O', 'O', 'O', 'I-LOC', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
POS tags: ['I-PP', 'I-VP', 'I-NP', 'I-NP', 'I-NP', 'I-NP', 'B-NP', 'I-NP', 'I-ADVP', 'O', 'I-NP', 'I-VP', 'I-PP', 'I-NP', 'I-NP', 'I-SBAR', 'I-NP', 'O']
Ноутбук :- ner_pos_tagging_conll
Файл преобразования :- transform_file_conll
Файл задач :- tasks_file_conll
(Настройка: одна задача, тип задачи: классификация единого предложения)
Query: What places have the oligarchy government ?
Label: well-formed
Query: What day of Diwali in 1980 ?
Label: not well-formed
Записная книжка :- Query_correctness
Файл преобразования :- transform_file_query_correctness
Файл задач :- tasks_file_query_correctness
(Настройка: одна задача, тип задачи: классификация единого предложения)
Query1: What is the most used word in Malayalam?
Query2: What is meaning of the Malayalam word ""thumbatthu""?
Label: not similar
Query1: Which is the best compliment you have ever received?
Query2: What's the best compliment you've got?
Label: similar
Записная книжка :- Query_similality
Файл преобразования :- transform_file_qqp
Файл задач :- tasks_file_qqp
(Настройка: одна задача, тип задачи: классификация единого предложения)
Review: What I enjoyed most in this film was the scenery of Corfu, being Greek I adore my country and I liked the flattering director's point of view. Based on a true story during the years when Greece was struggling to stand on her own two feet through war, Nazis and hardship. An Italian soldier and a Greek girl fall in love but the times are hard and they have a lot of sacrifices to make. Nicholas Cage looking great in a uniform gives a passionate account of this unfulfilled (in the beginning) love. I adored Christian Bale playing Mandras the heroine's husband-to-be, he looks very very good as a Greek, his personality matched the one of the Greek patriot! A true fighter in there, or what! One of the movies I would like to buy and keep it in my collection...for ever!
Label: positive
Записная книжка :- imdb_sentiment_analysis
Файл преобразования :- transform_file_imdb
Файл задач :- tasks_file_imdb