|
--- |
|
language: |
|
- vi |
|
- vn |
|
- en |
|
tags: |
|
- question-answering |
|
- pytorch |
|
datasets: |
|
- squad |
|
license: cc-by-nc-4.0 |
|
pipeline_tag: question-answering |
|
metrics: |
|
- squad |
|
widget: |
|
- text: "Bình là chuyên gia về gì ?" |
|
context: "Bình Nguyễn là một người đam mê với lĩnh vực xử lý ngôn ngữ tự nhiên . Anh nhận chứng chỉ Google Developer Expert năm 2020" |
|
- text: "Bình được công nhận với danh hiệu gì ?" |
|
context: "Bình Nguyễn là một người đam mê với lĩnh vực xử lý ngôn ngữ tự nhiên . Anh nhận chứng chỉ Google Developer Expert năm 2020" |
|
--- |
|
## Model Description |
|
|
|
- Language model: [XLM-RoBERTa](https://huggingface.co/transformers/model_doc/xlmroberta.html) |
|
- Fine-tune: [MRCQuestionAnswering](https://github.com/nguyenvulebinh/extractive-qa-mrc) |
|
- Language: Vietnamese, Englsih |
|
- Downstream-task: Extractive QA |
|
- Dataset (combine English and Vietnamese): |
|
- [Squad 2.0](https://rajpurkar.github.io/SQuAD-explorer/) |
|
- [mailong25](https://github.com/mailong25/bert-vietnamese-question-answering/tree/master/dataset) |
|
- [UIT-ViQuAD](https://www.aclweb.org/anthology/2020.coling-main.233/) |
|
- [MultiLingual Question Answering](https://github.com/facebookresearch/MLQA) |
|
|
|
This model is intended to be used for QA in the Vietnamese language so the valid set is Vietnamese only (but English works fine). The evaluation result below using 10% of the Vietnamese dataset. |
|
|
|
|
|
| Model | EM | F1 | |
|
| ------------- | ------------- | ------------- | |
|
| [base](https://huggingface.co/nguyenvulebinh/vi-mrc-base) | 76.43 | 84.16 | |
|
| [large](https://huggingface.co/nguyenvulebinh/vi-mrc-large) | 77.32 | 85.46 | |
|
|
|
|
|
[MRCQuestionAnswering](https://github.com/nguyenvulebinh/extractive-qa-mrc) using [XLM-RoBERTa](https://huggingface.co/transformers/model_doc/xlmroberta.html) as a pre-trained language model. By default, XLM-RoBERTa will split word in to sub-words. But in my implementation, I re-combine sub-words representation (after encoded by BERT layer) into word representation using sum strategy. |
|
|
|
## Using pre-trained model |
|
|
|
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1Yqgdfaca7L94OyQVnq5iQq8wRTFvVZjv?usp=sharing) |
|
|
|
- Hugging Face pipeline style (**NOT using sum features strategy**). |
|
|
|
```python |
|
from transformers import pipeline |
|
# model_checkpoint = "nguyenvulebinh/vi-mrc-large" |
|
model_checkpoint = "nguyenvulebinh/vi-mrc-base" |
|
nlp = pipeline('question-answering', model=model_checkpoint, |
|
tokenizer=model_checkpoint) |
|
QA_input = { |
|
'question': "Bình là chuyên gia về gì ?", |
|
'context': "Bình Nguyễn là một người đam mê với lĩnh vực xử lý ngôn ngữ tự nhiên . Anh nhận chứng chỉ Google Developer Expert năm 2020" |
|
} |
|
res = nlp(QA_input) |
|
print('pipeline: {}'.format(res)) |
|
#{'score': 0.5782045125961304, 'start': 45, 'end': 68, 'answer': 'xử lý ngôn ngữ tự nhiên'} |
|
``` |
|
|
|
- More accurate infer process ([**Using sum features strategy**](https://github.com/nguyenvulebinh/extractive-qa-mrc)) |
|
|
|
```python |
|
from infer import tokenize_function, data_collator, extract_answer |
|
from model.mrc_model import MRCQuestionAnswering |
|
from transformers import AutoTokenizer |
|
|
|
# model_checkpoint = "nguyenvulebinh/vi-mrc-large" |
|
model_checkpoint = "nguyenvulebinh/vi-mrc-base" |
|
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint) |
|
model = MRCQuestionAnswering.from_pretrained(model_checkpoint) |
|
|
|
QA_input = { |
|
'question': "Bình được công nhận với danh hiệu gì ?", |
|
'context': "Bình Nguyễn là một người đam mê với lĩnh vực xử lý ngôn ngữ tự nhiên . Anh nhận chứng chỉ Google Developer Expert năm 2020" |
|
} |
|
|
|
inputs = [tokenize_function(*QA_input)] |
|
inputs_ids = data_collator(inputs) |
|
outputs = model(**inputs_ids) |
|
answer = extract_answer(inputs, outputs, tokenizer) |
|
|
|
print(answer) |
|
# answer: Google Developer Expert. Score start: 0.9926977753639221, Score end: 0.9909810423851013 |
|
``` |
|
|
|
## About |
|
|
|
*Built by Binh Nguyen* |
|
[![Follow](https://img.shields.io/twitter/follow/nguyenvulebinh?style=social)](https://twitter.com/intent/follow?screen_name=nguyenvulebinh) |
|
For more details, visit the project repository. |
|
[![GitHub stars](https://img.shields.io/github/stars/nguyenvulebinh/extractive-qa-mrc?style=social)](https://github.com/nguyenvulebinh/extractive-qa-mrc) |