在自然语言处理领域,问答系统一直是一个重要的研究方向。本文将介绍如何使用 Transformers 库实现一个简单的问答系统。
一:准备环境
确保已经安装了以下库:
transformers
datasets
pandas
torch
二:代码实现步骤
(一)加载预训练模型和分词器
from transformers import BertTokenizer, BertForQuestionAnswering
from datasets import Dataset
import pandas as pd
# 加载预训练的 BERT 模型和分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertForQuestionAnswering.from_pretrained('bert-base-chinese')
这里我们使用了bert-base-chinese预训练模型和对应的分词器。
(二)加载数据集
# 加载数据集
df = pd.read_csv('qa_data.csv')
dataset = Dataset.from_pandas(df)
假设我们有一个名为qa_data.csv的数据集,通过pandas读取后转换为Dataset对象。
(三)数据编码函数
def encode_examples(examples):
print(f"Examples received: {
examples}")
questions = examples['question']
answers = examples['answer']
inputs = tokenizer(
questions,
answers,
max_length=512,
truncation='only_second',
padding='max_length',
return_tensors='pt'
)
batch_size = len(questions)
return {
'input_ids': inputs['input_ids']