0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用Intel Analytics Zoo/BigDL為客服平臺添加AI的實踐(一)

電子設(shè)計 ? 2018-10-17 10:30 ? 次閱讀

本系列博客主要分享了微軟 Azure 的團隊使用 IntelAnalytics Zoo在 Azure 的平臺上為客戶支持服務(wù)平臺添加 AI 模塊的一些實踐。本篇博客是此系列中的第一篇。在本篇中,我們將介紹為客服平臺添加“文本分類”模塊的大致流程及實踐經(jīng)驗。

背景

在如今商業(yè)高度發(fā)達的社會,客戶支持服務(wù)平臺已被廣泛使用在售前和售后為客戶提供技術(shù)或業(yè)務(wù)支持,例如銀行的電話客服,淘寶京東等電商的在線客服等等。傳統(tǒng)的客戶支持服務(wù)平臺僅僅是一個簡單的溝通工具,實際的服務(wù)和問題解答都是靠大量的人工客服和客戶直接交互。后來隨著機器智能和自動化技術(shù)的提升,越來越多的商家開始為客服系統(tǒng)添加智能模塊,節(jié)省人力,提升顧客的交互體驗。

我們有一個試驗中的智能客服平臺。它主要基于在線的文字對話,客戶在對話界面中提出問題,平臺從支持文檔和預(yù)先存儲的常用答案中搜尋答案回復客戶。如果客戶覺得答案給的不合適,可以主動尋求轉(zhuǎn)人工幫助,后臺的支持人員會在線和客戶對話,提供幫助?;A(chǔ)的客服系統(tǒng)問答給用戶自動提供的答案主要來自于預(yù)先編輯好的對話流和基于 Information-retrieval 的文檔搜索、索引和權(quán)重計算。在陸陸續(xù)續(xù)有了一些真實的問答交互之后,我們希望改進初版的系統(tǒng),利用機器學習人工智能實現(xiàn)基于不斷累積的真實數(shù)據(jù)的自動學習和進化。一方面,利用自然語言意圖識別和 QA 問答相關(guān)技術(shù)來提高結(jié)果的準確性;另一方面,利用對話內(nèi)容和其他客戶特征進一步提升效率和用戶體驗——例如對對話進行情感分析,對包含負面情緒的客戶進行特殊處理;根據(jù)對話內(nèi)容進行分類,為轉(zhuǎn)接人工對應(yīng)團隊提高服務(wù)效率;根據(jù)用戶畫像選擇更相關(guān)的問題答案。

作為初步嘗試,我們在原有的系統(tǒng)中添加了兩個新的智能模塊(使用 IntelAnalytics Zoo實現(xiàn)):文本分類模塊,和 QA 排序模塊。文本分類模塊的作用是對對話的服務(wù)類型進行分類,以使得轉(zhuǎn)接對應(yīng)人工團隊的時候更加高效,這個模塊以后經(jīng)過一些簡單的修改還可用于情感分析。QA 排序模塊則用來對現(xiàn)在搜索引擎得到的答案進行再排序。

目前我們已經(jīng)做了一些實驗,效果還不錯,后續(xù)的實驗和部署還在進行中。在這個系列博客里,我們會逐步把我們在搭建這個客服平臺的流程和經(jīng)驗分享出來,供大家參考借鑒。

在本篇博客中,我們主要介紹基于Analytics Zoo 0.2.0 版本為客服平臺添加“文本分類”模塊的大致流程及實踐經(jīng)驗。

為什么采用 Analytics Zoo

Analytics Zoo是 Intel 開發(fā)的一個開源大數(shù)據(jù)分析 +AI 平臺。項目包含 Scala 和 Python 兩套 API,提供了一系列方便實用的封裝和工具(包括 Pipeline API 以及更 high-level 的 API,預(yù)定義的模型,在公共數(shù)據(jù)集上預(yù)訓練的模型,以及參考的實用案例等等),使用戶能更容易地使用 Spark 和 Intel BigDL(Intel 開源的一個基于 Spark 的分布式深度學習框架)進行深度學習應(yīng)用的開發(fā)。

客服平臺的對話數(shù)據(jù)量會隨著系統(tǒng)投入使用逐漸變得龐大,將數(shù)據(jù)存放在 Hadoop 集群上可以滿足集中管理、分享和可擴展性的需要。而使用Analytics Zoo讀取和處理存放在 Hadoop/Spark 集群上的數(shù)據(jù)是非常方便的事情。Analytics Zoo在標準的 Spark 集群上面使用 Scala API 訓練和預(yù)測并不需要對云有特殊的改動或配置,還有很多預(yù)定義的模型可以開箱即用。在預(yù)測的時候,可以使用Analytics Zoo提供的 POJO 風格的 service API(本地運行無需 Spark 集群)來做低延遲的預(yù)測。如果是對吞吐量要求較高的話,則建議使用Analytics Zoo提供的標準 prediction API(可以運行在 Spark 集群上)。這兩套 API 都可以很方便地被添加到基于 java 的 service 中。

文本分類概述

文本分類是一種常見自然語言處理任務(wù),主要的目的是將輸入的文字片段分配到一個或者多個類別中。例如,垃圾郵件分類就是把郵件的內(nèi)容片段分配到是否垃圾郵件的類別中。而我們這里的應(yīng)用場景則是將一段對話歸類到一種服務(wù)類別中。

訓練一個文本分類模型的過程一般包括幾個步驟:采集和準備訓練數(shù)據(jù)集和驗證數(shù)據(jù)的文本集,數(shù)據(jù)清洗和預(yù)處理預(yù)處理,在訓練數(shù)據(jù)集上訓練模型,在驗證數(shù)據(jù)集上評估的指標,如果驗證集上的指標不夠好,則繼續(xù)優(yōu)化模型(包括添加新數(shù)據(jù),調(diào)整參數(shù)算法等)。

Analytics Zoo提供了一系列預(yù)定義好的文

本分類模型(如 CNN, LSTM 和 GRU)。我們直接選擇了其中基于 CNN 的分類模型作為基礎(chǔ)進行開發(fā)(以下訓練過程中使用的 API 均以 python API 為例)。

在上面的接口定義中,class_num 是指該文本分類問題包含類的數(shù)量,token_length 是指每個詞對應(yīng)詞向量的大小,sequence_length 是指每個文本所包含的詞的數(shù)目,encoder 是指對輸入的詞向量序列的編碼器(可以是 cnn, lstm 或者 gru),encoder_output_dim 是指編碼器的輸出維度。這個模型接收的輸入的是一段文字的詞向量的序列,輸出是一個類別標簽數(shù)字。

如果對這個模型內(nèi)部包含的具體神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)感興趣,可以查看這段源代碼(https://github.com/intel-analytics/analytics-zoo/blob/branch-0.2/pyzoo/zoo/models/textclassification/text_classifier.py#L58-L72)。

數(shù)據(jù)采集和預(yù)處理

訓練數(shù)據(jù)中的每一條記錄包含兩個字段:對話歷史和對應(yīng)的服務(wù)類別標簽。我們采集了幾千條這樣的記錄,并用半自動和人工的方法進行了類標簽的標注。拿到原始訓練數(shù)據(jù)以后,首先對對話文本進行了清洗,去掉文本中無意義的 tag 和亂碼,并轉(zhuǎn)化成每一條記錄都是(text, label)的 text RDD。然后我們對 text RDD 做了預(yù)處理,生成文本分類模型可以接收的輸入。要注意,數(shù)據(jù)清洗和預(yù)處理的部分,對于訓練數(shù)據(jù)和對將來應(yīng)用預(yù)測中的新數(shù)據(jù)都要一致。

(如何開發(fā)票 …, 1)
(發(fā)票如何寄送…,1)
(遠程服務(wù)連不上…,2)
(如何購買…, 3)

清洗之后的 text RDD 記錄示例 (每條記錄都是一對對話文本和類標)

清洗過程這里不再贅述,下面主要介紹預(yù)處理主要包含的常用步驟:

1. 中文分詞 (Tokenization)

和英文不同,中文文本由連續(xù)的字序列組成,每句話的詞與詞之間沒有特定的分隔符,需要通過語義和詞典進行分詞。我們采用的是jieba對原始文本內(nèi)容進行分詞。經(jīng)過分詞之后,原文本被轉(zhuǎn)化成了一個由詞構(gòu)成的數(shù)組。

2. 去掉停用詞 (Stopwords Removal)

停用詞是在文本檢索過程中出現(xiàn)頻率很高但又不涉及具體內(nèi)容的單詞,這些詞的存在通常對于文本分類的幫助不大。可以選擇使用中文常用的停用詞表(比如“只要”、“無論”等)或者用戶自己指定停用詞,將這些詞從分詞的結(jié)果中去除。

3. 統(tǒng)一長度(Sequence Aligning)

不同的文本通常會有不同的長度,但對于一個深度學習模型而言,則需要統(tǒng)一規(guī)格的輸入,因此我們要把文本對應(yīng)的詞數(shù)組轉(zhuǎn)換成相同的長度。對于給定的長度 sequence_length(比如 500),如果文本包含的詞數(shù)目大于該長度,可以選擇從文本開頭或者從結(jié)尾截取該文本中該長度數(shù)量的詞。如果文本的詞數(shù)目不足該長度,則可以在原本的詞之前或之后加上虛擬的詞來補足(比如“##”)。

4. 轉(zhuǎn)換為詞向量 (Word2Vec)

處理到目前為止每個文本轉(zhuǎn)換成的仍然是詞的數(shù)組,但要放入模型進行訓練,需要的是數(shù)值的輸入,因此我們需要把每個詞轉(zhuǎn)化為相同維度的詞向量。我們采用的是 Facebook 開源的詞向量工具 FastText (https://github.com/facebookresearch/fastText),F(xiàn)astText 提供預(yù)先訓練好的中文詞向量,每個詞對應(yīng)一個 300 維的空間向量。在詞向量的空間中,任意兩個向量的之間的距離能體現(xiàn)對應(yīng)的兩個詞之間的語義聯(lián)系,兩個語義上很相似或者有很強關(guān)聯(lián)的詞對應(yīng)的詞向量會有很近的距離。對于不在預(yù)先訓練好的 FastText 中的詞,我們用一個 300 維的零向量來代替。

5. 轉(zhuǎn)換為 Sample

經(jīng)過以上的處理之后,每個文本轉(zhuǎn)換為形狀是(sequence_length, 300)的多維向量。對于文本所屬的類別,我們則轉(zhuǎn)換為整數(shù)來表示。把多維向量作為 feature,類別作為 label,每條文本數(shù)據(jù)生成一個 BigDL Sample (https://bigdl-project.github.io/0.6.0/#APIGuide/Data/#sample)。最終整個數(shù)據(jù)集轉(zhuǎn)化成 Sample RDD 用于模型基于 Spark 的分布式訓練。

sample_rdd=vectors_rdd.map(lambdavectors,label:to_sample(vectors,label))

模型訓練,測試,評估和優(yōu)化

在準備好 RDD 格式的訓練集(train_rdd)和驗證集(val_rdd),并按照例子實例化好一個模型(text_classifier)之后,我們創(chuàng)建一個 BigDL Optimizer 對模型進行分布式訓練。這是一個類別用整數(shù)表示的多分類問題,損失函數(shù)我們選擇的是稀疏分類交叉熵損失 (Sparse Categorical Cross Entropy)。

在創(chuàng)建 Optimizer 的時候可以指定讓模型在訓練集上進行多少次迭代訓練(epochs),每次訓練使用的批大?。╞atch_size),采用的優(yōu)化方法以及它的學習率(learning rate) 等參數(shù)。

可以在訓練的過程中,在驗證集上輸出指定的性能指標 (比如 Top1 accuracy) ,這樣能了解到模型在訓練的過程中是否已經(jīng)過擬合。同時 BigDL 也支持在訓練過程中階段性保存快照可用于之后恢復訓練。更詳細的 Optimizer 的參數(shù)和使用方法請參考文檔(Analytics-zoo 同時支持 BigDL 0.5 和 0.6 版本,Python pip install 默認同時安裝的是 BigDL 0.6 版本):https://bigdl-project.github.io/0.6.0/#ProgrammingGuide/optimization/

如果不選擇在訓練的過程中驗證,也可以在訓練完成后,用訓練好的模型對驗證數(shù)據(jù)進行預(yù)測并檢查準確率。要保證驗證集也經(jīng)過了和訓練集同樣的預(yù)處理過程。模型會返回對應(yīng)的概率分布或者所預(yù)測的分類編號。

如果驗證集上結(jié)果不好,就要對模型進行優(yōu)化,這個過程基本是重復調(diào)參/調(diào)數(shù)據(jù)/訓練/測試驗證的過程,直到準確率可以滿足實用要求。我們這個模型一開始幾次的準確率是不夠好的,我們之后對學習率進行了調(diào)整,并添加了新的訓練數(shù)據(jù),增加了停用詞詞典,后來準確率有了大幅提升 。

以上的訓練過程在單機上和集群上都可以運行。

如何操作可以參考文檔:https://analytics-zoo.github.io/0.2.0/#PythonUserGuide/run/

另外,Analytics Zoo提供了完整的文本分類的指南和實例供用戶參考:

https://analytics-zoo.github.io/0.2.0/#ProgrammingGuide/text-classification/。

https://github.com/intel-analytics/analytics-zoo/tree/branch-0.2/pyzoo/zoo/examples/textclassification。

將模型預(yù)測部分與 service 集成

拿到訓練好的模型之后,接下來要做的就是把新輸入的文本經(jīng)過同樣的預(yù)處理之后喂給模型,然后模型會輸出一個分類的標簽。由于我們的微服務(wù)是用 Java 實現(xiàn)的,考慮到效率,我們沒有直接用 python 代碼進行預(yù)測,而是用Analytics Zoo提供的 POJO 風格的 Java Inference API (用法和接口參考文檔https://analytics-zoo.github.io/0.2.0/#ProgrammingGuide/inference/)實現(xiàn)了預(yù)測部分的代碼(Java API 可以直接 load python code 訓練好的模型來做預(yù)測),示意如下。另外 Analytics Zoo 也提供了文本分類的完整的 web service 示例可參考:https://github.com/intel-analytics/analytics-zoo/tree/master/apps/web-service-sample

模型的持續(xù)更新和發(fā)布

數(shù)據(jù)是隨著時間不斷累積的,因此在實際使用中經(jīng)常會定期使用全量或增量數(shù)據(jù)重新訓練模型,并把模型更新到預(yù)測服務(wù)中。要實現(xiàn)這一點,只需定期運行訓練程序得到新的模型,然后利用上面示例過的 model.load API 重新加載更新過的新模型就可以了。另外,我們的 service 用基于 Kubernetes 的方案進行持續(xù)更新和集成。Analytics Zoo也提供了 docker 的 image (https://github.com/intel-analytics/analytics-zoo/tree/branch-0.2/docker) 供下載安裝。

結(jié)語

相信大家看了以上的介紹,已經(jīng)對如何使用文本分類,以及如何將類似模塊添加到自己的應(yīng)用中有了大致的了解。我們將在這個系列后續(xù)的博客中介紹其他方面的內(nèi)容和實踐進展。

如果需要更多信息,請訪問 Analytics Zoo 在 Github 上的項目地址(https://github.com/intel-analytics/analytics-zoo) ,并且可以從 Market place 上面下載使用已經(jīng)準備好的預(yù)裝 Analytics Zoo 和 BigDL 的鏡像(https://market.azure.cn/zh-cn/marketplace/apps/intel.bigdlstandard)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    30896

    瀏覽量

    269107
  • Service
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    13788
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    352

    瀏覽量

    22215
  • Azure
    +關(guān)注

    關(guān)注

    1

    文章

    123

    瀏覽量

    12781
收藏 人收藏

    評論

    相關(guān)推薦

    基于Intel Analytics Zoo上分布式TensorFlow的美的/KUKA工業(yè)檢測平臺

    本文中,我們將分享我們在美的 / KUKA ,使用 英特爾 Analytics Zoo個基于 Apache Spark 、 TensorFlow 和 BigDL 的 開源數(shù)據(jù)分
    的頭像 發(fā)表于 10-17 10:30 ?6845次閱讀

    AI破解個性化客服難題

    文匯集多個行業(yè)借助 AI 實現(xiàn)的個性化客服實踐
    的頭像 發(fā)表于 10-25 09:06 ?1886次閱讀
    以<b class='flag-5'>AI</b>破解個性化<b class='flag-5'>客服</b>難題

    閑談客服中心AI應(yīng)用及挑戰(zhàn)

    隨著大數(shù)據(jù)應(yīng)用的不斷普及,基于機器學習及深度學習算法的人工智能技術(shù)也不斷在各個領(lǐng)域大顯身手。對于客服領(lǐng)域來說,現(xiàn)階段人工智能技術(shù)的應(yīng)用主要在三個層次或者階段上,是以智能機器人及智能助理為主的自助
    發(fā)表于 04-10 10:48

    不能ssh到Intel AI DevCloud

    按照本教程ssh到Intel AI DevCloud:https://access.colfaxresearch.com/?p = connect#sec-linhttps
    發(fā)表于 11-01 15:57

    關(guān)在釘釘和企業(yè)微信上使用AI視頻面試——AI得賢招聘官操作說明

    基于RPA和多模態(tài)人工智能算法設(shè)計的全自動AI視頻面試系統(tǒng):AI得賢招聘官已于2月17日正式登陸釘釘和企業(yè)微信平臺。 AI得賢招聘官的釘釘和企業(yè)微信版本
    發(fā)表于 03-07 19:30

    BigDL有何功能

    BigDL是什么?BigDL有何功能?
    發(fā)表于 09-23 07:17

    螞蟻金服AI客服“小螞答”上線

    “某某服務(wù)請按1、某某服務(wù)請按2……”,這樣傳統(tǒng)的電話客服或許也將逐步被AI客服替代。螞蟻金服近日宣布,將對外全面開放以AI技術(shù)核心的“新
    發(fā)表于 08-25 11:01 ?2739次閱讀

    戴金權(quán)專訪:英特爾公司哪些最前沿的人工智能技術(shù)已經(jīng)落地國內(nèi)外使用?

    我們在上海和硅谷兩邊都有研發(fā)團隊,在大數(shù)據(jù)分析平臺上加入深度學習和人工智能技術(shù),就基本解決了這個痛點,我們推出的 BigDL 項目,個分布式深度學習框架,在這個上面構(gòu)建了 Analytics
    的頭像 發(fā)表于 08-01 16:34 ?3781次閱讀

    寶信利用Spark Analytics Zoo對基于LSTM的時間序列異常檢測的探索

    摘要:寶信和英特爾相關(guān)團隊利用Analytics Zoo在無監(jiān)督的基于時間序列異常檢測例上進行了有益的合作探索,本文分享了合作項目的結(jié)果和經(jīng)驗。 背景 在 工業(yè)制造 行業(yè),有多種方法來避免由于設(shè)備
    的頭像 發(fā)表于 10-17 10:30 ?5795次閱讀

    英特爾如何破解AI時代的大數(shù)據(jù)難題?

    為了幫助客戶在數(shù)據(jù)的海洋中抓住商業(yè)價值,并且讓這過程通過更加智能化的手段變得簡單易用,英特爾在底層架構(gòu)和軟件堆棧領(lǐng)域直在持續(xù)投入。在2019全球人工智能技術(shù)大會上,戴金權(quán)分享了英特爾構(gòu)建大數(shù)據(jù)分析+AI
    的頭像 發(fā)表于 06-18 17:20 ?3314次閱讀

    Analytics Zoo: 統(tǒng)的大數(shù)據(jù)分析+AI 平臺

    怎么應(yīng)用 Analytics Zoo ?比如在阿里云上面部署 EMR,使用 Analytics Zoo
    的頭像 發(fā)表于 07-02 11:18 ?4799次閱讀

    AI智能客服機器人全面上線會帶來怎樣的體驗

    全面上線了申通AI智能客服機器人,助力雙11,技術(shù)革新客服服務(wù),客戶提供不樣的
    發(fā)表于 11-12 15:40 ?1136次閱讀

    AI客服行業(yè)賦能更好的發(fā)展

     智能客服行業(yè)作為人工智能技術(shù)較早實現(xiàn)商業(yè)化落地的領(lǐng)域,吸引了眾多企業(yè)爭相布局。從傳統(tǒng)通訊廠商,到SaaS云服務(wù)商、再到機器人客服公司,各類企業(yè)都在積極AI
    的頭像 發(fā)表于 11-08 11:19 ?3214次閱讀

    鍵生成屬于自己的AI客服:開啟智能服務(wù)新時代

    在當今數(shù)字化飛速發(fā)展的時代,科技的進步我們的生活和工作帶來了前所未有的便利。其中,AI 技術(shù)的應(yīng)用尤為引人注目。今日,我們帶來的 AI客服項目 ,僅需你
    的頭像 發(fā)表于 08-05 15:25 ?454次閱讀
    <b class='flag-5'>一</b>鍵生成屬于自己的<b class='flag-5'>AI</b><b class='flag-5'>客服</b>:開啟智能服務(wù)新時代

    AI項目管理平臺怎么

    AI項目管理平臺種集成了項目管理工具、AI開發(fā)環(huán)境和數(shù)據(jù)分析能力的綜合性平臺。接下來,AI
    的頭像 發(fā)表于 11-13 09:38 ?212次閱讀