智能聊天機器人

1. 什麼是智能聊天機器人

簡單地說,就是基於人工智能原理(Artificial Intelligence,以下簡稱AI),通過對聊天文本進行分析後給出應答的一類程序。

2.基本原理

AI聊天機器人的工作可以被分成兩個部分:訓練+匹配。

2.1訓練

訓練的過程,目的在於構建或是豐富詞庫。

流程描述如下:

S1:用戶通過教學界面向系統提出一個話題與相應應答;

S2:系統對該話題進行分詞,判斷該話題在系統知識庫中應存放的位置;

S3:在系統知識庫中添加該話題及相應應答。

   可以看到,這裏涉及到兩個問題:給出一個話題,系統是如何分詞的?詞庫要如何設計才能又快又準地應答?

2.11分詞

這是因爲聊天機器人的存儲並不以句子爲單位(那樣太費時費空間),而是以詞。於是,分詞,幾乎成爲聊天機器人的核心。

中文分詞技術儼然是一個重要的研究方向,隸屬於自然語言處理。現有的分詞算法可以分爲三大類:基於字符串匹配的分詞方法基於統計的分詞方法基於理解的分詞方法。 用戶在聊天時的一個顯著特點是所提出的話題一般都是比較短小的,而不是長篇大論,不具有段落篇章結構,絕大多數就是少數幾句話。基於統計的分詞方法適用於有段落、篇章結構以及上下文關係的文段。基於理解的分詞方法目前並不成熟,且時間複雜度高,速度慢。於是,只有基於字符串匹配的分詞是比較適合的。

基於字符串匹配的分詞方法,又叫做機械分詞方法。按照掃描方向的不同,機械分詞法可以分爲正向匹配和逆向匹配。(e.g. 字符串“北京華煙雲”,正向匹配爲《北京,華煙雲》,逆向匹配爲《北,京華煙雲》)逆向匹配的切分正確率要高於正向匹配法,爲了便於發現歧義切分,有時候將兩者結合起來形成雙向匹配法。按照不同長度優先匹配的情況,可以分爲最大(最長)匹配和最小(最短)匹配,也就是長詞優先和短詞優先。按照匹配不成功時重新切取的策略,機械分詞法可以分爲增字法和減字法。

基於詞典的“雙向最大匹配”法是目前中文信息處理中最簡單有效的方法,有這樣的統計:漢語文本中90%左右的句子,其與雙向最大匹配的結果相吻合,而且是正確的分詞結果。

當正、反向最大匹配算法得出來的切分結果不一樣時,就必須對其進行歧義處理,在此不再贅述。

 2.12詞庫設計

   由於中文詞的特點:1.中文詞是一個開放集,詞數在增長;2.以不同字開頭的      詞的數目變化很大,多的達到數百個,少的也有可能只有一個或者沒有;3.詞的長度變化也很大,有單字詞,也有由六、七個字成詞的。這就要求在設計詞典時,除了考慮訪問效率外,還得充分考慮存儲利用率。

請看這種數據結構,就能很好地平衡時間與空間。


首字Hash表通過一次哈希運算就可以直接定位漢字在表中的位置。一個單元包括三項內容:C:存儲首字;F標誌位:存儲以C爲首字的最長詞條的長度;P:指向詞表索引表。

 

 

訓練例子

現在舉一個訓練的例子:我教“大白天的做什麼美夢啊?”回答是“哦哈哈哈不用你管”。

S1:應用雙向最大匹配算法分詞:雙向分詞結果,正向《大白天,的,做什麼,美夢,啊》;反向《大白天,的,做什麼,美夢,啊》。正向反向都是一樣的,所以不需要處理歧義問題。長詞優先選擇,“大白天”和“做什麼”。

S2:以“大白天”舉例,假設hash函數爲f(),並設f(大白天)指向首字hash表項[大,11,P]。於是由該表項指向“3字索引”,再指向對應“詞表”。

S3:將結構體<大白天,…>插入隊尾。體中有一個Ans域,域中某一指針指向“哦哈哈哈不用你管”。

S4:完成訓練。


2.2匹配

       可以被描述成如下流程:S1:用戶通過聊天界面向系統提出一個話題;S2:系統對該話題進行分詞處理;S3:在系統知識庫中尋找與該話題匹配的話語回覆用戶。

基於詞典的分詞算法分爲詞典加載預處理最大匹配歧義消解幾個階段。

 

其具體流程如下:

S1:預處理階段,按照特殊字符(英文字母、數字、標點符號等)將待分析文本進行斷句,將待切分的文本切分爲只有中文的短句子,這些句子是下一步分詞處理的基本單位;

(舉個栗子:輸入“asdfadf東北師範大學哈哈哈dfadflakfl(*^__^*) 嘻嘻……”,simi只會對其中的中文“東北師範大學哈哈哈嘻嘻”做出響應;輸入“(*^__^*)”時,輸出“I have no response.”)

S2:對斷句出來的句子進行雙向最大匹配(雙向匹配,長詞優先)分詞,分詞後的結果作爲S3的輸入;

(舉個栗子:輸入“東京古巴比倫”,正向與反向切詞結果均爲《東京,古巴比倫》,長詞優先,所以simi只對“古巴比倫”做出響應;輸入“古巴比倫埃菲爾鐵塔”,正向與反向切詞結果均爲《古巴比倫,埃菲爾鐵塔》,此時Simi對“埃菲爾鐵塔”做出響應)

S3:對上一步分詞得到的結果進行比較,判斷是否存在歧義,如果存在歧義,就進行一定的歧義消解

S4:重複S2、S3,直到處理完步驟一中斷句所切分出的所有句子單元。


這裏給出與小黃雞對話的例子:我問小黃雞:“埃菲爾鐵塔上45度角仰望星空”。

S1:雙向最大匹配分詞:正向反向均爲《埃菲爾鐵塔上,45度角,仰望星空》,沒有歧義。長詞優先,系統選擇了“埃菲爾鐵塔上”作爲關鍵詞;

S2:系統在知識庫中用剛纔說的哈希函數f(埃菲爾鐵塔上),找到比如[埃,11,P] 的表項,順着指針找到6字詞的索引,順着索引找到6字詞表,遍歷詞表,找到<埃菲爾鐵塔上,…>結構體;

S3:系統隨機選擇該結構體Ans域中的一個回答(也有可能是根據頻率高低來選擇)。比如“兩年之後等着你”。

S4:輸出回答,匹配結束。


發佈了18 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章