
Multi_task_nlp ist ein Dienstprogramm -Toolkit, mit dem NLP -Entwickler ein einzelnes Modell für mehrere Aufgaben einfach trainieren und abschließen können. Wir unterstützen verschiedene Datenformate für die Mehrheit der NLU-Aufgaben und mehrere transformatorbasierte Encoder (z. B. Bert, Distil-Bert, Albert, Roberta, XLNET usw.)
Für die vollständige Dokumentation für diese Bibliothek finden Sie unter Dokumentation
Jedes Konversations -KI -System umfasst das Erstellen mehrerer Komponenten, um verschiedene Aufgaben auszuführen, und eine Pipeline, um alle Komponenten zusammen zu nähen. Vorausgesetzt, die jüngste Wirksamkeit von transformatorbasierten Modellen in NLP, ist es sehr häufig, ein transformatorbasiertes Modell zu erstellen, um Ihren Anwendungsfall zu lösen. Wenn mehrere solche Modelle für ein Gesprächs -KI -System zusammenlaufen, kann dies zu teuren Ressourcenverbrauch, erhöhte Latenzen für Vorhersagen führen und das System schwierig zu verwalten. Dies ist eine echte Herausforderung für jeden, der ein Gesprächs -KI -System auf vereinfachende Weise aufbauen möchte.
Multi_task_nlp gibt Ihnen die Möglichkeit, mehrere Aufgaben zusammen zu definieren und ein einzelnes Modell zu trainieren, das gleichzeitig bei allen definierten Aufgaben lernt. Dies bedeutet, dass man mehrere Aufgaben mit Latenz- und Ressourcenverbrauch ausführen kann, die einer einzelnen Aufgabe entsprechen.
Um Multi-Task-NLP zu verwenden, können Sie das Repository mit dem folgenden Terminalbefehl in den gewünschten Ort in Ihrem System klonen.
$ cd /desired/location/
$ git clone https://github.com/hellohaptik/multi-task-NLP.git
$ cd multi-task-NLP
$ pip install -r requirements.txt Hinweis:- Die Bibliothek wird mit Python 3.7.3 erstellt und getestet. Es wird empfohlen, die Anforderungen in einer virtuellen Umgebung zu installieren.
Eine kurze Anleitung, wie ein Modell in nur 3 einfachen Schritten für einzelne/mehrere NLU -Aufgaben trainiert werden kann und ohne Codes erforderlich ist !!
Befolgen Sie diese 3 einfachen Schritte, um Ihr Multi-Task-Modell zu trainieren!
Aufgabendatei ist eine YAML-Formatdatei, in der Sie alle Ihre Aufgaben hinzufügen können, für die Sie ein Multi-Task-Modell trainieren möchten.
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.tsvUm über die Parameter der Aufgabendatei zu erfahren, um Ihre Aufgabendatei zu erstellen, sind die Parameter der Aufgabendatei.
Führen Sie nach der Definition der Aufgabendatei den folgenden Befehl aus, um die Daten zu erstellen.
$ python data_preparation.py
--task_file 'sample_task_file.yml'
--data_dir 'data'
--max_seq_len 50 Weitere Informationen finden Sie im Skript data_preparation.py und deren Argumente, um die Datenvorbereitung auszuführen.
Schließlich können Sie Ihr Training mit dem folgenden Befehl beginnen.
$ 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 Wenn Sie über das Drehbuch train.py und seine Argumente wissen, erhalten Sie Running Train
Sobald Sie ein Multi-Task-Modell für Ihre Aufgaben haben, bieten wir eine bequeme und einfache Möglichkeit, es zu verwenden, um Vorhersagen über die Proben über die Inferenzpipeline zu erhalten.
Um Inferenz in Proben mithilfe eines geschulten Modells für Say Taska, Taskb und TaskC auszuführen, können Sie InferPipeline Klasse importieren und das entsprechende Multi-Task-Modell laden, indem Sie ein Objekt dieser Klasse erstellen.
> >> from infer_pipeline import inferPipeline
> >> pipe = inferPipeline ( modelPath = 'sample_out_dir/multi_task_model.pt' , maxSeqLen = 50 ) infer kann aufgerufen werden, um die Vorhersagen für Eingabeproben für die genannten Aufgaben zu erhalten.
> >> samples = [ [ 'sample_sentence_1' ], [ 'sample_sentence_2' ] ]
> >> tasks = [ 'TaskA' , 'TaskB' ]
> >> pipe . infer ( samples , tasks ) Informationen über die infer_pipeline finden Sie in Abschluss.
Hier finden Sie verschiedene Konversations-KI-Aufgaben als Beispiele und können Multi-Task-Modelle in einfachen Schritten trainieren, die in den Notizbüchern erwähnt werden.
(Setup: Multi-Task, Task-Typ: Multiple)
Absichtserkennung (Task -Typ: Einzel Satzklassifizierung)
Query: I need a reservation for a bar in bangladesh on feb the 11th 2032
Intent: BookRestaurant
NER (Task -Typ: Sequenzmarkierung)
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']
Fragmenterkennung (Task -Typ: Einzel Satzklassifizierung)
Query: a reservation for
Label: fragment
Notizbuch :- Intent_ner_fragment
Datei transformieren :- Transform_file_Snips
Aufgabendatei :- Tasks_file_Snips
(Setup: Single-Task, Task-Typ: Satzpaarklassifizierung)
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
Notizbuch :- ENTAUMENT_SNLI
Datei Transformation :- Transform_file_Snli
Aufgabendatei :- TASKS_FILE_SNLI
(Setup: Single-Task, Task-Typ: Satzpaarklassifizierung)
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
Notizbuch :- Antwortbarkeit_Detion_msmarco
Datei transformieren :- Transform_file_ansWertabilität
Aufgabendatei :- TASKS_FILE_ANSWERALIBLIERT
(Setup: Single-Task, Task-Typ: Einzel Satzklassifizierung)
Query: what's the distance between destin florida and birmingham alabama?
Label: NUMERIC
Query: who is suing scott wolter
Label: PERSON
Notizbuch :- query_type_detektion
Datei Transformation :- Transform_file_queryType
Aufgabendatei :- TASKS_FILE_QUEYTYPE
(Setup: Multi-Task, Task-Typ: Sequenzbezeichnung)
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']
Notizbuch :- ner_pos_tagging_conll
Datei transformieren :- Transform_file_conll
Aufgabendatei :- TASKS_FILE_CONLL
(Setup: Single-Task, Task-Typ: Einzel Satzklassifizierung)
Query: What places have the oligarchy government ?
Label: well-formed
Query: What day of Diwali in 1980 ?
Label: not well-formed
Notizbuch :- Query_Correctness
Datei Transformation :- Transform_file_query_Correctness
Aufgabendatei :- TASKS_FILE_QUEY_CORRECTIONNESS
(Setup: Single-Task, Task-Typ: Einzel Satzklassifizierung)
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
Notizbuch :- Query_similarity
Datei Transformation :- transform_file_qqp
Aufgabendatei :- TASKS_FILE_QQP
(Setup: Single-Task, Task-Typ: Einzel Satzklassifizierung)
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
Notizbuch :- IMDB_SENTIMENT_ANALYSE
Datei Transformation :- Transform_file_imdb
Aufgabendatei :- TASKS_FILE_IMDB