File size: 5,783 Bytes
5eb78ce
7633a86
 
5eb78ce
 
 
 
22f36b7
 
7633a86
da31855
 
 
ab33c65
7633a86
 
 
 
 
 
5eb78ce
 
 
 
 
 
 
 
 
 
22f36b7
 
34f326f
e8f6a19
 
22f36b7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5eb78ce
e8f6a19
5eb78ce
e8f6a19
 
 
 
5eb78ce
e8f6a19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5eb78ce
 
 
e2239a2
 
5eb78ce
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
---
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