|
# A MBARTHEZ MODEL TRAINED FOR QUESTION GENERATION |
|
|
|
## Training |
|
|
|
The model has been trained on different french and english corpus (FQuAD, PIAF and SQuAD) |
|
|
|
## Generate |
|
```python |
|
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM |
|
|
|
# Getting the data |
|
access_token = "hf_......" |
|
tokenizer = AutoTokenizer.from_pretrained("ThomasGerald/MBARTHEZ-QG", use_auth_token=access_token) |
|
model = AutoModelForSeq2SeqLM.from_pretrained("ThomasGerald/MBARTHEZ-QG", use_auth_token=access_token) |
|
|
|
# text input exemple notice we use the token <hl> to delimite the support of the question |
|
text = ("La recherche moderne considère généralement que la langue grecque n'est pas née en Grèce," + |
|
"mais elle n'est pas arrivée à un consensus quant à la date d'arrivée des groupes parlant un "+ |
|
"« proto-grec », qui s'est produite durant des phases préhistoriques pour lesquelles il n'y a"+ |
|
"pas de texte indiquant quelles langues étaient parlées. Les premiers textes écrits en grec <hl>sont"+ |
|
"les tablettes en linéaire B de l'époque mycénienne<hl>, au XIVe siècle av. J.-C., ce qui indique que"+ |
|
"des personnes parlant un dialecte grec sont présentes en Grèce au plus tard durant cette période."+ |
|
" La linguistique n'est pas en mesure de trancher, pas plus que l'archéologie.") |
|
|
|
tokenized_text = tokenizer([text], return_tensors="pt") |
|
|
|
# Output conditionnaly to the language (here two tokens possible '[fr_XX]' and '[en_XX]') |
|
output_ids = model.generate(**tokenized_text, forced_bos_token_id=tokenizer.convert_tokens_to_ids(['[fr_XX]'])) |
|
|
|
# Decoding |
|
output = tokenizer.batch_decode(output_ids, skip_special_tokens=False) |
|
|
|
# output: |
|
'''['</s>[fr_XX] Quels sont les premiers textes écrits en grec?</s>']''' |
|
|
|
``` |
|
|
|
|
|
We can also generate question in english from french context by specifying the begining of sentence token ('[en_XX]'). Considering the previous code prepending the following one we can generate english questions executing : |
|
``` python |
|
output_ids = model.generate(**tokenized_text, forced_bos_token_id=tokenizer.convert_tokens_to_ids(['[en_XX]'])) |
|
output = tokenizer.batch_decode(output_idsskip_special_tokens=False) |
|
|
|
# output: |
|
'''['</s>[en_XX] What are the first texts written in grec?</s>']''' |
|
``` |
|
|
|
|
|
Of course you can also generate questions from english text : |
|
``` python |
|
# text input exemple notice we use the token <hl> to delimite the support of the question |
|
text = ("By 371 BC, Thebes was in the ascendancy, defeating Sparta at" + |
|
"<hl>the Battle of Leuctra<hl>, killing the Spartan king Cleombrotus I" + |
|
", and invading Laconia. Further Theban successes against Sparta" + |
|
"in 369 led to Messenia gaining independence; Sparta never recovered" + |
|
"from the loss of Messenia's fertile land and the helot workforce it" + |
|
"provided.[50] The rising power of Thebes led Sparta and Athens to join" + |
|
"forces; in 362 they were defeated by Thebes at the Battle of Mantinea." + |
|
" In the aftermath of Mantinea, none of the major Greek states were able" + |
|
"to dominate. Though Thebes had won the battle, their general Epaminondas" + |
|
"was killed, and they spent the following decades embroiled in wars with"+ |
|
"their neighbours; Athens, meanwhile, saw its second naval alliance," + |
|
" formed in 377, collapse in the mid-350s.") |
|
|
|
tokenized_text = tokenizer([text], return_tensors="pt") |
|
|
|
# French question |
|
output_ids = model.generate(**tokenized_text, forced_bos_token_id=tokenizer.convert_tokens_to_ids(['[fr_XX]'])) |
|
|
|
# Decoding |
|
output = tokenizer.batch_decode(output_ids, skip_special_tokens=False) |
|
|
|
# Notice it does not translate "Sparta" which is "Sparte" in french |
|
'''['</s>[fr_XX] À quelle bataille Sparta a-t-il été vaincu par Thebes?</s>']''' |
|
|
|
# English question |
|
output_ids = model.generate(**tokenized_text, forced_bos_token_id=tokenizer.convert_tokens_to_ids(['[en_XX]'])) |
|
|
|
# Decoding |
|
output = tokenizer.batch_decode(output_ids, skip_special_tokens=False) |
|
|
|
'''['</s>[en_XX] At what battle did Thebes defeat Sparta?</s>']''' |
|
|
|
``` |
|
|