廣州市執(zhí)信中學 聶碩琳
智能聊天機器人的主要用于模擬人類對話或聊天,應用場景是客服坐席。它替代客服人員回答大量重復而且簡單的問題,反映速度比人要快很多,而且不會感到疲憊和厭煩。它唯一的需求是有電源供應。
聊天機器人分為目標驅(qū)動型和無目標驅(qū)動型。目標驅(qū)動型機器人的語料庫通常是固定的,因此針對用戶的提問,回答也是固定的,開發(fā)起來相對也比較簡單。微信群里的自動回復就屬于這一類機器人的應用場景。無目標驅(qū)動型機器人如微軟的小冰,賢二機器人等,它們可以回答用戶千奇百怪的問題,可以代替真人客服與用戶進行聊天。
一般來說,聊天機器人應該具備以下特點:
(1)正確回答問題。如果與人聊天時總是答非所問,那就不能稱之為智能聊天機器人。
(2)回答問題時使用正確的語法。在內(nèi)容完整,邏輯合理的基礎上,要保證語句的通順,符合語法規(guī)則,這樣才不會引起歧義。
(3)答案應變化多端,豐富多彩。既然是聊天機器人,就不能給人無聊的感受,應該通過不同的用詞和句法,使對話能夠完成,并解答用戶的疑問。這樣才能吸引更多的用戶使用聊天機器人。然而做到以上這幾點需要多種技術的結合,包括自然語言處理、大數(shù)據(jù)分析、機器學習等等。Google的ALICE便使用了這些技術。
1960年外國的科學家就提出“計算機要能用自然語言與人溝通”的設想。隨著科學技術的發(fā)展和移動互聯(lián)網(wǎng)的日新月異,各大互聯(lián)網(wǎng)公司推出了自己的智能聊天機器人,替代人工面對龐大的客服需求,使得聊天機器人成為人們關注的方向之一。國外聊天機器人的發(fā)展比較早,目前已經(jīng)有很多成熟的產(chǎn)品,比如蘋果的Siri, 用戶可以給Siri發(fā)布定時、打開應用等指令。 微軟的小冰可以與用戶進行有趣的聊天。還有Google的Alice,IBM的Watson等。聊天機器人在中國也有廣泛的應用,比如許多微信群,淘寶的客服,百度的度秘,科大訊飛的語音助手等都能提供智能聊天服務,極大地減少了人工成本。但是相較于國外,發(fā)展還是相對落后,主要原因是中文比較難處理,語料庫的積累也比較少。
在機器人的主要設計技術方面,目前比較主流的是基于人工模板和人工智能的兩種聊天機器人。
基于人工模板的聊天機器人制作最簡單,主要是通過人工錄入一些對話的模板,當有用戶提問時,會從這些模板中找出匹配的答案返回給用戶。這種技術的優(yōu)點是開發(fā)簡單,返回答案速度快,缺點是答案單一,人工成本高。
基于人工智能的聊天機器人是利用一些算法來生成答案,答案的準確度取決于算法的好壞。這種聊天機器人有自我學習的能力,隨著聊天次數(shù)的增多,答案也會越來越準確。這種聊天機器人的優(yōu)點是前期不需要人工輸入大量模板,答案較靈活,缺點是開發(fā)難度大,模型訓練復雜。這種聊天機器人制作的主要難點在于語料庫的積累,規(guī)則的匹配。
行為主義理論又稱為刺激-反應理論,這種理論認為通過對環(huán)境的“刺激”和對行為的“強化”,所有行為都可以被設計、創(chuàng)造乃至改變。另外,只要不斷地強化正確的反應,消除錯誤的反應,學習的效果就會越好。本文中提到的ALICE的AIML(人工智能標記語言)采用的就是“刺激-反應”理論,通過對輸入語句進行匹配和分析,也就是刺激,給出答案,即反應,從而使得答題內(nèi)容能夠正確地的表示并傳輸。
智能聊天機器人涉及多方面的技術,比如大數(shù)據(jù)分析、自然語言處理、機器學習等,這些都屬于人工智能的范圍。自然語言處理是智能聊天機器人的核心技術之一。機器人會根據(jù)用戶輸入的語句,進行分詞,然后和語料庫進行比對,然后返回預先設定的回答。機器人的語料庫越大,返回的答案越精確,這就涉及到了大數(shù)據(jù)技術。另外,機器人從這么龐大的語料庫中篩選獲取準確數(shù)據(jù)的過程,就使用了機器學習的算法,并且機器人還有自學習的能力,能通過和不同的人聊天,積累經(jīng)驗,會變得越來越智能,并能夠應付更多不同的提問。
自然語言處理是研究實現(xiàn)人與計算機之間用自然語言進行溝通的技術,涉及到語言學、數(shù)學、計算機科學等多種學科。自然語言處理的應用主要在聊天機器人、機器翻譯、搜索引擎等領域。自然語言處理在智能聊天機器人的開發(fā)中起著重要的作用。自然語言處理主要包括詞法分析、句法分析和語義分析三大部分。詞法分析的核心即分詞。句法分析就是對自然語言中句子的結構、語法進行分析,如辨別疑問句和感嘆句等。而語義分析則注重情感分析和整個段落的上下文分析,辨別一些字詞在不同的上下文中特定的語義和情感態(tài)度。
機器人的語料庫也叫知識庫,知識庫的設計要通過大量的調(diào)研,作為前期的語料儲備。在機器人與用戶溝通積累到一定程度后,機器人可以將這些聊天內(nèi)容儲存并分析,從而豐富語料庫。當機器人要回答問題時,要先對問題進行分詞,這就涉及到了分詞器。分詞器也分多種語言。常用的分詞技術有基于字符串的分詞算法,基于統(tǒng)計以及基于理解的分詞算法。分詞完成后,拿這些詞語與語料庫中的數(shù)據(jù)進行相似度計算,選擇相似度大的結果返回給用戶。
IBM給出了大數(shù)據(jù)的5V特點,分別是Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Veracity(真實性)。首先數(shù)據(jù)量要大,并且處理速度快,而數(shù)據(jù)格式、內(nèi)容多種多樣;通過對大數(shù)據(jù)的挖掘能得到少量數(shù)據(jù)得不到的有價值的信息;另外數(shù)據(jù)要真實可靠。
大數(shù)據(jù)分析是對大規(guī)模的數(shù)據(jù)進行分析的技術。大數(shù)據(jù)分析的流程一般分為數(shù)據(jù)收集、數(shù)據(jù)預處理、算法分析挖掘、產(chǎn)生結果、結果可視化這五步。其中數(shù)據(jù)收集是前提,數(shù)據(jù)預處理是將收集到的雜亂的數(shù)據(jù),按照一定格式存儲,并對無效數(shù)據(jù)進行過濾。算法分析挖掘時通過運用一些算法來處理這些數(shù)據(jù),產(chǎn)生有價值的信息,并作出預測,最后可視化是將結果以合適的方式展現(xiàn)出來,可以是統(tǒng)計圖,也可以是表格。
智能聊天機器人的語料庫積累到一定規(guī)模后,對語料庫的挖掘過程就可以稱之為大數(shù)據(jù)分析。語料庫的積累即是數(shù)據(jù)收集的過程。數(shù)據(jù)在存儲的過程中,可以進行初步的篩選,去掉無意義或重復的語句,保證語料庫的質(zhì)量。聊天機器人在收到請求后,會利用一些機器學習的算法從語料庫中搜集、挖掘可能的答案,最后將最適合的答案返回給用戶。
機器學習是人工智能的核心,在人工智能的各個領域都有應用。機器學習是機器研究獲取新知識的技術。機器學習分為監(jiān)督學習和無監(jiān)督學習,以及半監(jiān)督學習。監(jiān)督學習就是通過給定的有標簽的訓練集來訓練模型。無監(jiān)督學習是沒有給定有標簽的數(shù)據(jù)集,需要通過初始化,不斷地優(yōu)化模型。半監(jiān)督學習介于兩者之間,訓練集的標簽可能不是最終的標簽,只是一個中間結果。常用的機器學習算法有決策樹、關聯(lián)規(guī)則、人工神經(jīng)網(wǎng)絡等等。
智能聊天機器人在檢索答案的過程中往往會產(chǎn)生許多結果,并且會給這些結果打分,最后返回打分最高的結果。這個分值是在與人們聊天的過程中根據(jù)人們的反饋積累下來的,所以智能聊天機器人模型的訓練是有監(jiān)督的。
ALICE第一個版本是由Richard S.Wallac于1995年開發(fā)完成的,先后有300多人為其做出貢獻,目前存儲四萬多條知識分類,可以支持英語、德語、法語等多種語言,現(xiàn)在ALICE在問答系統(tǒng)、智能導航、網(wǎng)站服務等系統(tǒng)中都有廣泛的應用。
ALICE具有豐富的標簽,算法也并不復雜,主要采用的是模式匹配的方法。
ALICE有兩個核心的模塊:AIML語料庫和Chatterbean引擎。AIML即人工智能標記語言,是基于XML發(fā)展的,采用了簡單的模式匹配和“刺激-反應”理論。Chatterbean使用JAVA語言開發(fā),該引擎負責處理用戶的輸入,并對AIML進行解析。
AIML的標簽主要有
ALICE運行過程中,所有AIML文件將以多叉樹的形式組織成“Graphmastert”對象,加載到內(nèi)存中。Graphmastert由一系列的Nodemapper節(jié)點組成。Graphmastert即根節(jié)點,每個子節(jié)點是一個單詞或者一個通配符,順序根據(jù)pattern中的位置排列。所有pattern的根節(jié)點相同,從而使得機器人擁有一個強大的知識庫。每個葉子節(jié)點包含一個template,即對pattern的應答。當用戶的問題經(jīng)過規(guī)范化預處理后,與pattern匹配成功后將返回對應的葉子節(jié)點。
ALICE的工作流程分為四步:
(1)初始化。將AIML文件知識庫載入內(nèi)存。
(2)處理用戶輸入。接收到用戶的輸入請求后,通過提取關鍵詞,替換,去除噪聲等方式為下一步的問題查詢推理做準備。
(3)問題查詢推理。問題推理是ALICE工作的核心步驟。主要是通過與規(guī)則進行逐步匹配,對問題進行推理定位。
(4)模板處理。主要是對上一步的問題進行完善。得到最可能的答案。
ALICE的優(yōu)點在于與自然語言的匹配及上下文語境的理解,以及語料庫龐大,知識容易擴展。但在中文處理問題上,ALICE并不成熟,因為漢語不像英語等語言,用空格或其他標記分詞,這就加大了ALICE對中文支持的難度。對漢語的分詞采用一般匹配法、詞頻統(tǒng)計法等。另外對同義句的處理也是一大難點。
本程序旨在實現(xiàn)人與機器人的聊天對話,目的是可以隨意聊天,好玩。比如機器人可以回答“你好”“現(xiàn)在幾點了”等問題。
本程序在Windows操作系統(tǒng)下開發(fā),使用JAVA語言,運用Eclipse IDE,JDK版本為1.8。
本程序的相關技術主要包括兩個部分:
(1)AIML語料庫的設計
AIML基于xml格式標簽,AIML的基本單位是category,即類別。每一類別包括一個輸入和一個輸出。問題也叫作刺激,被稱為template模式。AIML使用
(2)Chatterbean引擎的使用
Chatterbean是使用純Java語言開發(fā)的,是一個免費的軟件,適用于AIML1.0標準。JAVA程序中并不支持javascript,但AIML中可以支持javascript。Chartterbean使用了Rhino來使得Java可以操作javascript,從而支持了交互模式。
源碼結構如圖所示。主要包含三部分。
(1)Bitoflife包:機器人的核心包,其中包含了AIML及Chatterbean引擎源代碼。
(2)Bots包:其中idiom.aiml是自定義的AIML。
Substitutions.xml存儲了替換詞,如輸入what’s your name, 和輸入what is your name, 都能得到正確的回答,是因為配置了:
“
context.xml用于配置系統(tǒng)的上下文,設置了應用的屬性,如
Splitter.xml用于配置詞匯的分隔符,如
(3) Src包:Chat.java中包含了main程序的入口。

在AIML文件中主要用到了如下標簽:
:表示應答。
:支持Alice的學習功能,幫助Alic記住之前對方的聊天記錄。
本程序的AIML文件如圖所示。

5.效果展示

聊天機器人替代了一些簡單,重復的工作,使人們從中解脫出來,去做更有價值的事情。但是就像硬幣有兩面,任何新事物的誕生也必然會有風險,智能聊天機器人的廣泛推廣,也會導致問題。首先是用戶隱私的問題,機器人會記錄下來與所有人聊天的信息,一旦這些信息被泄露就會造成用戶隱私泄露。另外,聊天機器人功能越來越強大,可替代的勞動力也越來越多,有人會擔心因此而造成大量勞動力失業(yè)。面對這些問題,人類應不斷地優(yōu)化聊天機器人,增加它的安全性,以防數(shù)據(jù)泄露。另外人們也在不斷地提升自己,同時社會還應該創(chuàng)造更多就業(yè)機會,這樣才不會在新生事物普及的同時引發(fā)新的社會矛盾。
本文通過對聊天機器人的發(fā)展現(xiàn)狀以及研究背景進行分析,闡述聊天機器人的設計理論和技術原理,并對ALICE的制作原理進行解釋,最后介紹了基于ALICE的聊天機器人的程序開發(fā),實現(xiàn)了一個簡單版的聊天機器人。雖然實現(xiàn)了智能聊天機器人的基本功能,但比較簡單,沒有實現(xiàn)對中文以及復雜問題的支持,語料庫也不夠復雜。下一步會在此程序的基礎上引入中文分詞技術,擴展AIML的知識庫,強化機器人的人工智能技術。
[1]馮德虎.基于ALICE的研究生招生咨詢智能聊天機器人研究與實現(xiàn)[D].西南交通大學,2013.
[2]劉超,馬東宇.智能問答的聊天機器人系統(tǒng)的設計與實現(xiàn)[J].信息技術,2017(05).
[3]楊凱翔.聊天機器人知識挖掘方法研究[D].華南理工大學,2015.