乐趣区

关于challenge:领域知识图谱中式菜谱知识图谱实现知识图谱可视化和知识库智能问答系统

畛域常识图谱 - 中式菜谱常识图谱:实现常识图谱可视化和知识库智能问答零碎(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:

    请发问:今天天气如何?小吃:这个问题我真是无法回答。

我的项目码源链接见文末

跳转链接点击

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

本文参加了 SegmentFault 思否写作挑战「摸索编码世界之旅 – 记我的第一份编程工作」,欢送正在浏览的你也退出。

退出移动版