
MULTI_TASK_NLP est une boîte à outils utilitaire permettant aux développeurs NLP de former et déduire facilement un modèle unique pour plusieurs tâches. Nous prenons en charge divers formats de données pour la majorité des tâches NLU et plusieurs encodeurs basés sur des transformateurs (par exemple Bert, Distil-Bert, Albert, Roberta, XLNET etc.)
Pour une documentation complète pour cette bibliothèque, veuillez vous référer à la documentation
Tout système d'IA conversationnel consiste à construire plusieurs composants pour effectuer diverses tâches et un pipeline pour assembler tous les composants. À condition que l'efficacité récente des modèles basés sur les transformateurs dans la PNL, il est très courant de construire un modèle basé sur un transformateur pour résoudre votre cas d'utilisation. Mais avoir plusieurs de ces modèles qui s'exécutent ensemble pour un système d'IA conversationnel peuvent conduire à une consommation de ressources coûteuse, des latences accrues pour les prédictions et rendre le système difficile à gérer. Cela pose un véritable défi pour quiconque souhaite construire un système d'IA conversationnel de manière simpliste.
Multi_task_nlp vous donne la capacité de définir plusieurs tâches ensemble et de former un seul modèle qui apprend simultanément sur toutes les tâches définies. Cela signifie que l'on peut effectuer plusieurs tâches avec la latence et la consommation de ressources équivalentes à une seule tâche.
Pour utiliser Multi-Task-NP, vous pouvez cloner le référentiel dans l'emplacement souhaité de votre système avec la commande Terminal suivante.
$ cd /desired/location/
$ git clone https://github.com/hellohaptik/multi-task-NLP.git
$ cd multi-task-NLP
$ pip install -r requirements.txt Remarque: - La bibliothèque est construite et testée à l'aide de Python 3.7.3 . Il est recommandé d'installer les exigences dans un environnement virtuel.
Un guide rapide pour montrer comment un modèle peut être formé pour les tâches NLU uniques / multiples en seulement 3 étapes simples et sans obligation de coder !!
Suivez ces 3 étapes simples pour former votre modèle multi-tâches!
Le fichier de tâche est un fichier de format YAML où vous pouvez ajouter toutes vos tâches pour lesquelles vous souhaitez former un modèle multi-tâches.
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.tsvPour connaître les paramètres du fichier de tâche pour créer votre fichier de tâche, paramètres de fichier de tâche.
Après avoir défini le fichier de tâche, exécutez la commande suivante pour préparer les données.
$ python data_preparation.py
--task_file 'sample_task_file.yml'
--data_dir 'data'
--max_seq_len 50 Pour connaître le script data_preparation.py et ses arguments, référez-vous à la préparation des données en cours d'exécution.
Enfin, vous pouvez démarrer votre formation en utilisant la commande suivante.
$ 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 Pour connaître le script train.py et ses arguments, référez-vous à Running Train
Une fois que vous avez un modèle multi-tâches formé sur vos tâches, nous fournissons un moyen pratique et facile de l'utiliser pour obtenir des prédictions sur les échantillons via le pipeline d'inférence .
Pour exécuter l'inférence sur les échantillons à l'aide d'un modèle formé pour Say Taska, TaskB et TaskC, vous pouvez importer une classe InferPipeline et charger le modèle multi-tâches correspondant en faisant un objet de cette classe.
> >> from infer_pipeline import inferPipeline
> >> pipe = inferPipeline ( modelPath = 'sample_out_dir/multi_task_model.pt' , maxSeqLen = 50 ) La fonction infer peut être appelée pour obtenir les prédictions des échantillons d'entrée pour les tâches mentionnées.
> >> samples = [ [ 'sample_sentence_1' ], [ 'sample_sentence_2' ] ]
> >> tasks = [ 'TaskA' , 'TaskB' ]
> >> pipe . infer ( samples , tasks ) Pour connaître l' infer_pipeline , référez-vous à inférer.
Ici, vous pouvez trouver diverses tâches de l'IA conversationnelles comme exemples et former des modèles multi-tâches dans des étapes simples mentionnées dans les ordinateurs portables.
(Configuration: multi-tâches, type de tâche: multiple)
Détection d'intention (Type de tâche: classification de phrase unique)
Query: I need a reservation for a bar in bangladesh on feb the 11th 2032
Intent: BookRestaurant
Ner (type de tâche: étiquetage de séquence)
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']
Détection des fragments (type de tâche: classification à une phrase unique)
Query: a reservation for
Label: fragment
Notebook : - Intent_ner_fragment
Fichier de transformation : - transform_file_snips
Fichier de tâches : - tasks_file_snips
(Configuration: une seule tâche, type de tâche: classification de la paire de phrases)
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
Note à carnet : - INTALESS_SNLI
Fichier de transformation : - transform_file_snli
Fichier de tâches : - tasks_file_snli
(Configuration: une seule tâche, type de tâche: classification de la paire de phrases)
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
Noteuse : - Responseability_dection_msmarco
Fichier de transformation : - transform_file_answerabilité
Fichier de tâches : - tasks_file_answerabilité
(Configuration: une seule tâche, type de tâche: classification à une phrase unique)
Query: what's the distance between destin florida and birmingham alabama?
Label: NUMERIC
Query: who is suing scott wolter
Label: PERSON
Note de carnet : - query_type_detection
Fichier de transformation : - transform_file_querytype
Fichier de tâches : - tasks_file_querytype
(Configuration: multi-tâches, type de tâche: étiquetage de séquence)
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']
Notebook : - ner_pos_tagging_conll
Fichier de transformation : - transform_file_conll
Fichier de tâches : - tasks_file_conll
(Configuration: une seule tâche, type de tâche: classification à une phrase unique)
Query: What places have the oligarchy government ?
Label: well-formed
Query: What day of Diwali in 1980 ?
Label: not well-formed
Note de carnet : - query_correctness
Fichier de transformation : - transform_file_query_correctness
Fichier de tâches : - tasks_file_query_correctness
(Configuration: une seule tâche, type de tâche: classification à une phrase unique)
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
Cahier : - query_similarité
Fichier de transformation : - transform_file_qqp
Fichier de tâches : - tasks_file_qqp
(Configuration: une seule tâche, type de tâche: classification à une phrase unique)
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
Noteuse : - imdb_sentiment_analysis
Fichier de transformation : - transform_file_imdb
Fichier de tâches : - tasks_file_imdb