如何搭建一個智慧客服(三):NLP裡實體資訊的抓取與應用
前面兩篇說了使用者意圖拆分與識別,和基於此設計的多輪對話流程。這一篇接下去講自然語言處理(NLP)中實體資訊的抓取和在產品中的應用,也是如何搭建一個智慧客服系列的第三篇。
你或許思考過,AI是怎麼聽懂人說話的呢?當我在商場,跟商場的機器人說我要去三樓,它是怎樣聽懂我的意思的呢?當我說去NARS,它怎麼知道NARS是什麼,是在哪裡?那麼就要說叨說叨實體(entity)了。
首先,實體資訊是什麼意思呢?它表示關鍵性的資訊,通常可以分為兩種,一是與業務基本無關的,可以算作通識的資訊,比如手機號,郵箱,日期,時間;二是與業務相關的,根據實際場景定製的。
怎麼理解呢?舉個例子,第一個場景,當你需要預訂一張機票,假設你會這樣說:
幫我訂張明天的機票,從北京去上海,下午起飛的那種,我電話13344445555,行程單發我郵箱yuanquaner@pmcaff.com 好的,已為您找到如下符合條件的航班……
在這個場景中,‘明天’和‘下午’就是時間資訊,‘北京’和‘上海’是地點資訊,‘13344445555’是手機號。因為這些資訊可以說是通識,不隨業務而改變,所以一般會內建到演算法中去,識別並做對應的轉換。在上面的場景中,AI端會先識別出日期和時間,然後把‘明天’轉換為‘2020年3月27日’,‘下午’轉換為‘14:00-18:00’,再與其他資訊合併,由資料端向航空公司發起請求,再告訴你返回的結果,即符合條件的航班列表。
這個識別環節聽起來是簡單的,因為人類在語言學習的過程中已經能夠條件反射出什麼是日期,什麼是手機號,什麼是地點。但是對AI而言,起初這些東西都是一樣的字而已,需要大量的演算法來區分與提取到這些資訊。這裡的識別率與演算法設計時對語言理解的豐富度息息相關。比如說,一開始是對‘明天’‘昨天’做了識別,而忽略了‘前一天’‘後一天’的表達;或者一開始做了‘2020年2月2日’,而忽略了‘2020年二月二日’的表達,就會直接拉低識別率,具體的表現就是……智障率升高。
轉換這一步中,有個很有意思的點。人們用自然語言表達日期時間等資訊時,其實是不完全符合標準邏輯的。比如說,當你在晚上00:10分跟智慧助手說,“訂個明天的鬧鐘”,這裡的“明天”大機率已經是算“今天”了。當你在2020年1月裡,跟智慧助手說,“查查12月的賬單”,你其實是在講2019年的12月。這些語言表達習慣都應該考慮進去,才能讓智慧助手“感覺像個人”。Siri在這裡做的很好,訂鬧鐘的場景,它會再確認一句“請問你是說訂今天早上8點的鬧鐘嗎?”
收回來說第二個場景,結合業務出現的實體。繼續舉栗子,當你要買一杯奶茶,你透過智慧助理完成這個操作,那麼對話應該是這樣的:
我要一杯奶茶,一點點的,大杯四季奶青,全糖,加一份紅豆,不加冰。 好的,已下單。
這裡面,‘一點點’是奶茶品牌,‘四季奶青’是奶茶商品名,‘大杯’是份量,‘全糖’是糖度……由於它們是完全依託於業務的表達,離開這個場景則這些詞不再有意義。比如你在跟別人聊天氣的時候突然說一句“一點點哦”,對方是聽不懂的。它不像“北京”這種詞,北京永遠是北京。所以這種資訊就是我說的,要根據實際場景定製的。也就是說,我需要告訴AI,什麼是奶茶品牌,什麼是奶茶商品名,什麼是份量……
怎麼告訴它呢?一般有三種途徑:字串匹配,正規表示式,標註。
字串匹配,即定義一個實體資訊的合集,適用於固定出現的欄位。說起來比較晦澀,我用虛擬碼(因為不會寫真程式碼)形式寫一下就清楚了。在買奶茶的場景中,對奶茶品牌和商品名等實體資訊的定義可以這樣寫:
"奶茶品牌" = [ '一點點', '喜茶', '樂樂茶', '奈雪的茶' ]" 份量" = [ '大杯', '中杯', '小杯' ] "商品名" = [ '四季奶青', '紅茶瑪奇朵', '芝士芭蕾' ]
這樣,當使用者說到了其中一個項,AI就可以知道對方在講什麼了。
正規表示式,即定義一個實體資訊出現的規則,適用於有規律出現的資訊。以車牌號為例,常見的形式為省份縮寫(一個漢字)+一位字母+五位數字,依然用虛擬碼的形式表達,如下:
"車牌號" = [京滬魯浙……津豫贛]{1}[A-Z]{1}[0-9]{5} #意思是從省份縮寫中的一個字+一個大寫字母+5個阿拉伯數字
同理地,我們可以用這種方式定義其他有規律的詞彙,像裝置批號,身份證號,手機號,訂單號,諸如此類。
講到這裡,你可能想說,這兩種辦法一點都不AI嘛。那麼……朋友你說的沒錯我也這麼認為!不過途徑只是途徑,AI也不是目的,而是為了實現最終與人對話的效果。所以來看很AI的第三種吧。
標註,即對錶達某一個意思的語句進行標註,從而讓機器學習到某一個意思,適用於不固定也不規律的表達。以筆者工作裡的一個場景來說,有車貸或房貸的使用者,經常會來諮詢,自己還完了多少錢,自己還剩多少錢要還。那麼我稍微整理了一些出現過的表達方式,如下:
我還了多少錢了? 我已經付掉多少貸款了? 我還完了多少貸款? 有多少貸款是還上了的? 我已經還了多少款? 我的貸款還清了多少了呢 我還有多少錢要還啊? 還剩多少貸款要付? 還有多少貸款得付? 我還要付多少錢呀
很明顯地,這些表達即不會用固定的名詞,也沒有可以寫成正規表示式的清晰規律。但是可以用語義上清楚地看出來使用者在問什麼,所以,這裡採用標註的形式,把意思標出來。我們定義還完了多少錢的概念為="已還",還剩多少錢要還的概念為="剩餘",括號起來的為標註的位置:
我[還了多少錢]了?——"實體"="已還" 我已經[付掉多少貸款]了?——"實體"="已還" 我[還完了多少]貸款?——"實體"="已還" 有[多少貸款是還上了]的?——"實體"="已還" 我已經[還了多少款]?——"實體"="已還" 我的貸款[還清了多少]了呢——"實體"="已還" 我[還有多少錢要還]啊?——"實體"="剩餘" 還[剩多少貸款要付]?——"實體"="剩餘" 還[有多少貸款得付]?——"實體"="剩餘" 我[還要付多少]錢呀——"實體"="剩餘"
在完成了大量以上型別的標註後,當使用者再問到相同的問題,AI大機率上就能識別到對應的實體資訊,那麼就可以繼續“像個人一樣”地進行對話了。
在實際的落地場景中,提取的途徑並不是唯一的,也不一定是固定的。具體採用哪種方式來實現需求,是基於PM對技術方法的瞭解和對業務背景的熟悉而做判斷。究其根本,一切都還是為了使用者需求而服務。
好了今天的內容就到這裡~下一篇主題是怎樣讓AI更像人——偽裝的智慧感。
感謝閱讀。
作者介紹:@一個圓圈兒,SaaS公司產品經理;擅長AI、搜尋、資料分析、商業化;智慧客服系列文章作者;“資料人創作者聯盟”成員。
來自 “ 一個資料人的自留地 ”, 原文作者:@一個圓圈兒;原文連結:https://mp.weixin.qq.com/s/vX7NRc-GoDMXE9zTrTq6Uw,如有侵權,請聯絡管理員刪除。
相關文章
- 如何搭建一個智慧客服(一):從NLP到多輪對話與多流程設計
- NLPIR搭建行業知識圖譜實現智慧客服應用行業
- DIY技術資訊抓取工具的實踐與研究
- 你與人工智慧的距離還差一個NLP人工智慧
- 阿里NLP總監分享-NLP技術的應用與思考阿里
- 智慧化生產應用搭建的實戰案例
- 使用FastWiki一分鐘搭建公司的智慧客服AST
- 面向NLP場景應用的智慧輔助建模(一)簡介
- 如何抓取網頁資訊?網頁
- 使用python3抓取pinpoint應用資訊入庫Python
- 面向NLP場景應用的智慧輔助建模(二)--本體樹建模
- 面向NLP場景應用的智慧輔助建模(五)特色與優勢
- 如何搭建一個智慧客服(二):結合業務場景撰寫多輪對話PRD
- 如何基於 Flutter 快速實現一個視訊通話應用Flutter
- 智慧客服API最佳實踐—智慧物流客服API
- SAP Cloud for Customer裡一個Promise的實際應用場合CloudPromise
- 面向NLP場景應用的智慧輔助建模(三)要素樹和概念樹建模
- 搭建我的第一個Docker應用棧Docker
- AI智慧體服務平臺-智慧客服系統-獨立部署搭建AI智慧體
- 面向NLP場景應用的智慧輔助建模(四)本體表示式發現
- 雲知聲:深度文字匹配在智慧客服中的應用
- 使用Chrome快速實現資料的抓取(三)——JQueryChromejQuery
- 從0搭建一個實用的MVVM框架MVVM框架
- 重塑客服中心:智慧關懷,實現卓越客服體驗(附下載)
- 美團智慧客服核心技術與實踐
- [知識圖譜實戰篇] 一.資料抓取之Python3抓取JSON格式的電影實體PythonJSON
- 一文讀懂阿里雲通訊的產品體系、技術架構與智慧化應用場景實踐阿里架構
- 人工智慧在各個領域裡的應用場景人工智慧
- 「實戰」搭建完整的IM(即時通訊)應用(2)
- 「實戰」搭建完整的IM(即時通訊)應用(1)
- 代理IP的三個實際應用場景
- HMM在NLP中的應用HMM
- 深度解析NLP文字摘要技術:定義、應用與PyTorch實戰PyTorch
- 那些在「雙十一」忙裡忙外的智慧客服
- 如何應用於Web框架的搭建Web框架
- 首席科學家說:NLP的風口在哪裡? 場景化應用!
- 一文看懂自然語言處理-NLP(4個典型應用+5個難點+6個實現步驟)自然語言處理
- Python實現拼多多商品資訊抓取方法Python