人人書

雜誌

保存到桌面 | 簡體人人書 | 手機版
傳記回憶文學理論偵探推理驚悚懸疑詩歌戲曲雜文隨筆小故事書評雜誌
人人書 > 雜誌 > 微信公衆平台中客服應答系統的構建

微信公衆平台中客服應答系統的構建

時間:2024-11-06 02:57:04

文/唐勇

摘要:綜合使用微信公衆平台的多客服接口和Lucene全文索引框架構建了基于微信平台的客服應答系統。首先利用Lucene的索引接口生成企業知識庫的索引;然後使用語言雲服務對微信客戶的查詢信息進行分詞、詞性标注、關鍵詞提取及關鍵詞擴展;最後,将關鍵詞與知識庫索引中的字段進行匹配,匹配成功則返回給微信客戶,匹配不成功則轉接到人工客服接口。

關鍵詞:應答系統;微信客服;Lucene搜索

引言

傳統的客服應答系統主要通過電話語音來實現,當用戶來電接入時系統為用戶提供各種操作的語音提示,并根據用戶的操作來執行相應的命令。随着微信應用的普及,越來越多的企業開始利用微信與客戶進行信息溝通。相對語音自動應答系統,企業利用微信公衆平台不僅可以降低通信成本,而且可以向用戶發送包括文字、圖片、視頻、語音等多種形式的信息。目前大多數企業利用微信公衆平台所提供的關鍵詞自動回複和人工回複兩種方式為用戶提供應答服務。人工回複很難保證客服人員24小時不間斷的提供高效率服務。關鍵詞自動回複功能雖然能夠在一定程度上減輕客服人員的壓力,但無法無法滿足用戶提出的複雜信息需求。

本文采用Lucene搜索引擎框架及微信公衆平台多客服接口來構建客服應答系統,具體實現路線見圖1所示。首先通過Lucene搜索引擎框架構建企業知識索引庫;接收微信用戶的文本和語音查詢時,利用語義分析技術找出問句中的關鍵詞并利用《同義詞詞林》對是關鍵詞進行同義詞擴展,然後再利用Lucene搜索技術在知識索引庫中進行信息匹配,對于匹配成功的查詢信息,利用微信消息接口封裝,以文本或語音的形式反饋給用戶;對于沒有匹配成功的查詢信息,調用微信多客服接口轉接入人工客服界面。

1、知識庫的構建

客服問答系統需要先建立企業自身的知識庫,知識庫中存放了問題、答案和類别信息。由于用戶一般采用自然語言提問,同一種語義的問句可能會有多種形式,因此,本文将問題和答案分别存儲在Question表和Answer表,其中

Question表的結構:Question(questionId,title,answer)

Answer表的結構為:Answer(answerId,content,postDate);

定義answerId為兩個表的外鍵,構成一對多的關系模式,滿足多個問句對應一個答案的情況。為了提高數據查詢的效率,采用Lucene全文索引框架對Question表中的數據進行增量索引,索引庫的結構如表1所示,其中Question表示問題描述、Answer表示答案内容,設置對Question字段和Answer字段進行分詞并将詞彙向量存儲在在索引庫中這将有利于在後續進行問題相似度計算和答案抽取的相關工作。

2、微信消息處理

在申請微信公衆平台的開發者模式時将企業Web服務器的url地址注冊到微信平台中,當微信用戶向企業微信公衆号發送一條查詢信息後,微信服務器将該條信息封裝成XML數據格式發送到企業Web服務器;企業Web服務器根據接收到的消息類型進行有響應,若是文本信息則調用Lucene全文檢索接口去知識索引庫中進行搜索,若接收到的是語音信息,則根據接收消息中的Recognition字段進行語音到文本信息的轉換。微信公衆平台中的消息處理流程見圖2所示。

微信服務器起到連接微信客服端和企業服務器的中轉和橋梁作用。微信服務器發送給企業服務器的XML消息格式如下,其中fromUserName字段表示消息發送者的openID,這裡的openID是用戶在關注微信公衆号時的唯一标識;MsgType表明了用戶發送的消息類型,微信服務器提供了六種類型的消息,分是:文本(text)、語音(voice)、視頻(vedio)、位置(location)、圖片(image)和鍊接(link)。

企業客服應答系統主要處理文本(text)和語音(voice)兩種類型的消息;在微信公衆平台中開啟語音識别功能後,微信服務器在轉發用戶的語音信息時都會增加一個Recongnition字段,該字段中包含了語言識别的文本。企業客服應答系統根據xml消息包中的MsgType值是否為text或voice進行處理,将voice類型的語音信息轉換為文本信息後,提交給答案搜索模塊進行處理。

3、答案搜索處理

在接收到文本消息後首先要進行文本的分詞和詞性的标注,然後根據标注的詞性提取出句子的實詞作為該語句的特征關鍵詞;這裡的分詞和詞性标注均采用哈工大的語言雲服務(LTP-Cloud),例如對于問句“你們公司有多少員工?”,采用Get請求調用分詞和詞性标注服務的URL地址為:http://api.ltp-cloud/analysis/?api_key=your_api_key&text=你們公司有多少員工?&pattern=pos&format=xml。

其中api_key是語言雲分配給開發者的調用密鑰,pattern表示訪問類型,具體值包括:分詞(ws)、詞性标注(pos)、命名實體(ner)、句法分析(dp)、語義分析(sdp)和語義角色标注(srl);本文獲取問句的詞性标注,因此設置pattern=pos;format=xml表示返回的數據為xml格式;該語句的返回結果見圖3所示。

鑒于用戶提問的問句中主謂賓代表了句子的主要含義,利用Java的Dom4J開發包可以從返回數據中提取出核心的關鍵詞。在标簽中pos屬性值為v的表示謂語動詞,在謂語動詞的左邊搜尋距離謂語最近的名詞以及在謂語動詞右邊距離謂語動詞最遠的名詞,pos屬性值為n開頭的所有詞,如n表示通用名詞、nh表示人名、ni表示組織機構、ns表示地理名詞等。

中文的同義詞往往造成同一個問句的多種表示形式,例如(a)“你們公司總共有多少台電腦?”和(b)“你們公司共計多少台計算機?”這兩個問句的含義完全相同,但是核心關鍵詞卻不完全一緻,實質上a句中的關鍵詞電腦和b句中的關鍵詞計算機是同義詞,可以相互替換。本文采用哈工大信息檢索研究室的《同義詞詞林擴展版》詞典對查詢關鍵詞進行擴展,該詞典共包含77,343條詞語,按照樹狀層次結構分為五層,每層設置編碼。其中第一層用大寫英文字母表示;第二層用小寫英文字母表示;第三層用二位十進制整數表示;第四層用大寫英文字母表示;第五層用二位十進制整數表示。符号“=”表示節點的詞彙同義或相等,而符号“#”表示節點的詞彙相關但不相同。例如:

Cb30A01=這裡這邊此地此間此處此;

Cb30A02#該地該鎮該鄉該站該區該市該村;

根據田久樂和趙蔚提出的義項相似度計算方法及詞語相似度計算方法公式:若兩個義項A和B,若兩義項不在同一棵樹上則,sim(A,B)=e,若在同一顆樹的不同層次上時,相似度的計算公式為:

其中n代表分支層的節點數,k代表兩個分支的距離;若義項在第二層分支上,則m=0.65,若在第三層分支上則m=0.8,若在第四層分支上m=0.9,若在第五層分支上m=0.96。利用該公式可以從同義詞詞林中獲取查詢關鍵詞的同義詞,構造基于Lucene的查詢關鍵詞組合,并利用該查詢組合在知識庫索引中查詢Question。如果匹配到合适的Question字段則提取出Answer字段的值并微信平台規定的XML格式封裝成并返回給微信客戶端。如果匹配失敗,沒有找到合适的Question字段,則轉而調用微信的人工客服接口。

4、人工客服調用

經過認證的微信公衆平台支持多客服管理,在開通後需要事先手工添加企業客服人員的個人賬戶,見圖4所示。

在使用Lucene框架沒有匹配到合适的Question字段時,可以轉接到人工客服模塊進行處理。在此,企業服務器需要發送一個MsgType值為transfer_customer_service的消息給微信服務器,微信服務器在收到該消息時會将消息轉發到人工客服系統,自動分配給某個空閑的客服。企業服務器發送的消息格式如下所示。

在客服關閉本次會話之前,用戶發送的消息均會被直接轉發至客服系統。當本次會話超過兩個小時後或者客服主動關閉本次會話,那麼用戶發送的消息會再次發送至企業服務器中交由Lucene索引框架進行處理,如此将基于Lucene的全文搜索和人工客服管理有效結合在一次。

5、結束語

本文分析了如何利用Lucene全文索引框架構建基于微信公衆平台的客戶應答系統,綜合運用了微信公衆平台的消息處理接口和Lucene的索引和搜索接口。在抽取答案時,使用了哈工大語言雲(LTP)的詞性标注服務和同義詞林進行核心關鍵詞的提取和擴展,提高了答案抽取的正确性。

參考文獻:

[1]石凱,谌志群.基于微信的自動問答系統研究[J].計算機時代.2014(09):10

[2]田久樂,趙蔚.基于同義詞詞林的詞語相似度計算方法[J].吉林大學學報.2010(06):605

[3]宋萬鵬.短文本相似度計算在用戶交互式問答系統中的應用[D].中國科學技術大學.2010:21-26

[4]王恒.中文問答系統的研究與實現[D].哈爾濱工業大學.2008:23-25

作者簡介:

唐勇,碩士,講師,現就職于常州紡織服裝職業技術學院,研究方向為電子商務、信息系統;
   

熱門書籍

熱門文章