基于知识图谱的菜谱问答系统——需求分析
1.项目背景
近年来,人机对话系统作为人工智能的一个重要领域,得到了许多关注和发展。传统信息检索技术已经不能满足人们对信息获取效率的要求,智能问答系统应运而生,并成为自然语言处理领域一个非常重要的研究热点。
知识图谱(Knowledge Graph)于2012年5月17日被Google正式提出,其初衷是为了提高搜索引擎的能力,增强用户的搜索质量以及搜索体验。知识图谱是一种结构化的语义知识库,用于以符号形式描述物理世界中的概念及其相互关系,其基本组成单位是“实体 关系 实体”三元组,以及实体及其相关属性值对,实体间通过关系相互联结构成网状知识结构。
随着知识图谱的不断发展,越来越多的知识图谱出现在人们视野当中,这些知识图谱在各个领域中得到广泛应用,能够作为智能问答的高质量数据源。知识图谱用于智能问答领域主要有两个方面:一方面,问答系统可以直接从知识图谱中检索答案;另一方面,知识图谱能够给智能问答系统提供外部信息,从而提高问答系统的性能,这两个方面都是研究的热点。
2.项目需求
采用知识图谱组织机器人的知识库,并对用户输入进行推理、关联,实现对用户意图的准确理解,检索菜谱领域知识库并生成答案。
抽象用例:
需求中的动词短语: 组织机器人知识库、理解用户输入、检索知识库、生成答案
用例分析:
-
组织机器人知识库:
- 起始用户:用户输入菜谱数据
- 终止用户:知识图谱模块组织形成知识图谱新内容
- 是否完成有效任务:用户获得知识图谱内容
- 是否是业务流程:是
-
理解用户输入并生成答案:
- 起始用户:菜谱系统用户输入问题
- 终止用户:菜谱系统用户获得答案输出
- 是否完成有效任务:菜谱系统用户获得所提问题答案
- 是否是业务流程:是
-
检索知识库:
- 起始用户:问答模块发出检索请求
- 终止用户:问答模块获得检索信息
- 是否完成有效任务:问答模块成功检索到信息
- 是否是业务流程:否
综上所述,项目用例:组织机器人知识库、理解用户输入并生成答案。
高层用例:
- 组织机器人知识库(问答):用例的开始状态是用户向知识图谱模块输入菜谱数据,结束状态是知识图谱模块分析组织获得新的知识图谱内容。
- 回答菜谱相关问题(知识图谱构建):用例的开始状态是用户向问答模块输入问句,结束状态是用户获得从问答系统返回的问题。
用例图


扩展用例:
构建知识图谱:
| 用户 | 系统 |
|---|---|
| - | 展示构建知识图谱GUI |
| TUCBW输入菜谱数据 | 显示用户数据成功输入 |
| 选择生成知识图谱按钮 | 显示正在生成知识图谱 |
| - | 显示新的知识图谱内容已形成 |
| TUCEW获得图谱形成信息 | - |
问答:
| 用户 | 系统 |
|---|---|
| - | 展示问答系统GUI |
| TUCBW输入菜谱相关问题 | 显示用户输入问题成功及所输入问题 |
| - | 显示用户输入的问题的回答 |
| TUCEW获得系统返回的答案 | - |
数据模型:
本项目使用Neo4j图数据库来组织构建系统的数据模型,采用经典的知识图谱三元组模型:实体–关系–实体结构。
具体数据模型结构设计表:

//
//
项目流程图:
知识图谱模块
实体抽取模块
问答模块
输入
输入菜谱数据
使用
检索
使用
检索菜谱信息
用例1: 形成知识图谱
实体抽取
用例2: 回答菜谱相关问题
菜谱系统用户
3.项目设计
剧情描述:
构建知识图谱:
1)用户在主GUI中选择构建知识图谱
1.1)用户在知识图谱构建GUI中上传菜谱数据
1.2)知识图谱构建GUI将信息块发送到知识图谱模块
1.3)if(用户具有构建权限)
1.3.1)知识图谱模块将用户输入数据传递到实体抽取模块
1.3.2)实体抽取模块将标注数据返回到知识图谱模块
1.3.3)知识图谱模块根据标注数据构建知识图谱
1.3.4)知识图谱模块向知识图谱构建GUI返回信息:“知识图谱构建成功”
1.4)else
1.4.1)知识图谱模块向知识图谱构建GUI返回信息:“当前不具有构建知识图谱权限”
1.5)知识图谱构建GUI显示知识图谱模块的返回信息给用户
//
问答:
1)用户在主GUI中选择问答按钮
1.1)用户在问答GUI中输入问句
1.2)问答GUI向问答模块传入用户问句信息
1.3)问答模块将问句信息传入实体抽取模块
1.4)实体抽取模块返回标注数据到问答模块
1.5)问答模块将标注数据传入到知识图谱
1.6)知识图谱根据标注数据返回查询数据到问答模块
1.7)问答模块使用查询到的数据生成答句
1.8)问答模块将生成答句传到问答GUI
1.9)问答GUI显示问句给用户
分析序列图:
问答:

构建知识图谱:

设计类图:
问答:

构建知识图谱:

//
//
可采用的设计模式:
模板方法:在问答模块中可以采用模板方法
抽象出问答类用以完成问答的通用流程,其中细节方法由子类实现,其子类是特定类型问题的问答,负责实现针对该问题的答案生成等具体操作。
作者:453
