中式菜譜知識圖譜:實現(xiàn)知識圖譜可視化和知識庫智能問答系統(tǒng)
領域知識圖譜-中式菜譜知識圖譜:實現(xiàn)知識圖譜可視化和知識庫智能問答系統(tǒng)(KBQA)
A knowledge graph for Chinese cookbook(中式菜譜知識圖譜),可以實現(xiàn)知識圖譜可視化和知識庫智能問答系統(tǒng)(KBQA)
效果展示:


本項目開發(fā)的系統(tǒng)名稱為AI Food Time,中文名為愛食光。如需體驗可視化功能可直接訪問點擊可視化功能。
通過收集網上完全公開的有關中式菜譜的數(shù)據,經過數(shù)據清洗和分析,轉換為知識圖譜的存儲結構,并提供可視化展示與搜索和智能問答等功能,為熱愛美食與烹飪的人們提供方便快捷的中式菜譜服務,并以知識圖譜的形式直觀顯示出不同菜品的關系及所用原料,在生活中具有很大的實際應用需求,包括:
一類菜品的不同具體做法,例如水煮魚包括麻辣水煮魚、小清新版水煮魚和家常版水煮魚等;
通過菜品與食材的關聯(lián)關系,可以查詢家中現(xiàn)有食材可以烹飪哪些菜品;
可以直接顯示出每種菜品所需主料,輔料,配料及其具體數(shù)量和烹飪方法,與網上的一些菜譜網頁相比更加簡單直觀;
可視化能夠對各種菜品及關聯(lián)關系有一個全局的認識,并能夠顯示每種菜品對應的圖片;
智能問答系統(tǒng)可采用自然語言進行提問,系統(tǒng)反饋答案結果。
項目碼源鏈接見文末
跳轉鏈接點擊
1. 可視化展示及搜索:


同一類實體用相同顏色的節(jié)點表示,鼠標位于某個節(jié)點上方時顯示其相關聯(lián)的其它實體和之間的關系名稱;
具有同一類實體顯示開關,節(jié)點顯示模式轉換,并支持搜索功能;
每種菜品的信息欄中顯示菜品對應的成品圖片,并利用entities_aglin.py進行了實體對齊,消除了食品原料中的冗余信息。
mini版:包含10大類,50種菜品之間的關聯(lián)關系,包括菜品制作的各種食材和制作步驟,輕量級的mini版同時支持電腦和手機瀏覽器打開,如需體驗可直接進入訪問入口。
pro版(開發(fā)中):包含362大類,八千多種菜品之間的關聯(lián)關系,包括菜品制作的各種原料和制作步驟。
2. 智能問答系統(tǒng)(KBQA):
基于構建的中式菜譜知識圖譜,設計知識庫問答KBQA系統(tǒng),根據提出的和菜品有關的問題,系統(tǒng)自動給出答案,對于無法給出回答的情況系統(tǒng)也能進行回應。
文件夾結構/data:包含三元組數(shù)據aifoodtime_ntriples.nt/externaldict:包含所有菜品和原料的實體列表entitieslist.txtquery_main.py:KBQA主函數(shù)jenasparqlendpoint.py:啟動jena_sparql服務question2sparql.py:自然語言問題到SPARQL查詢的轉換question_temp.py:自然語言到SPARQL的問題模板vizdata2entities.py:從可視化存儲數(shù)據到實體列表文件的轉換word_tagging.py:中文分詞,使用的是jieba

基于構建的中式菜譜知識圖譜,針對其中和菜品有關的各類問題,智能問答系統(tǒng)可以給出對應問題的答案。
本項目中的智能問答機器人名為小吃。
使用本系統(tǒng)需要預裝軟件:
Apache Jena Fuseki:Jena Fuseki是一個SPARQL服務,通過HTTP提供使用SPARQL協(xié)議的REST式SPARQLHTTP更新,SPARQL查詢和SPARQL更新。
從官網下載最新版本的fuseki壓縮包,并解壓到目標文件夾。在apache-jena-fuseki的目標文件夾下用命令行輸入命令java -jar fuseki-server.jar,啟動Fuseki服務。接著,打開瀏覽器,訪問:http://localhost:3030,創(chuàng)建一個持久化數(shù)據庫,并上傳/data/aifoodtime_ntriples.nt三元組數(shù)據集,完成知識庫的準備。JAVA:運行fuseki需要java環(huán)境,如果沒有安裝JAVA8.0及以上版本,請前往oracle官網上下載最新版本的JDK然后安裝,并配置環(huán)境路徑。 系統(tǒng)的流程為:解析輸入的自然語言問句生成 SPARQL 查詢,進一步請求后臺基于 TDB 知識庫的 Apache Jena Fuseki 服務, 得到答案。如果知識庫中不存在問題的答案或者對于提出的自然語言問題無法理解,系統(tǒng)也會給出相應回復。
2.1可以提問的問題類型:
1.某一類菜包含的具體菜品;
2.某一個特色菜品的所有原料;
3.某一個特色菜品的主料,輔料和配料;
4.某一個特色菜品的特點;
5.某一個特色菜品的制作步驟。
2.2 使用方法:
在已經啟動Fuseki服務的情況下,命令行輸入python query_main.py,就可以啟動問答系統(tǒng),開始問答過程:
cd KBQA
python query_main.py
問答示例1:
請?zhí)釂枺?水煮魚類包括哪些菜?
小吃:
家常水煮魚、小清新版水煮魚、水煮魚、香辣水煮魚、麻辣水煮魚
問答示例2:
請?zhí)釂枺?如何制作水煮魚?
小吃:
1: 準備食材。2: 將魚清洗干凈后切片,魚骨和魚肉分開放。黃豆芽去掉須根、辣椒剪成段、姜切片。接下來開始腌魚。魚骨中放入三四片姜、一勺料酒、半勺鹽腌制二十分鐘。魚片中放入半只蛋清、一勺料酒、一勺淀粉、一小勺白胡椒粉后抓勻腌制二十分鐘。 3: 鍋中加適量清水,水燒開后將黃豆芽放入鍋中,再放少許鹽。待黃豆芽煮熟撈出放入大碗內。4: 鍋中倒入少許油,油熱后放入一勺郫縣豆瓣醬和姜片煸炒出紅油(喜歡更辣一點口感的,可以往鍋里再放一些干辣椒煸炒出香味)。5: 往鍋里倒入適量的熱水。6: 將魚骨放入鍋內,大火燒開后轉小火燉10分鐘。(這個時候可以嘗一下魚湯的味道,然后根據自己的口味選擇要不要放鹽)魚骨燉好后撈到裝有黃豆芽的大碗中。7: 將魚肉一片一片的放入鍋中。(千萬不要攪動,如需要,只要輕輕晃動幾下鍋即可)8: 煮開后立即將魚肉撈出,再盛一些湯到碗中。9: 換一只干凈的鍋中,鍋中倒入40毫升左右的食用油,然后將干辣椒和花椒放入鍋中,小火煸炒至辣椒紅亮,花椒出香味即可撈出放到魚肉上。10: 將鍋中剩下的油大火燒至稍稍冒煙,然后關火,把油淋在魚肉上即可。
問答示例3:
請?zhí)釂枺?魚香肉絲的特點是什么?
小吃:
難度: 簡單、耗時: 二十分鐘、口味: 魚香、工藝: 炒
問答示例4:
請?zhí)釂枺?山楂紅燒肉的主料具體都是哪些?。?
小吃:
香葉: 3片、五花肉: 400克、八角: 2個、冰糖: 20克、姜: 8克、山楂: 200克、桂皮: 4克、花椒: 20顆
問答示例5:
請?zhí)釂枺?可樂雞翅需要哪些食材?
小吃:
料酒、姜、蔥、八角、可樂、雞翅中
問答示例6:
請?zhí)釂枺?水煮肉片的輔料是什么?
小吃:
油菜: 適量、綠豆芽: 適量、金針菇: 適量
問答示例7:
請?zhí)釂枺?今天天氣如何?
小吃:
這個問題我真是無法回答。
項目碼源鏈接見文末
[跳轉鏈接點擊]:https://blog.csdn.net/sinat_39620217/article/details/131641136

更多優(yōu)質內容請關注公號&知乎:汀丶人工智能;會提供一些相關的資源和優(yōu)質文章,免費獲取閱讀。