基于文本的问答系统构建指南
1. 从文本中提取答案
在构建问答(QA)系统时,首要任务是找到一种方法,将潜在答案识别为客户评论中的文本片段。例如,若问题是 “Is it waterproof?”,评论段落为 “This watch is waterproof at 30m depth”,则模型应输出 “waterproof at 30m”。为实现这一目标,需要掌握以下几点:
- 构建有监督学习问题。
- 对用于问答任务的文本进行分词和编码。
- 处理超出模型最大上下文大小的长段落。
1.1 跨度分类
最常见的从文本中提取答案的方法是将问题构建为跨度分类任务,其中答案跨度的起始和结束标记作为模型需要预测的标签。由于训练集相对较小(仅有 1295 个示例),一个不错的策略是从在大规模问答数据集(如 SQuAD)上已经过微调的语言模型开始。这类模型通常具有较强的阅读理解能力,可作为构建更精确系统的良好基线。
可以通过访问 Hugging Face Hub 并在 “Models” 标签中搜索 “squad” 来找到一系列抽取式问答模型。选择模型时,通常取决于多种因素,如语料库是单语言还是多语言,以及在生产环境中运行模型的限制。以下是一些可作为基础的模型:
| Transformer | 描述 | 参数数量 | SQuAD 2.0 上的 F1 分数 |
| — | — | — | — |
| MiniLM | BERT-base 的蒸馏版本,保留 99% 的性能,速度快两倍 | 66M | 79.5 |
| RoBERTa-base | RoBERTa 模型比 BERT 对应模型性能更好,可使用单