Edit model card

cdgp-csg-roberta-cloth

Model description

This model is a Candidate Set Generator in "CDGP: Automatic Cloze Distractor Generation based on Pre-trained Language Model", Findings of EMNLP 2022.

Its input are stem and answer, and output is candidate set of distractors. It is fine-tuned by CLOTH dataset based on roberta-base model.

For more details, you can see our paper or GitHub.

How to use?

  1. Download the model by hugging face transformers.
from transformers import RobertaTokenizer, RobertaForMaskedLM, pipeline

tokenizer = RobertaTokenizer.from_pretrained("AndyChiang/cdgp-csg-roberta-cloth")
csg_model = RobertaForMaskedLM.from_pretrained("AndyChiang/cdgp-csg-roberta-cloth")
  1. Create a unmasker.
unmasker = pipeline("fill-mask", tokenizer=tokenizer, model=csg_model, top_k=10)
  1. Use the unmasker to generate the candidate set of distractors.
sent = "I feel <mask> now. </s> happy"
cs = unmasker(sent)
print(cs)

Dataset

This model is fine-tuned by CLOTH dataset, which is a collection of nearly 100,000 cloze questions from middle school and high school English exams. The detail of CLOTH dataset is shown below.

Number of questions Train Valid Test
Middle school 22056 3273 3198
High school 54794 7794 8318
Total 76850 11067 11516

You can also use the dataset we have already cleaned.

Training

We use a special way to fine-tune model, which is called "Answer-Relating Fine-Tune". More detail is in our paper.

Training hyperparameters

The following hyperparameters were used during training:

  • Pre-train language model: roberta-base
  • Optimizer: adam
  • Learning rate: 0.0001
  • Max length of input: 64
  • Batch size: 64
  • Epoch: 1
  • Device: NVIDIA® Tesla T4 in Google Colab

Testing

The evaluations of this model as a Candidate Set Generator in CDGP is as follows:

P@1 F1@3 F1@10 MRR NDCG@10
10.50 9.83 10.25 20.42 28.17

Other models

Candidate Set Generator

Distractor Selector

fastText: cdgp-ds-fasttext

Citation

None

Downloads last month
5
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.