创建特定领域的问答系统

数据挖掘 机器学习 Python nlp 文本挖掘
2021-09-20 17:41:33

我想创建一个特定领域的 QA 系统。

我正在开展一个项目,为给定的教科书创建一个 QA 系统(在特定领域并回答所有相关问题)

我正在考虑的一种方法是创建一个本体/知识库,然后将其用于答案检索。

为了这 :

  1. 如何从文档中提取数据并将其填充到 KB 中?

  2. 问题将是自然语言,我如何使用这个问题从知识库中查询?

  3. 这是最好的方法吗?因为这里需要领域知识来创建本体。并且有 n 个域。那么我是否需要为每个域创建不同的本体?

  4. 可以使用单个 QA 模型来覆盖不同的领域吗?是否有任何其他机器学习和深度学习方法可以用于此?

2个回答

这是一个广泛的问题,但这是一般方法。典型的 QA 系统涉及几个子问题,每个子问题都可以使用不同的方法解决:

  1. 问题分类- 用户问的是什么类型的问题?假设您有标签,这可以作为分类问题提出。
  2. 解析问题- 这里需要多种 NLP 技术
  3. 将问题转换为规范形式- 每个问题都将转换为规范或结构化格式(可用于查询)。这通常是该过程中最困难的部分。这通常称为语义解析一种方法是获取短语的变体,然后使用一些相似性度量将其映射到单个规范形式。你可以从这篇论文开始。

如果您可以从自然语言文本转换为规范形式,那么您基本上就完成了。存储数据和检索是微不足道的方面,可以通过多种方式完成。谈到域的问题,总是要在一个域的准确性与一般的 QA 系统(这太难破解)之间进行权衡。每个领域的单一模型很可能会以额外的努力为您带来更好的结果。

你应该在 kaggle 上查看 Allen AI 竞赛:https ://www.kaggle.com/c/the-allen-ai-science-challenge

简而言之,人们在那里采用的典型方法与您的建议类似:

  • 从特定领域的文章和/或维基百科建立知识库
  • 用 lucene 或其他 IR 系统索引这些文章
  • 对于每个问题/答案对,检索最相关的文章并将它们用作特征
  • 使用这些特征构建一个分类器,用于分类答案是正确还是不正确