Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
opencompass
Commits
d6aaac22
Unverified
Commit
d6aaac22
authored
Nov 13, 2023
by
Fengzhe Zhou
Committed by
GitHub
Nov 13, 2023
Browse files
[Feature] Update cmb (#571)
parent
9e42cb16
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
68 additions
and
55 deletions
+68
-55
configs/datasets/cmb/cmb_gen.py
configs/datasets/cmb/cmb_gen.py
+1
-1
configs/datasets/cmb/cmb_gen_72cbb7.py
configs/datasets/cmb/cmb_gen_72cbb7.py
+0
-43
configs/datasets/cmb/cmb_gen_dfb5c4.py
configs/datasets/cmb/cmb_gen_dfb5c4.py
+49
-0
opencompass/datasets/cmb.py
opencompass/datasets/cmb.py
+12
-11
opencompass/utils/text_postprocessors.py
opencompass/utils/text_postprocessors.py
+6
-0
No files found.
configs/datasets/cmb/cmb_gen.py
View file @
d6aaac22
from
mmengine.config
import
read_base
from
mmengine.config
import
read_base
with
read_base
():
with
read_base
():
from
.cmb_gen_
72cbb7
import
cmb_datasets
# noqa: F401, F403
from
.cmb_gen_
dfb5c4
import
cmb_datasets
# noqa: F401, F403
configs/datasets/cmb/cmb_gen_72cbb7.py
deleted
100644 → 0
View file @
9e42cb16
from
opencompass.openicl.icl_prompt_template
import
PromptTemplate
from
opencompass.openicl.icl_retriever
import
FixKRetriever
from
opencompass.openicl.icl_inferencer
import
GenInferencer
from
opencompass.datasets
import
CMBDataset
cmb_datasets
=
[]
cmb_reader_cfg
=
dict
(
input_columns
=
[
"exam_type"
,
"exam_class"
,
"question_type"
,
"question"
,
"option_str"
],
output_column
=
None
,
train_split
=
"val"
,
test_split
=
"test"
)
cmb_infer_cfg
=
dict
(
ice_template
=
dict
(
type
=
PromptTemplate
,
template
=
dict
(
begin
=
"</E>"
,
round
=
[
dict
(
role
=
"HUMAN"
,
prompt
=
f
"以下是中国{{exam_type}}中{{exam_class}}考试的一道{{question_type}},不需要做任何分析和解释,直接输出答案选项。
\n
{{question}}
\n
{{option_str}}
\n
答案: "
,
),
dict
(
role
=
"BOT"
,
prompt
=
"{answer}"
),
],
),
ice_token
=
"</E>"
,
),
retriever
=
dict
(
type
=
FixKRetriever
,
fix_id_list
=
[
0
,
1
,
2
,
3
,
4
]),
inferencer
=
dict
(
type
=
GenInferencer
),
)
cmb_datasets
.
append
(
dict
(
type
=
CMBDataset
,
path
=
"./data/CMB/"
,
abbr
=
"cmb"
,
reader_cfg
=
cmb_reader_cfg
,
infer_cfg
=
cmb_infer_cfg
)
)
\ No newline at end of file
configs/datasets/cmb/cmb_gen_dfb5c4.py
0 → 100644
View file @
d6aaac22
from
opencompass.openicl.icl_prompt_template
import
PromptTemplate
from
opencompass.openicl.icl_retriever
import
ZeroRetriever
from
opencompass.openicl.icl_inferencer
import
GenInferencer
from
opencompass.datasets
import
CMBDataset
from
opencompass.openicl.icl_evaluator
import
AccEvaluator
from
opencompass.utils.text_postprocessors
import
multiple_select_postprocess
cmb_datasets
=
[]
for
split
in
[
"val"
,
"test"
]:
cmb_reader_cfg
=
dict
(
input_columns
=
[
"exam_type"
,
"exam_class"
,
"question_type"
,
"question"
,
"option_str"
],
output_column
=
"answer"
,
train_split
=
split
,
test_split
=
split
,
)
cmb_infer_cfg
=
dict
(
prompt_template
=
dict
(
type
=
PromptTemplate
,
template
=
dict
(
round
=
[
dict
(
role
=
"HUMAN"
,
prompt
=
f
"以下是中国{{exam_type}}中{{exam_class}}考试的一道{{question_type}},不需要做任何分析和解释,直接输出答案选项。
\n
{{question}}
\n
{{option_str}}
\n
答案: "
,
),
dict
(
role
=
"BOT"
,
prompt
=
"{answer}"
),
],
),
),
retriever
=
dict
(
type
=
ZeroRetriever
),
inferencer
=
dict
(
type
=
GenInferencer
,
max_out_len
=
10
),
)
cmb_eval_cfg
=
dict
(
evaluator
=
dict
(
type
=
AccEvaluator
),
pred_postprocessor
=
dict
(
type
=
multiple_select_postprocess
),
)
cmb_datasets
.
append
(
dict
(
abbr
=
"cmb"
if
split
==
"val"
else
"cmb_test"
,
type
=
CMBDataset
,
path
=
"./data/CMB/"
,
reader_cfg
=
cmb_reader_cfg
,
infer_cfg
=
cmb_infer_cfg
,
eval_cfg
=
cmb_eval_cfg
,
)
)
opencompass/datasets/cmb.py
View file @
d6aaac22
...
@@ -13,18 +13,19 @@ class CMBDataset(BaseDataset):
...
@@ -13,18 +13,19 @@ class CMBDataset(BaseDataset):
@
staticmethod
@
staticmethod
def
load
(
path
:
str
):
def
load
(
path
:
str
):
with
open
(
osp
.
join
(
path
,
'test.json'
),
'r'
,
encoding
=
'utf-8'
)
as
f
:
test_data
=
json
.
load
(
f
)
with
open
(
osp
.
join
(
path
,
'val.json'
),
'r'
,
encoding
=
'utf-8'
)
as
f
:
with
open
(
osp
.
join
(
path
,
'val.json'
),
'r'
,
encoding
=
'utf-8'
)
as
f
:
val_data
=
json
.
load
(
f
)
val_data
=
json
.
load
(
f
)
for
d
in
val_data
:
d
[
'option_str'
]
=
'
\n
'
.
join
(
[
f
'
{
k
}
.
{
v
}
'
for
k
,
v
in
d
[
'option'
].
items
()
if
len
(
v
)
>
1
])
d
[
'answer'
]
=
'NULL'
val_dataset
=
Dataset
.
from_list
(
val_data
)
for
da
in
test_data
:
with
open
(
osp
.
join
(
path
,
'test.json'
),
'r'
,
encoding
=
'utf-8'
)
as
f
:
da
[
'option_str'
]
=
'
\n
'
.
join
(
test_data
=
json
.
load
(
f
)
[
f
'
{
k
}
.
{
v
}
'
for
k
,
v
in
da
[
'option'
].
items
()
if
len
(
v
)
>
1
])
for
d
in
test_data
:
for
da
in
val_data
:
d
[
'option_str'
]
=
'
\n
'
.
join
(
da
[
'option_str'
]
=
'
\n
'
.
join
(
[
f
'
{
k
}
.
{
v
}
'
for
k
,
v
in
d
[
'option'
].
items
()
if
len
(
v
)
>
1
])
[
f
'
{
k
}
.
{
v
}
'
for
k
,
v
in
da
[
'option'
].
items
()
if
len
(
v
)
>
1
])
test_dataset
=
Dataset
.
from_list
(
test_data
)
test_dataset
=
Dataset
.
from_list
(
test_data
)
val_dataset
=
Dataset
.
from_list
(
val_data
)
return
DatasetDict
({
'
test'
:
test_dataset
,
'val'
:
val
_dataset
})
return
DatasetDict
({
'
val'
:
val_dataset
,
'test'
:
test
_dataset
})
opencompass/utils/text_postprocessors.py
View file @
d6aaac22
...
@@ -98,3 +98,9 @@ def first_number_postprocess(text: str) -> float:
...
@@ -98,3 +98,9 @@ def first_number_postprocess(text: str) -> float:
# if a match is found, return it. Otherwise, return None.
# if a match is found, return it. Otherwise, return None.
return
float
(
match
.
group
(
1
))
if
match
else
None
return
float
(
match
.
group
(
1
))
if
match
else
None
@
TEXT_POSTPROCESSORS
.
register_module
(
'multiple-select'
)
def
multiple_select_postprocess
(
text
:
str
)
->
str
:
ret
=
set
([
t
for
t
in
text
if
t
.
isupper
()])
return
''
.
join
(
sorted
(
ret
))
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment