天天看點

一個基于智能問答的聊天機器人實作

 智能問答應當是未來智能化發展中人機互動的主要方式,目前無論是在開源社群或者企業應用中,都有廣泛的應用。

     項目名稱是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搜尋不斷關注的同學!