T5-Base在SQuAD上微调用于问题生成
项目介绍
T5-Base-finetuned-for-Question-Generation是一个基于T5模型的项目,主要用于从文本中生成相关问题。模型经过SQuAD(Stanford Question Answering Dataset)数据集的微调,具备生成问题的能力。SQuAD数据集是一种流行的数据集,专用于机器阅读理解任务。通过这种微调,该模型能够根据给定的答案和上下文自动生成相关的问题。
模型的应用
在应用中,这个模型通过Python代码来执行。用户需要先通过transformers
库加载微调后的模型和分词器。代码中首先初始化一个QuestionGeneration
类,该类能够接收答案和上下文两部分信息,并生成对应的问题。
使用示例
以下是这个模型如何被使用的一个示例:
-
初始化模型:
from transformers import T5Tokenizer, T5ForConditionalGeneration trained_model_path = 'ZhangCheng/T5-Base-Fine-Tuned-for-Question-Generation' trained_tokenizer_path = 'ZhangCheng/T5-Base-Fine-Tuned-for-Question-Generation' class QuestionGeneration: def __init__(self, model_dir=None): self.model = T5ForConditionalGeneration.from_pretrained(trained_model_path) self.tokenizer = T5Tokenizer.from_pretrained(trained_tokenizer_path) self.device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') self.model = self.model.to(self.device) self.model.eval()
-
生成问题的过程:
def generate(self, answer: str, context: str): input_text = '<answer> %s <context> %s ' % (answer, context) encoding = self.tokenizer.encode_plus( input_text, return_tensors='pt' ) input_ids = encoding['input_ids'] attention_mask = encoding['attention_mask'] outputs = self.model.generate( input_ids=input_ids, attention_mask=attention_mask ) question = self.tokenizer.decode( outputs[0], skip_special_tokens=True, clean_up_tokenization_spaces=True ) return {'question': question, 'answer': answer, 'context': context}
-
调用示例:
if __name__ == "__main__": context = 'ZhangCheng fine-tuned T5 on SQuAD dataset for question generation.' answer = 'ZhangCheng' QG = QuestionGeneration() qa = QG.generate(answer, context) print(qa['question']) # 输出: # Who fine-tuned T5 on SQuAD dataset for question generation?
项目的意义
通过这个项目,用户能够在不同的场合使用自然语言处理技术生成问题。这对于教育、自动问答系统和内容分析等领域有着重要的应用。借助这个项目,开发者可以快速集成自动问题生成能力,提高信息获取和处理的效率。