AIML元素详细说明
- 目錄
- 前言:
- 1、簡(jiǎn)介
- 2、詳細(xì)說(shuō)明
- 總結(jié):
目錄
前言:
智能客服客戶咨詢功能的實(shí)現(xiàn)主要依靠的就是Python的AIML庫(kù),這里就先介紹下AIML。
詳細(xì)的使用教程可參考:https://github.com/andelf/PyAIML
目前大部分AIML只支持Py2.7版本并且不支持中文,即使有支持Py3且支持中文的版本,AIML的一些功能也有一些缺陷,但是黃天不負(fù)有心人,經(jīng)過(guò)博主不斷的搜尋,最終找到了一款算是比較穩(wěn)定的支持Py3版本的AIML。
地址:https://github.com/Shuang0420/aiml
后期博主會(huì)將自己的項(xiàng)目發(fā)布出來(lái),到時(shí)候大家有興趣的也可以參考下。
1、簡(jiǎn)介
AIML是Artificial Intelligence Markup Language的縮寫(xiě), 用于描述一類稱為AIML的對(duì)象,同時(shí)部分描述了計(jì)算機(jī)程序處理這些對(duì)象時(shí)的表現(xiàn)。AIML是XML語(yǔ)言(可擴(kuò)展標(biāo)記語(yǔ)言)的衍生。
AIML對(duì)象是由topic和category單元組成的,格式化或未格式化的數(shù)據(jù)均可。格式化的數(shù)據(jù)是由字符組成的,其中有的組成符號(hào)數(shù)據(jù),有的構(gòu)成AIML元素。AIML元素將應(yīng)答數(shù)據(jù)封裝在文檔中。包含這些元素的字符數(shù)據(jù)有可能被AIML解釋器格式化,也有可能在之后的響應(yīng)中處理。
aiml中的元素不區(qū)分大小寫(xiě)
2、詳細(xì)說(shuō)明
1、think元素
型如: <think><set name="topic">Me</set></think>放置在template元素里面,表示一旦用戶的輸入匹配到該category時(shí),再回復(fù)應(yīng)答的同時(shí),給一個(gè)變量賦值,這里也就是把Me記在腦子里,以后就可以用<get name=”topic”/>來(lái)取出先前記住的內(nèi)容。
2、<star/>表示*
比如有一個(gè)匹配模式是<pattern>* 你 好 *<pattern>;這里pattern元素里的匹配模式是用*號(hào)表示任意匹配的,但在其他元素里面不能用*號(hào),而用<star/>這個(gè)元素來(lái)表示。
3、<srai>元素
表示<srai>里面的話會(huì)被當(dāng)作是用戶輸入,從新查找匹配模式,直到找到非<srai>定義的回復(fù)。例如:
<srai>我 是 <star/></srai>,那么機(jī)器人會(huì)把“我 是 *”當(dāng)作是用戶輸入來(lái)從新查找匹配模式。(PS:srai不能很好的匹配中文)
4、<condition>元素(condition元素即為做選擇操作時(shí)使用的元素,類似于if-else語(yǔ)句。)
放在template元素里面,可以有多個(gè)condition元素,但不能嵌套(目前還不支持),有3種形式:
Name是預(yù)先定義的變量,第一種表示name變量的值如果和value相等,回復(fù)內(nèi)容就包括”你好”;第二種表示name變量的值如果里面包含value這個(gè)字符串,回復(fù)內(nèi)容就包括“你好”;第三種表示name變量的值如果存在value的值,回復(fù)內(nèi)容就包括“你好”(這個(gè)什么意思還不明確)
舉個(gè)使用例子:
a. 情況一:如果事先用think設(shè)置了變量“用戶名字”,而且等于“張三”,那么用戶接受到的回復(fù)內(nèi)容是:你好阿!你又來(lái)了阿;)
b.情況二:如果事先沒(méi)有定義或者變量“用戶名字”的值不等于“張三”,那么用戶接受到的回復(fù)內(nèi)容是:你好阿!
寫(xiě)法有一下幾種:
這里最后一個(gè)li元素表示默認(rèn)的情況;即找不到condition相匹配時(shí),就用默認(rèn)的。
6、<gender>元素
替換性別以及代名詞,例如:
將被替換成:He told her to take a hike,跟性別有關(guān)的單詞都將被替換,中文怎么處理不是很清楚。
7、<get name=””名字/>
即得到name的值。
8、<gossip>元素
用來(lái)把改元素里面的內(nèi)容保存到gossip.log文件里。
9、<if>元素
判斷元素,有以下形式:
10、<input>表示用戶輸入
例如: <input index="2"/>將輸出用戶倒數(shù)第2次的輸入,看如下對(duì)話: 用戶:好阿 機(jī)器人:你也好,你叫什么名字? 用戶:我叫黑山 機(jī)器人:呵呵,你好黑山。 如果有aiml文件里有片斷: <category> <pattern>嘿 嘿</pattern> <template> <gossip>你剛才說(shuō):“<input index="2"/>”?</gossip> </template> </category> 如果這個(gè)時(shí)候用戶輸入“嘿嘿”,那么機(jī)器人將回復(fù):你剛才說(shuō):“我叫黑山”? Index屬性的數(shù)字表示倒數(shù)第幾句話,1:倒數(shù)第一句,2:倒數(shù)第2句,依此類推。11、<learn filename=”xxx.aiml”>元素
表示讓機(jī)器人學(xué)習(xí)某個(gè)aiml文件。
12、<li></li>元素
可以在random元素或condition等元素當(dāng)中使用,表示一個(gè)列表;
13、<pattern>表示匹配模式
里面的內(nèi)容必須大寫(xiě),可以有星號(hào)* 或下劃線_,星號(hào)表示匹配所有,任意情況;下劃線的意義跟星號(hào)一樣,除了不能匹配字典里面Z后面的字母。
14、<person>和<person2>
第一個(gè)是把第一人稱轉(zhuǎn)換成第3人稱;第2個(gè)是把第一人稱轉(zhuǎn)成第2人稱。<person/>等于 <person><star/></person>
15、<random>隨機(jī)元素
一般和<li>一起使用,表示從列表里隨機(jī)取一個(gè)。
16、<sentence>元素用來(lái)格式化句子
比如: <sentence>this is some kind of sentence test.</sentence> 可以格式化成:This is some kind of sentence test.即把句子首字母大寫(xiě),還可以添加標(biāo)點(diǎn)符號(hào)等。如: <category><pattern>你是誰(shuí)</pattern><template><sentence>你好我是聊天機(jī)器人小君</sentence></template> </category>17、<star/>表示星號(hào)
已經(jīng)不推薦使用,只針對(duì)0。9版本,目前一般要加index屬性來(lái)使用,
18、<system><system>元素
表示調(diào)用系統(tǒng)函數(shù),
20、<that>元素
表示先前機(jī)器人說(shuō)的話,例如: <category> <pattern>好</pattern> <that>一 起 聊 聊 電 影 好 嗎 *</that> <template>那你喜歡什么電影那?</template> </category> 即:如果機(jī)器人先前問(wèn)用戶“一起聊聊電影好嗎?”,而且現(xiàn)在用戶回答了“好”,那么匹配正確,回復(fù)內(nèi)容為:“那你喜歡什么電影那?” 如果要取前面的前面機(jī)器人的話,可以用:<that index=”nx,ny”>,例如:<that index=”2,<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1”>表示取機(jī)器人倒數(shù)第2句的話,<that index=”2,1”>也等于<justbeforethat/>21、<thatstar index=”n”>元素
先前第n個(gè)機(jī)器人說(shuō)過(guò)的星號(hào)部分的話,
22、<think>
記錄用戶輸入且里面的內(nèi)容不回復(fù)給用戶。
23、<Topic name=”film”>元素
用來(lái)設(shè)置主題,例如: <aiml> <topic name="功夫"><category> <pattern> phrase </pattern> <that> phrase </that> <template> phrase </template> </category> </topic> </aiml> 只有當(dāng)前的topic系統(tǒng)變量是“功夫”時(shí)才會(huì)匹配到這里。24、<topicstar index=”n”>元素用來(lái)得到先前倒數(shù)第n次談?wù)摰闹黝}。
總結(jié):
個(gè)人感覺(jué)在業(yè)務(wù)咨詢模塊,包括在整個(gè)智能客服的項(xiàng)目中,這個(gè)AIML知識(shí)庫(kù)即用以上的這些語(yǔ)法組成的知識(shí)庫(kù)的設(shè)計(jì)是最重要、最耗時(shí)的工作,因?yàn)槿绻堰@個(gè)知識(shí)庫(kù)設(shè)計(jì)好,后面可以省去很多事情,但是如何才能設(shè)計(jì)好這個(gè)知識(shí)庫(kù)呢?這就是一個(gè)經(jīng)驗(yàn)問(wèn)題了,你除了需要有相關(guān)的盡可能多的數(shù)據(jù)外,還得了解咨詢業(yè)務(wù)中那些問(wèn)題是常見(jiàn)的,對(duì)于一些常見(jiàn)問(wèn)題你需要怎么去設(shè)計(jì)這個(gè)知識(shí)庫(kù)去匹配等等,最終你還需要熟悉整個(gè)AIML的標(biāo)簽以及如何將業(yè)務(wù)問(wèn)題最優(yōu)化的使用這些標(biāo)簽來(lái)表示(畢竟真實(shí)的業(yè)務(wù)咨詢場(chǎng)景出現(xiàn)的問(wèn)題會(huì)是各種各樣,一旦數(shù)據(jù)量大了之后,很有可能整個(gè)知識(shí)庫(kù)就會(huì)發(fā)生沖突,如輸入一個(gè)問(wèn)題,有兩個(gè)匹配的答案,那么這時(shí)系統(tǒng)就會(huì)崩潰。。。后面就會(huì)有一大堆的問(wèn)題接踵而來(lái))。所以感覺(jué)這部分跟技術(shù)關(guān)聯(lián)不是特別大,更多的是和業(yè)務(wù)關(guān)聯(lián)比較大。
總結(jié)
以上是生活随笔為你收集整理的AIML元素详细说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 注意:匿名函数调用直接加载函数名setI
- 下一篇: aix oracle 10.2.0.1