首页 > 其他分享 >领域知识图谱-中式菜谱知识图谱:实现知识图谱可视化和知识库智能问答系统(KBQA)

领域知识图谱-中式菜谱知识图谱:实现知识图谱可视化和知识库智能问答系统(KBQA)

时间:2023-07-10 17:12:15浏览次数:37  
标签:py 水煮鱼 知识 KBQA 可视化 图谱 菜品 问答

领域知识图谱-中式菜谱知识图谱:实现知识图谱可视化和知识库智能问答系统(KBQA)

A knowledge graph for Chinese cookbook(中式菜谱知识图谱),可以实现知识图谱可视化和知识库智能问答系统(KBQA)

效果展示:

本项目开发的系统名称为AI Food Time,中文名为爱食光。如需体验可视化功能可直接访问点击可视化功能
通过收集网上完全公开的有关中式菜谱的数据,经过数据清洗和分析,转换为知识图谱的存储结构,并提供可视化展示与搜索智能问答等功能,为热爱美食与烹饪的人们提供方便快捷的中式菜谱服务,并以知识图谱的形式直观显示出不同菜品的关系及所用原料,在生活中具有很大的实际应用需求,包括:

  • 一类菜品的不同具体做法,例如水煮鱼包括麻辣水煮鱼、小清新版水煮鱼和家常版水煮鱼等;
  • 通过菜品与食材的关联关系,可以查询家中现有食材可以烹饪哪些菜品;
  • 可以直接显示出每种菜品所需主料,辅料,配料及其具体数量和烹饪方法,与网上的一些菜谱网页相比更加简单直观;
  • 可视化能够对各种菜品及关联关系有一个全局的认识,并能够显示每种菜品对应的图片;
  • 智能问答系统可采用自然语言进行提问,系统反馈答案结果。

项目码源链接见文末

跳转链接点击

1. 可视化展示及搜索:

同一类实体用相同颜色的节点表示,鼠标位于某个节点上方时显示其相关联的其它实体和之间的关系名称;
具有同一类实体显示开关,节点显示模式转换,并支持搜索功能;
每种菜品的信息栏中显示菜品对应的成品图片,并利用entities_aglin.py进行了实体对齐,消除了食品原料中的冗余信息。

  • mini版:包含10大类,50种菜品之间的关联关系,包括菜品制作的各种食材和制作步骤,轻量级的mini版同时支持电脑和手机浏览器打开,如需体验可直接进入访问入口
  • pro版(开发中):包含362大类,八千多种菜品之间的关联关系,包括菜品制作的各种原料和制作步骤。

2. 智能问答系统(KBQA):

基于构建的中式菜谱知识图谱,设计知识库问答KBQA系统,根据提出的和菜品有关的问题,系统自动给出答案,对于无法给出回答的情况系统也能进行回应。

  • 文件夹结构
    • /data:包含三元组数据aifoodtime_ntriples.nt
    • /external_dict:包含所有菜品和原料的实体列表entities_list.txt
    • query_main.py:KBQA主函数
    • jena_sparql_endpoint.py:启动jena_sparql服务
    • question2sparql.py:自然语言问题到SPARQL查询的转换
    • question_temp.py:自然语言到SPARQL的问题模板
    • vizdata2entities.py:从可视化存储数据到实体列表文件的转换
    • word_tagging.py:中文分词,使用的是jieba

基于构建的中式菜谱知识图谱,针对其中和菜品有关的各类问题,智能问答系统可以给出对应问题的答案。
本项目中的智能问答机器人名为小吃
使用本系统需要预装软件:

  • Apache Jena Fuseki:Jena Fuseki是一个SPARQL服务,通过HTTP提供使用SPARQL协议的REST式SPARQLHTTP更新,SPARQL查询和SPARQL更新。
    官网下载最新版本的fuseki压缩包,并解压到目标文件夹。在apache-jena-fuseki的目标文件夹下用命令行输入命令java -jar fuseki-server.jar,启动Fuseki服务。接着,打开浏览器,访问:http://localhost:3030,创建一个持久化数据库,并上传/data/aifoodtime_ntriples.nt三元组数据集,完成知识库的准备。
  • JAVA:运行fuseki需要java环境,如果没有安装JAVA8.0及以上版本,请前往oracle官网上下载最新版本的JDK然后安装,并配置环境路径。
    系统的流程为:解析输入的自然语言问句生成 SPARQL 查询,进一步请求后台基于 TDB 知识库的 Apache Jena Fuseki 服务, 得到答案。如果知识库中不存在问题的答案或者对于提出的自然语言问题无法理解,系统也会给出相应回复。

2.1可以提问的问题类型:

  1.某一类菜包含的具体菜品;
  2.某一个特色菜品的所有原料;
  3.某一个特色菜品的主料,辅料和配料;
  4.某一个特色菜品的特点;
  5.某一个特色菜品的制作步骤。

2.2 使用方法:

在已经启动Fuseki服务的情况下,命令行输入python query_main.py,就可以启动问答系统,开始问答过程:

cd KBQA
python query_main.py

问答示例1:

请提问:
水煮鱼类包括哪些菜?

小吃:
家常水煮鱼、小清新版水煮鱼、水煮鱼、香辣水煮鱼、麻辣水煮鱼

问答示例2:

请提问:
如何制作水煮鱼?

小吃:
1: 准备食材。2: 将鱼清洗干净后切片,鱼骨和鱼肉分开放。黄豆芽去掉须根、辣椒剪成段、姜切片。接下来开始腌鱼。鱼骨中放入三四片姜、一勺料酒、半勺盐腌制二十分钟。鱼片中放入半只蛋清、一勺料酒、一勺淀粉、一小勺白胡椒粉后抓匀腌制二十分钟。 3: 锅中加适量清水,水烧开后将黄豆芽放入锅中,再放少许盐。待黄豆芽煮熟捞出放入大碗内。4: 锅中倒入少许油,油热后放入一勺郫县豆瓣酱和姜片煸炒出红油(喜欢更辣一点口感的,可以往锅里再放一些干辣椒煸炒出香味)。5: 往锅里倒入适量的热水。6: 将鱼骨放入锅内,大火烧开后转小火炖10分钟。(这个时候可以尝一下鱼汤的味道,然后根据自己的口味选择要不要放盐)鱼骨炖好后捞到装有黄豆芽的大碗中。7: 将鱼肉一片一片的放入锅中。(千万不要搅动,如需要,只要轻轻晃动几下锅即可)8: 煮开后立即将鱼肉捞出,再盛一些汤到碗中。9: 换一只干净的锅中,锅中倒入40毫升左右的食用油,然后将干辣椒和花椒放入锅中,小火煸炒至辣椒红亮,花椒出香味即可捞出放到鱼肉上。10: 将锅中剩下的油大火烧至稍稍冒烟,然后关火,把油淋在鱼肉上即可。

问答示例3:

请提问:
鱼香肉丝的特点是什么?

小吃:
难度: 简单、耗时: 二十分钟、口味: 鱼香、工艺: 炒

问答示例4:

请提问:
山楂红烧肉的主料具体都是哪些啊?

小吃:
香叶: 3片、五花肉: 400克、八角: 2个、冰糖: 20克、姜: 8克、山楂: 200克、桂皮: 4克、花椒: 20颗

问答示例5:

请提问:
可乐鸡翅需要哪些食材?

小吃:
料酒、姜、葱、八角、可乐、鸡翅中

问答示例6:

请提问:
水煮肉片的辅料是什么?

小吃:
油菜: 适量、绿豆芽: 适量、金针菇: 适量

问答示例7:

请提问:
今天天气如何?

小吃:
这个问题我真是无法回答。

项目码源链接见文末

跳转链接点击

更多优质内容请关注公号&知乎:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。

标签:py,水煮鱼,知识,KBQA,可视化,图谱,菜品,问答
From: https://www.cnblogs.com/ting1/p/17541706.html

相关文章

  • jvm学习-垃圾回收的一些知识点
    部分图片和描述来自参考资料,非原创对象回收处理过程如何标定对象是否存活两种方法:引用计数方法可达性分析算法引用计数方法就和ReentrantLock可重入锁一样,内部维系着一个state,当同个线程重入结束后就会归零,但是这种方法有点问题publicstaticvoidte......
  • js基础运算符 每天一个小知识(二)
    你理解的js自增自减要怎么运算呢?接下来我们用两个小例子掌握js自增自减,一起学习吧!4.自增自减:符号在前:先运算,后使用符号在后:先使用,在运算例子1、varn=1;varsum=n+++++n+n--+++n+n--+--n+n++;//1+3+3+3+3+1+1consol......
  • Java 基础知识
    Java基础知识1.Java语言有哪些特点简单易学、有丰富的类库面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高)与平台无关性(JVM是Java跨平台的根本)可靠安全支持多线程2.面向对象和面向过程的区别面向过程:是分析解决问题的步骤,然后用按说......
  • labview和西门子plc通信 知识点和领域范围:LabVIEW、西门子PLC、
    labview和西门子plc通信知识点和领域范围:LabVIEW、西门子PLC、通信LabVIEW是一种图形化编程环境,用于控制和测量系统的设计和开发。它提供了一个直观的界面,使工程师能够通过拖放和连接图标来创建程序。西门子PLC(可编程逻辑控制器)是一种常用的工业自动化设备,用于控制和监控生产过程......
  • 科目一知识点,自己写着玩~
    C1 可以开C2C3C4新政策说的C6 指的是轻型牵引挂车  年龄适用范围为:20~60周岁 且必须有小型汽车、小型自动挡汽车驾驶证一年以上资质。小型汽车的年龄要求:18周岁~~无上限。另外要说的一点是:70岁以上的人群考驾照要经过记忆力、判断力、反应力的测试,每年都要体检。而......
  • c#基础知识篇-Monitor
    作用提供同步访问对象的机制,实现线程同步。命名空间&程序集命名空间:System.Threading程序集:System.Threading.dll常用属性&方法Monitor.Enter(Object)在指定对象上获取排它锁Monitor.Exit(Object)释放指定对象上的排它锁Monitor.Pulse通知等待队列中的线程锁定对象状......
  • IP基础知识
    一.简单局域网局域网:一般称为内网简单局域网的构成:交换机,网线,PC(其他IT终端)交换机:用来组建内网的局域网设备二.IP地址一个唯一标识,是一段网络编码(二进制),由32位组成;一段IP地址分成4个组合:8个数字加一点(.)因为IP地址太长,便于记忆,会转为10进制,称这种方式为点分十进制 IP地址的......
  • 阵列信号处理及matlab仿真-------波束形成算法基础知识以及MMSE、MSNR和LCMV的MATLAB
    上一篇《阵列信号处理及MATLAB仿真-----阵列信号绪论》里面说了阵列信号处理研究的四个主要问题:波束形成技术、空间谱估计、信号源定位、信源分离。接下来我们就波束形成来做一个详细的学习。一、波束形成的定义:首先说一下它的物理意义,阵列天线的方向图是全方向的,但是......
  • 区块链基础知识
    开始学习区块链了,记录一下区块链入门的一些基础知识。1. 区块链区块链本质是一种多方共享的分布式账本技术,存储于其中的数据或信息,具有“不可伪造、不可篡改、全程留痕、可以追溯、公开透明、集体维护”等特征。2.区块区块链中一套分布式账本存储的基本数据结构、是在区块链......
  • 手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实
    手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、CypherCheetsheet详细教学等效果预览:1.知识图谱存储方式知识图谱存储方式主要包含资源描述框架(ResourceDescriptionFramework,RDF)和图数据库(GraphDatabase)。1.1资源描述框......