用语言模型回答多项选择题。
mcqa的Python项目详细描述
MCQA:回答多项选择题
用语言模型回答多项选择题。
安装
pip
pip install mcqa
来源
git clone https://github.com/mcqa-suite/mcqa.git
cd mcQA
pip install -e .
开始
数据准备
要训练一个mcQA
模型,您需要创建一个csv文件,其中n+2列是每个问题的选择数。第一列应该是上下文语句,后面的n列应该是该问题的选项,最后一列是选定的答案。
下面是一个3选择题的例子(摘自CoS-E dataset):
Context sentence | Choice 1 | Choice 2 | Choice 3 | Label |
---|---|---|---|---|
People do what during their time off from work? | take trips | brow shorter | become hysterical | take trips |
如果您有一个经过训练的mcQA
模型,并且希望在数据集上进行推断,那么它的格式应该与列车数据的格式相同,但是label
列。
参见下面的数据准备示例:
frommcqa.dataimportMCQADatamcqa_data=MCQAData(bert_model="bert-base-uncased",lower_case=True,max_seq_length=256)train_dataset=mcqa_data.read(data_file='swagaf/data/train.csv',is_training=True)test_dataset=mcqa_data.read(data_file='swagaf/data/test.csv',is_training=False)
模特训练
frommcqa.modelsimportModelmdl=Model(bert_model="bert-base-uncased",device="cuda")mdl.fit(train_dataset,train_batch_size=32,num_train_epochs=20)
预测
preds=mdl.predict(test_dataset,eval_batch_size=32)
评估
fromsklearn.metricsimportaccuracy_scorefrommcqa.dataimportget_labelsprint(accuracy_score(preds,get_labels(train_dataset)))
参考文献
Type | Title | Author | Year |
---|---|---|---|
:newspaper: Paper | Explain Yourself! Leveraging Language Models for Commonsense Reasoning | Nazneen Fatema Rajani, Bryan McCann, Caiming Xiong and Richard Socher | ACL 2019 |
:newspaper: Paper | SWAG: A Large-Scale Adversarial Dataset for Grounded Commonsense Inference | Rowan Zellers, Yonatan Bisk, Roy Schwartz and Yejin Choi | 2018 |