Transformers之问题对答(Question Answering)
1 引言
Transformers的环境配置非常麻烦, 尽管花了几个小时试了各种方法, 但仍然没有完全解决问题. 本文仅试验了Transformers之问题对答(Question Answering), 其它功能还没有测试. 在试验之前, 检查了每个模块的安装情况, 如下图所示。
问题对答是信息检索和自然语言处理NLP中的一项任务, 也是NLP中最难处理的一项内容, 该任务要求系统正确回答以人类自然语言提出的问题。在提取性问题解答方案中,通过提供一段文字,使用模型根据上下文来预测答案在段落中的位置。这是一项非常具有挑战性的任务.
PyTextRank---文本关键字(keywords)的自动取出
2 模型简介
尽管目前Question Answering模型共有307个,但本次测试使用的模型仍然是mrm8488/bert-multi-cased-finetuned-xquadv1. 该模型由谷歌创建,并在XQuAD之类的数据上进行了微调,用于多语言(11种不同的语言)的问答任务。BERT(base-multilingual-cased) fine-tuned for multilingual Q&A. 由于数据集基于SQuAD v1.1,所以数据中没有无法回答的问题, 以便模型可以专注于跨语言的转移。
3 调用方法
调用方法如下:
from transformers import pipeline
# pipeline模块是一个抽象层,提供了简单的API来执行各种任务。
question_answering = pipeline("question-answering",
model="mrm8488/bert-multi-cased-finetuned-xquadv1",
tokenizer="mrm8488/bert-multi-cased-finetuned-xquadv1")
# 构建问答管道
context = '''内容描述'''
question = '''所提问题'''
result = question_answering(question=question, context=context)
4 英语测试
首先对模型用英语进行测试:
内容: '''The development of a step-path failure surface is mainly controlled by the orientation and spatial characteristics of the present major rock structure including major joints sets, shear planes and fault planes. '''
根据上面的描述,提出以下四个问题:
(1) 问题: '''What kinds of factors controlled the development of a step-path failure surface?'''
回答: orientation and spatial characteristics (0.96)
给出的这个答案非常准确, 分数0.96.
(2) 问题: '''Please describe the major rock structure.'''
回答: step-path failure surface is mainly controlled by the orientation and spatial characteristics (0.39)
问题使用了描述形式, 本题没有给出正确答案, 可能的原因一方面没有使用问句形式,另一方面问题中给出的关键词太少, 分数0.39.
(3) 问题: What is rock structure?
回答: step-path failure surface (0.42)
这个问题也没有给出正确答案, 主要原因可能是问题中给出的关键词太少, 分数0.42.
(4) How many kinds of present major rock structure?
回答: major joints sets, shear planes and fault planes (0.003)
这个测试扩展了上述(3)的问题,给出了更多的关键词, 同时提问的方式更加正式, 确实给出了我们想要的答案, 但奇怪的是这个分数只有0.003. 似乎这个数据集还不能很好处理复杂的句型.
5 中文测试
接下来对中文进行测试:
内容: '''Jennings于1970年首次详细讨论了岩石边坡的阶梯式分析,他使用了极限平衡方法,考虑了沿节理的剪切破坏、通过完整岩石的剪切破坏以及岩桥的拉伸破坏。'''
根据上面的描述,提出以下四个问题:
(1) 问题: 谁首次进行了岩石边坡的阶梯式分析?
回答: Jennings (0.93)
回答正确, 分数0.93.
(2) 问题: Jennings使用了什么手段进行岩石边坡的阶梯式分析?
回答: 极限平衡方法 (0.59)
回答100%正确, 但分数只有0.59, 如果把"手段"换成"工具", 分数为0.67, 这显示出在这种场景下, "工具"更是一个相对合适的词汇.
(3) 问题: 当Jennings进行岩石边坡分析时,他考虑了哪些因素?
回答: 沿节理的剪切破坏 (0.49)
这个回答只给出了部分答案, 顿号后面的文字没有给出, 这显然不是我们所想要的, 分数为0.49. 我以为是顿号引起的短句, 所以把顿号改成了"和", 这样就变成了一个句子, 结果发现回答没发生任何变化, 只是分数变成了0.24.
(4) 问题: 岩石破坏有哪几种形式?
回答: 沿节理的剪切破坏 (0.17)
与(3)的回答一样, 只给出了部分答案, 不明白为什么后面的文字没有给出.