|
--- |
|
language: |
|
- ja |
|
license: mit |
|
tags: |
|
- question-answering |
|
- generated_from_trainer |
|
- bert |
|
- jaquad |
|
datasets: SkelterLabsInc/JaQuAD |
|
inference: |
|
parameters: |
|
align_to_words: false |
|
widget: |
|
- text: 決勝トーナメントで日本に勝ったのはどこでしたか。 |
|
context: 日本は予選リーグで強豪のドイツとスペインに勝って決勝トーナメントに進んだが、クロアチアと対戦して敗れた。 |
|
- text: 8世紀に日本の首都はどこでしたか。 |
|
context: 8世紀に日本の首都であった奈良を代表する寺院である東大寺は、「古都奈良の文化財」の一部として世界遺産に登録されている。東大寺には、「奈良の大仏」として知られる、高さ約15メートルの盧舎那仏像をはじめ、日本仏教美術史を代表する著名作品が多く所蔵されている。 |
|
- text: 「奈良の大仏」の高さは何メートルなの? |
|
context: 8世紀に日本の首都であった奈良を代表する寺院である東大寺は、「古都奈良の文化財」の一部として世界遺産に登録されている。東大寺には、「奈良の大仏」として知られる、高さ約15メートルの盧舎那仏像をはじめ、日本仏教美術史を代表する著名作品が多く所蔵されている。 |
|
model-index: |
|
- name: roberta_qa_japanese |
|
results: [] |
|
--- |
|
|
|
<!-- This model card has been generated automatically according to the information the Trainer had access to. You |
|
should probably proofread and complete it, then remove this comment. --> |
|
|
|
# roberta_qa_japanese |
|
|
|
(Japanese caption : 日本語の (抽出型) 質問応答のモデル) |
|
|
|
This model is a fine-tuned version of [rinna/japanese-roberta-base](https://huggingface.co/rinna/japanese-roberta-base) (pre-trained RoBERTa model provided by rinna Co., Ltd.) trained for extractive question answering. |
|
|
|
The model is fine-tuned on [JaQuAD](https://huggingface.co/datasets/SkelterLabsInc/JaQuAD) dataset provided by Skelter Labs, in which data is collected from Japanese Wikipedia articles and annotated by a human. |
|
|
|
## Intended uses |
|
|
|
When running with a dedicated pipeline : |
|
|
|
```python |
|
from transformers import pipeline |
|
|
|
model_name = "tsmatz/roberta_qa_japanese" |
|
qa_pipeline = pipeline( |
|
"question-answering", |
|
model=model_name, |
|
tokenizer=model_name) |
|
result = qa_pipeline( |
|
question = "決勝トーナメントで日本に勝ったのはどこでしたか。", |
|
context = "日本は予選リーグで強豪のドイツとスペインに勝って決勝トーナメントに進んだが、クロアチアと対戦して敗れた。", |
|
align_to_words = False, |
|
) |
|
print(result) |
|
``` |
|
|
|
When manually running through forward pass : |
|
|
|
```python |
|
import torch |
|
import numpy as np |
|
from transformers import AutoModelForQuestionAnswering, AutoTokenizer |
|
|
|
model_name = "tsmatz/roberta_qa_japanese" |
|
model = (AutoModelForQuestionAnswering |
|
.from_pretrained(model_name)) |
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
|
|
def inference_answer(question, context): |
|
question = question |
|
context = context |
|
test_feature = tokenizer( |
|
question, |
|
context, |
|
max_length=318, |
|
) |
|
with torch.no_grad(): |
|
outputs = model(torch.tensor([test_feature["input_ids"]])) |
|
start_logits = outputs.start_logits.cpu().numpy() |
|
end_logits = outputs.end_logits.cpu().numpy() |
|
answer_ids = test_feature["input_ids"][np.argmax(start_logits):np.argmax(end_logits)+1] |
|
return "".join(tokenizer.batch_decode(answer_ids)) |
|
|
|
question = "決勝トーナメントで日本に勝ったのはどこでしたか。" |
|
context = "日本は予選リーグで強豪のドイツとスペインに勝って決勝トーナメントに進んだが、クロアチアと対戦して敗れた。" |
|
answer_pred = inference_answer(question, context) |
|
print(answer_pred) |
|
``` |
|
|
|
## Training procedure |
|
|
|
You can download the source code for fine-tuning from [here](https://github.com/tsmatz/huggingface-finetune-japanese/blob/master/03-question-answering.ipynb). |
|
|
|
### Training hyperparameters |
|
|
|
The following hyperparameters were used during training: |
|
- learning_rate: 7e-05 |
|
- train_batch_size: 2 |
|
- eval_batch_size: 1 |
|
- seed: 42 |
|
- gradient_accumulation_steps: 16 |
|
- total_train_batch_size: 32 |
|
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08 |
|
- lr_scheduler_type: linear |
|
- lr_scheduler_warmup_steps: 100 |
|
- num_epochs: 3 |
|
|
|
### Training results |
|
|
|
| Training Loss | Epoch | Step | Validation Loss | |
|
|:-------------:|:-----:|:----:|:---------------:| |
|
| 2.1293 | 0.13 | 150 | 1.0311 | |
|
| 1.1965 | 0.26 | 300 | 0.6723 | |
|
| 1.022 | 0.39 | 450 | 0.4838 | |
|
| 0.9594 | 0.53 | 600 | 0.5174 | |
|
| 0.9187 | 0.66 | 750 | 0.4671 | |
|
| 0.8229 | 0.79 | 900 | 0.4650 | |
|
| 0.71 | 0.92 | 1050 | 0.2648 | |
|
| 0.5436 | 1.05 | 1200 | 0.2665 | |
|
| 0.5045 | 1.19 | 1350 | 0.2686 | |
|
| 0.5025 | 1.32 | 1500 | 0.2082 | |
|
| 0.5213 | 1.45 | 1650 | 0.1715 | |
|
| 0.4648 | 1.58 | 1800 | 0.1563 | |
|
| 0.4698 | 1.71 | 1950 | 0.1488 | |
|
| 0.4823 | 1.84 | 2100 | 0.1050 | |
|
| 0.4482 | 1.97 | 2250 | 0.0821 | |
|
| 0.2755 | 2.11 | 2400 | 0.0898 | |
|
| 0.2834 | 2.24 | 2550 | 0.0964 | |
|
| 0.2525 | 2.37 | 2700 | 0.0533 | |
|
| 0.2606 | 2.5 | 2850 | 0.0561 | |
|
| 0.2467 | 2.63 | 3000 | 0.0601 | |
|
| 0.2799 | 2.77 | 3150 | 0.0562 | |
|
| 0.2497 | 2.9 | 3300 | 0.0516 | |
|
|
|
|
|
### Framework versions |
|
|
|
- Transformers 4.23.1 |
|
- Pytorch 1.12.1+cu102 |
|
- Datasets 2.6.1 |
|
- Tokenizers 0.13.1 |
|
|