智能問答應當是未來智能化發展中人機交互的主要方式,目前無論是在開源社區或者企業應用中,都有廣泛的應用。
項目名稱是Iveely.Brain,本次源碼可以在Github的這里下載,,是主要用於聊天服務的一個項目,本次開源版本的示例如下所示:
整個開源版本分為兩種模式:本地模式和遠程模式。本地模式是開發環境的調試模式,主要用於測試准確性問題;遠程模式主要應用於正式線上環境,通過TCP(默認端口8001)的方式提供對外服務(也可改為restful API的形式)。智能問答的核心在於聊天語料和知識推理兩個部分,由於知識推理涉及到數據分析以及知識圖譜的構建,因此本次開源版本重點在於聊天語料庫。當您下載源碼之后,可以通過修改corpus中的example.aiml改進聊天語料,如下圖所示:
AIML格式是一種人工智能標記語言,聊天語料主要包括如下幾種類型:
(1) 直接匹配模式
<category> <pattern>你好</pattern> <template>你好!</template> </category>
此種模式將會在命中“你好”之后直接返回“你好!”。
(2) 隨機匹配模式
<category> <pattern>今天天氣真好</pattern> <template> <random> <li>是呀,天氣不錯。</li> <li>要不出去走走?</li> <li>希望每天天氣都這么好!</li> </random> </template> </category>
隨機模式在命中Pattern之后,將會從template中的li元素中隨機選擇一條返回。
(3) 記憶替代模式
<category> <pattern>你好,我是*</pattern> <template>你好,很高興認識<star index="1"/>。 </template> </category>
記憶替代模式,將會在template中替換star,例如在問“你好,我是劉凡平”的時候,則“*”指向的內容是“劉凡平”,則返回結果為“你好,很高興認識劉凡平“。<star index=”1”/>表示取用戶模糊匹配的第一個*號的內容。
(4) 遞歸推理模式
<category> <pattern>您好,我是*</pattern> <template> <srai>你好,我是<star index="1"/>。 </srai> </template> </category>
遞歸模式采用”srai“標識,表示不直接返回答案,而是將問題替換為另外一個問題繼續尋找。例如用戶問”您好,我是劉凡平”的時候,template中將會替換為”你好,我是劉凡平“的問題,這個問題將會再次在AIML中進行匹配,直至直接返回結果”你好,很高興認識劉凡平“。
(5) 約束匹配模式
<category> <pattern that="你好">你好啊</pattern> <template> <random> <li>你好,我們剛剛說過一遍了。</li> <li>你好,客氣啥!</li> </random> </template> </category>
上述示例中,並不會直接命中”你好啊“,而是在上一次是匹配的”你好“,當又匹配了”你好啊“才會命中上述category,即上次和當前次的連續匹配。
擴展
上述過程是按照傳統的方式進行模式匹配,聊天語料庫的構建是一個復雜的過程,可以通過互聯網的數據進行分析,借助分布式計算平台分析有效數據,形成新的語料庫,將聊天機器人的后端服務擴展。在補充內容源以及加入知識圖譜相關的分析之后,可以將該服務應用於移動客戶端,改造后的結果如下圖所示(對話圖中,左邊為聊天機器人,右邊為用戶的提問):
Iveely Brain是Iveely搜索引擎下基於上下文搜索服務的應用,交互式搜索以及精准性問答是搜索引擎在未來一段時間中的發展趨勢,目前行業中出現了不少聊天機器人,但是真正能夠把聊天機器人做好的要么是大型互聯網公司(Facebook、百度等一類),要么是占據行業優勢的企業(銀行、政務等一類)。Iveely是“I void everything,except love you!”的簡寫,包括了Iveely.Computing\Iveely.Database\Iveely.Framework等,或者直接在Maven中搜索“iveely”獲得對項目的直接使用。
最后,謝謝一直對Iveely搜索不斷關注的同學!