?????????在上一篇文章中灰署,我簡(jiǎn)單的敘述了下人機(jī)交互的基本內(nèi)容以及人機(jī)交互中涉及到的NLP技術(shù)局嘁,接下來(lái)的文章中,我將側(cè)重于實(shí)踐部分悦昵,本篇文章將從一個(gè)簡(jiǎn)單的DEMO(其實(shí)也不是那么簡(jiǎn)單)——一個(gè)基于知識(shí)圖譜和AIML模板的知識(shí)問(wèn)答肴茄。實(shí)際上基于模板的知識(shí)庫(kù)問(wèn)答在工業(yè)中比較常見(jiàn)(經(jīng)過(guò)一定調(diào)研),接下來(lái)但指,我將從知識(shí)圖譜和問(wèn)答架構(gòu)這兩方面的建立開(kāi)始論述寡痰。這個(gè)框架見(jiàn)下圖。
? ? ? ? ?這個(gè)知識(shí)問(wèn)答是我基于一個(gè)電影知識(shí)圖譜做的棋凳,其實(shí)這個(gè)小Demo的實(shí)現(xiàn)時(shí)間是在金融圖譜文章之前做的拦坠,所以用的是一個(gè)比較簡(jiǎn)單的圖譜,而且這個(gè)圖譜也是參照別人的例子做的剩岳,在這里先把數(shù)據(jù)貼出來(lái)贞滨,和上篇文章一樣,把這個(gè)數(shù)據(jù)導(dǎo)入mysql,然后導(dǎo)入neo4j卢肃,就是下面這個(gè)樣子:
這部分內(nèi)容和上一篇一樣疲迂,甚至更簡(jiǎn)單才顿,這里就不詳細(xì)說(shuō)明了,這篇博客主要講一下我使用AIML的使用過(guò)程尤蒿。
啥是AIML郑气?
????????AIML,全名為Artificial Intelligence Markup Language(人工智能標(biāo)記語(yǔ)言)腰池,是一種創(chuàng)建自然語(yǔ)言軟件代理的XML語(yǔ)言,是由Richard Wallace和世界各地的自由軟件社區(qū)在1995年至2002年發(fā)明的示弓。
具體的AIML的語(yǔ)法就不詳細(xì)講了奏属,具體的參見(jiàn)這篇博客https://blog.csdn.net/woowindice/article/details/302298囱皿,如果想了解更多這部分內(nèi)容可以去網(wǎng)上搜,我的理解就是一個(gè)利用模板進(jìn)行問(wèn)答耕渴,對(duì)話的工具橱脸。
對(duì)于AIML的安裝分苇,這里建議不要安裝中文版本组砚,直接pip install aiml,然后將中文分詞然后轉(zhuǎn)換為Unicode編碼格式糟红。
2.接下來(lái)講一下我們?cè)O(shè)置的實(shí)現(xiàn)功能
KGQA支持查詢的問(wèn)題(提問(wèn)模式不唯一):
????????(1).單人電影查詢:
? ????????????????????????? 章子怡演過(guò)什么電影?
? ? ? ?(2).雙人電影查詢:
? ? ????????????????????????周星馳和鞏俐合作過(guò)什么電影柒爸?
????????(3).電影評(píng)分查詢:
? ????????????????????????? 夜宴這部電影多少分捎稚?
????????(4).電影介紹查詢:
? ????????????????????????? 功夫講的什么
????????(5).電影上映日期查詢
? ? ? ? (6).電影主要演員查詢
先來(lái)展示一下最終的實(shí)驗(yàn)效果:
接下來(lái)講一下AIML的使用過(guò)程:
1.啟動(dòng)AIML并調(diào)用模板庫(kù):
2.輸入問(wèn)題,AIML響應(yīng)催什,搜索模板庫(kù)做出回應(yīng)
代碼真就這么簡(jiǎn)單蒲凶,實(shí)際上AIML的模板在這里一次性完成了意圖識(shí)別和實(shí)體識(shí)別兩個(gè)任務(wù)旋圆,我舉個(gè)例子:
1.輸入“甄子丹和周潤(rùn)發(fā)合作過(guò)什么電影”
2.分詞結(jié)果:
3.接下來(lái)AIML就會(huì)去剛才加載的模板庫(kù)里尋找這句話匹配的模板灵巧,就是下面這個(gè):
? ? ? ? 這里返回的response就是這個(gè)
? ? ? ? 這里面0代表就是意圖艾君,%就是我自己在模板中設(shè)置的一些符號(hào),用來(lái)提取實(shí)體蹬癌。
4.根據(jù)意圖識(shí)別結(jié)果查詢圖譜
對(duì)應(yīng)的查詢語(yǔ)句長(zhǎng)這樣:
最后就得到結(jié)果啦!董济!
????????這只是一個(gè)相對(duì)簡(jiǎn)單的Demo虏肾,用于入門AIML吧欢搜,實(shí)際上模板的方法挺實(shí)用的,畢竟生成式的問(wèn)答在工程上的難度成本都挺大的吹埠,后面我會(huì)介紹sequence to sequence模型粘都,就是一個(gè)經(jīng)典的生成式模型刷袍!