陳慶良


【摘要】? ? ?隨著業(yè)務(wù)的不斷拓展,中國(guó)電信提出企業(yè)轉(zhuǎn)型3.0,借助大數(shù)據(jù)及AI技術(shù)實(shí)現(xiàn)企業(yè)的智慧化運(yùn)營(yíng)。本文探討了自然語(yǔ)言處理在電信客戶名稱匹配的應(yīng)用場(chǎng)景,在比對(duì)近幾年出現(xiàn)的文本匹配算法后,采用Albert_small算法實(shí)現(xiàn)了客戶名稱的精確匹配模型。通過(guò)現(xiàn)網(wǎng)數(shù)據(jù)分析結(jié)果表明,該算法具備較高的準(zhǔn)確率及推斷速度。最后,本文將算法封裝成API服務(wù),發(fā)布在OpenPai的AI測(cè)試平臺(tái),單張P40顯卡壓測(cè)的效果可達(dá)到每秒213次的并發(fā)請(qǐng)求,具備線上運(yùn)行的條件。
【關(guān)鍵詞】? ? 自然語(yǔ)言處理? ? 文本匹配? ? 預(yù)訓(xùn)練語(yǔ)言模型? ? OpenPai
引言:
隨著移動(dòng)電話、寬帶、ITV等市場(chǎng)空間的飽和,客戶對(duì)電信的服務(wù)質(zhì)量要求不斷提高。為了提升企業(yè)競(jìng)爭(zhēng)力,電信集團(tuán)在2017年就提出企業(yè)轉(zhuǎn)型3.0:網(wǎng)絡(luò)智能化、業(yè)務(wù)生態(tài)化、運(yùn)營(yíng)智慧化。通過(guò)大數(shù)據(jù)及AI的應(yīng)用,實(shí)現(xiàn)精確管理、精準(zhǔn)營(yíng)銷、精細(xì)服務(wù)和精益網(wǎng)運(yùn)的“四精”工作。
精確管理的重點(diǎn)工作之一是如何準(zhǔn)確管理及服務(wù)全網(wǎng)的客戶。其中政企客戶名稱歸并是一個(gè)很典型的痛點(diǎn),比如中國(guó)電信股份有限公司北京分公司、中國(guó)電信北京分公司等,這些客戶名稱在系統(tǒng)都存在,客戶經(jīng)理要如何快速準(zhǔn)確地服務(wù)客戶?理想的情況是根據(jù)統(tǒng)一社會(huì)信用代碼對(duì)應(yīng)的標(biāo)準(zhǔn)名稱進(jìn)行歸并,但只根據(jù)中文名稱,需要找到更好的方式準(zhǔn)確匹配。這些都是AI可以發(fā)力的地方。
一、相關(guān)工作
針對(duì)上面分析的痛點(diǎn),本文在調(diào)研當(dāng)前自然語(yǔ)言處理的各種算法基礎(chǔ)上,擬采用基于深度學(xué)習(xí)的短文本匹配算法用于自動(dòng)匹配客戶名稱,以提高業(yè)務(wù)部門的日常工作效率,提升客戶服務(wù)感知。主要貢獻(xiàn)如下:
1.比對(duì)了MVLSTM、BIMPM、ESIM、DRCN、基于Bert各種變體的文本匹配算法在客戶名稱匹配場(chǎng)景的效果,最終選擇Albert_small算法,測(cè)試集上準(zhǔn)確率可達(dá)99.1%;
2.采用開(kāi)源的OpenPai搭建了一套AI一體化測(cè)試平臺(tái),將文本匹配算法封裝成API服務(wù),單張P40卡可實(shí)現(xiàn)每秒并發(fā)213次,同時(shí)允許動(dòng)態(tài)擴(kuò)縮容,具備線上運(yùn)行的條件。
本文的建模算法來(lái)源于互聯(lián)網(wǎng)開(kāi)源的代碼,本著開(kāi)源的精神,本文的程序也都在Gitee上開(kāi)源[1],數(shù)據(jù)由于保密關(guān)系,無(wú)法提供。
二、問(wèn)題定義
圖1? ? 客戶名稱文本匹配流程圖
客戶名稱匹配的業(yè)務(wù)場(chǎng)景是,客戶經(jīng)理給出客戶的名稱,要求能返回系統(tǒng)里最相似的標(biāo)準(zhǔn)客戶名稱。比如“上海志尚人力資源有限公司”和“上海志尚勞務(wù)派遣服務(wù)有限公司”是同一家公司,但與“上海磊實(shí)勞務(wù)派遣有限公司”不是同一家公司。
該場(chǎng)景可通過(guò)文本匹配(或稱文本相似度)的算法來(lái)建模。文本匹配也是自然語(yǔ)言處理中一個(gè)重要的基礎(chǔ)問(wèn)題,可應(yīng)用于大量的NLP任務(wù)中,如信息檢索、問(wèn)答系統(tǒng)、機(jī)器翻譯等,這些任務(wù)在很大程度上都可以抽象為文本匹配問(wèn)題。由于客戶的名稱一般不超過(guò)32個(gè)字,因此該場(chǎng)景屬于短文本-短文本匹配算法。匹配的過(guò)程一般分為召回及排序兩大階段,流程圖見(jiàn)圖1。召回階段是個(gè)粗排的過(guò)程,目的是從大量的候選語(yǔ)料中挑選比較相似的候選集,該候選集可以返回較多的案例,保證最終結(jié)果的召回率。排序的階段是個(gè)精排的過(guò)程,采用更精確的匹配度算法,從上面的候選集中挑選最匹配的N條記錄,重點(diǎn)保證精確率。
三、問(wèn)題建模及實(shí)驗(yàn)評(píng)估
根據(jù)上述的設(shè)計(jì)流程圖,召回的階段我們主要采用TF-IDF的算法來(lái)計(jì)算相似度,由于電信的客戶名稱庫(kù)數(shù)量巨大,召回階段只需從大量的名稱中返回前50左右的候選集,因此我們主要采用SparkSQL讀取結(jié)構(gòu)化數(shù)據(jù),用Spark MLLib實(shí)現(xiàn)TF-IDF的相似度匹配。本文重點(diǎn)描述精排階段文本匹配算法的建模過(guò)程。
文本匹配的算法,傳統(tǒng)的方法有BoW、TF-IDF、Jaccord、SimHash等算法,基于深度學(xué)習(xí)的算法有MVLSTM[2]、BIMPM[3]、ESIM[4]、DRCN[5]等。近年來(lái),隨著預(yù)訓(xùn)練語(yǔ)言模型的盛行,各項(xiàng)BERT模型也被應(yīng)用到文本匹配中。
本文重點(diǎn)比對(duì)了基于深度學(xué)習(xí)的各項(xiàng)算法在客戶名稱精確匹配中的效果。訓(xùn)練的數(shù)據(jù)從CRM的客戶名稱庫(kù)中提取,正樣本取了同一個(gè)社會(huì)信用代碼,但客戶名稱又不完全一致的客戶,再由人工作標(biāo)記,判斷確實(shí)是同一家客戶的記錄。負(fù)樣本取不同社會(huì)信用代碼的客戶名稱,同時(shí)限定這兩個(gè)客戶名稱的關(guān)鍵詞余弦相似度比較大,目的是為了讓模型能盡量學(xué)出比簡(jiǎn)單統(tǒng)計(jì)關(guān)鍵詞計(jì)算相似度更優(yōu)的方法。最終選取的樣本格式為:
客戶名稱1,客戶名稱2,是否匹配(1匹配,0不匹配);
訓(xùn)練集、驗(yàn)證集、測(cè)試集的正負(fù)樣本分布為1:2.5。
模型測(cè)試的效果見(jiàn)表1,最大字長(zhǎng)統(tǒng)一設(shè)為32。
從表1可得出結(jié)論:
1.原生的bert_base效果最好,但是推斷1.6萬(wàn)條數(shù)據(jù)需16秒,模型參數(shù)也較大;
2. rbt3和albert_small在測(cè)試集上的準(zhǔn)確率都能達(dá)到99.1%,僅比bert_base少0.07%,但是在測(cè)試集的推斷時(shí)間只需要6秒,模型參數(shù)也少很多。其中albert_small的性價(jià)比最高,模型大小只有19Mb。
因此,綜合考慮準(zhǔn)確率及推斷的效率,本文選擇albert_small作為客戶名稱精準(zhǔn)匹配的模型。
四、案例評(píng)測(cè)
為了更好地評(píng)估生產(chǎn)環(huán)境的部署情況,本文采用微軟開(kāi)源的OpenPai搭建了一套AI測(cè)試平臺(tái),并在該平臺(tái)上模擬了生產(chǎn)的發(fā)布及壓測(cè)情況。
OpenPai[6]是微軟在2018年開(kāi)源的人工智能集群管理平臺(tái),支持多種深度學(xué)習(xí)、機(jī)器學(xué)習(xí)及大數(shù)據(jù)任務(wù),可提供大規(guī)模GPU集群調(diào)度、集群監(jiān)控、任務(wù)監(jiān)控、分布式存儲(chǔ)等功能。
詳細(xì)的代碼請(qǐng)參照文獻(xiàn)[1]。在測(cè)試環(huán)境里,本文為容器分配了一張P40顯卡,采用jmeter[7]軟件對(duì)API服務(wù)進(jìn)行壓力測(cè)試,壓測(cè)的結(jié)果表明:
1. 32核CPU單張P40卡最高每秒可處理213次的并發(fā)量,吞吐量可達(dá)415條/秒,而顯存只占用不到5Gb;
2.從運(yùn)行的日志看,瓶頸主要在web端的并發(fā)及CPU的處理部分;
3. API服務(wù)已經(jīng)封裝成docker鏡像,只要資源夠,可動(dòng)態(tài)擴(kuò)縮容。
五、結(jié)束語(yǔ)
本文探討了將自然語(yǔ)言處理技術(shù)引入電信客戶名稱匹配的工作場(chǎng)景。在綜合考慮算法準(zhǔn)確度及推斷性能的基礎(chǔ)上,采用albert_small算法作為客戶名稱精準(zhǔn)匹配的基礎(chǔ)算法。最后,本文為了模擬生產(chǎn)環(huán)境的運(yùn)行效果,采用微軟開(kāi)源的OpenPai搭建了一套小型AI平臺(tái),同時(shí)用MMS框架將文本匹配算法封裝成API并打包成docker鏡像,在單張P40顯卡上可達(dá)到213次/秒的并發(fā),滿足生產(chǎn)上線的需求。后續(xù)可以嘗試通過(guò)數(shù)據(jù)增強(qiáng)等方式提高模型的泛化能力。
在AI一體化平臺(tái)方面,本文也只搭建了一套模擬環(huán)境,實(shí)際生產(chǎn)還有很多資源調(diào)度、流程自動(dòng)化的工作需要進(jìn)一步完善。
參? 考? 文? 獻(xiàn)
[1] https://gitee.com/yiyeshucql/nlp.git.
[2] Shengxian Wan, Yanyan Lan, Jiafeng Guo, Jun Xu, Liang Pang, Xueqi Cheng, “A Deep Architecture for Semantic Matching with Multiple Positional Sentence Representations”, arXiv preprint arXiv:1511.08277v1, 2015.
[3] Zhiguo Wang, Wael Hamza, Radu Florian, “Bilateral Multi-Perspective Matching for Natural Language Sentences”, arXiv preprint arXiv:1702.03814v3, 2017.
[4] Qian Chen, Xiaodan Zhu, Zhenhua Ling, Si Wei, Hui Jiang, Diana Inkpen, “Enhanced LSTM for Natural Language Inference”, arXiv preprint arXiv:1609.06038v3, 2017.
[5] Seonhoon Kim, Inho Kang, Nojun Kwak, “Semantic Sentence Matching with Densely-connected Recurrent and Co-attentive Information”, arXiv preprint arXiv:1805.11360v2, 2018.
[6] https://github.com/Microsoft/pai
[7] https://jmeter.apache.org/