-
Notifications
You must be signed in to change notification settings - Fork 27
/
question_answering.py
81 lines (70 loc) · 2.85 KB
/
question_answering.py
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
from dataclasses import dataclass
from typing import ClassVar, Dict
from ..features import Features, Sequence, Value
from .base import TaskTemplate
@dataclass
class QuestionAnsweringExtractive(TaskTemplate):
# `task` is not a ClassVar since we want it to be part of the `asdict` output for JSON serialization
task_category: str = "question-answering-extractive"
task: str = "question-answering-extractive"
input_schema: ClassVar[Features] = Features({"question": Value("string"), "context": Value("string")})
label_schema: ClassVar[Features] = Features(
{
"answers": Sequence(
{
"text": Value("string"),
"answer_start": Value("int32"),
}
)
}
)
question_column: str = "question"
context_column: str = "context"
answers_column: str = "answers"
@property
def column_mapping(self) -> Dict[str, str]:
return {self.question_column: "question", self.context_column: "context", self.answers_column: "answers"}
@dataclass
class QuestionAnsweringHotpot(TaskTemplate):
# `task` is not a ClassVar since we want it to be part of the `asdict` output for JSON serialization
task_category: str = "question-answering-hotpot"
task: str = "question-answering-hotpot"
# "supporting_facts": {
# "title": supporting_titles,
# "sent_id": supporting_sent_ids,
# },
# "context": {
# "title": context_titles,
# "sentences": context_sentences,
# },
input_schema: ClassVar[Features] = Features({"question": Value("string"),
"context": Sequence(
{
"text": Value("string"),
"sentences": Value("string"),
}
)
})
label_schema: ClassVar[Features] = Features(
{
"answers": Sequence(
{
"text": Value("string"),
"answer_start": Value("int32"),
}
),
"supporting_facts": Sequence(
{
"title": Value("string"),
"sent_id": Value("int32"),
}
)
}
)
question_column: str = "question"
context_column: str = "context"
answers_column: str = "answers"
supporting_column: str = "supporting_facts"
@property
def column_mapping(self) -> Dict[str, str]:
return {self.question_column: "question", self.context_column: "context", self.answers_column: "answers", self.supporting_column:"supporting_facts"}