智能問答應當是將來智能化發展中人機交互的主要方式,目前不管是在開源社區或者企業應用中,都有普遍的應用。git
項目名稱是Iveely.Brain,本次源碼能夠在Github的這裏下載,,是主要用於聊天服務的一個項目,本次開源版本的示例以下所示:github
整個開源版本分爲兩種模式:本地模式和遠程模式。本地模式是開發環境的調試模式,主要用於測試準確性問題;遠程模式主要應用於正式線上環境,經過TCP(默認端口8001)的方式提供對外服務(也可改成restful API的形式)。智能問答的核心在於聊天語料和知識推理兩個部分,因爲知識推理涉及到數據分析以及知識圖譜的構建,所以本次開源版本重點在於聊天語料庫。當您下載源碼以後,能夠經過修改corpus中的example.aiml改進聊天語料,以下圖所示:後端
AIML格式是一種人工智能標記語言,聊天語料主要包括以下幾種類型:restful
(1) 直接匹配模式dom
<category> <pattern>你好</pattern> <template>你好!</template> </category>
此種模式將會在命中「你好」以後直接返回「你好!」。maven
(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搜索不斷關注的同窗!