我正在构建一个应用程序,您可以在其中从模型列表中选择一个开源模型并询问一般问题。我正在使用 searchxng 在网络上搜索上下文。虽然所有这些都运行良好并且我能够得到结果,但我无法得到详细或完整的答案。例如,如果我问 2007 年 f1 世界冠军是谁,我得到的答案是莱科宁。
我希望我的答案结构正确。我理想的答案是“2007 年 F1 世界冠军是基米·莱科宁”。
我以这种方式使用拥抱面变压器管道:
model_name = question.model
question_answerer = pipeline(
"question-answering",
model=AutoModelForQuestionAnswering.from_pretrained(model_name),
tokenizer=AutoTokenizer.from_pretrained(model_name),
device=0 # Use GPU if available
)
response = question_answerer(question=question.question, context=summarized_content, batch_size=16)
return response
目前,我正在使用 deepset/roberta-base-squad2 模型
我尝试向模型发送大量上下文,希望得到详细的答案。我也尝试了很多不同的模型,但得到了相似的结果
您正在使用
deepset/roberta-base-squad2
,它显然是在 squad_v2
数据集上进行训练的。如果你看一下这个数据集,你会发现所有的答案都很短,因此无论你的上下文有多长,答案总是很短的。在这种情况下,使用其他模型(例如 T5 系列、BART 或在此数据集上训练的任何模型)将得到简短的答案。您应该寻找在具有较长答案的数据集上训练的模型。以下是一些需要考虑的事项:
您可以在 HuggingFace 上搜索上述任一数据集,并会找到在这些数据集上训练的模型。