如何智慧化改造工單系統分發

超人汪小建發表於2019-04-22

前言

現有一個傳統的工單系統,該系統並非自建。工單系統每天會產生大量工單,需要較多人力專門做派發的相關工作,以將工單派發給對應處理人員。為提升工作效率節約人力成本,同時也解放員工重複勞動,考慮對其進行智慧改造。

兩方面

由於並非自建系統,所以要做智慧化改造就涉及兩個方面:系統自動化和系統智慧化。

系統自動化

系統自動化,自動化能解放雙手,作為智慧化的輔助手段。因為原工單系統上人機互動是通過瀏覽器的,所以系統的自動化其實主要就是實現自動操作,模擬人工操作各項功能。

有兩個方案:瀏覽器外掛和自動化測試工具。考慮到瀏覽器外掛方式到後面智慧化與模型呼叫時比較麻煩,可優先考慮使用自動化測試工具。比如selenium。

TIM圖片20190416162441

系統智慧化

系統智慧化,能賦予決策能力,相當於大腦,決策完後再由系統自動化實施操作。就單單工單系統智慧分發功能來說,主要就是根據工單歷史派發記錄,多維度特徵統計,學習一個模型能決策工單派發給某個員工比較合理。

需要做的是收集歷史工單資料以及關聯的派發給哪位員工(包括員工的屬性),樣本資料量要有保證,而且抽樣時工單時間能包含一年的資料,這樣能更好保證樣本分佈與真實資料分佈一直。

同時為了更好建模,可以收集一線工作人員派單的常見規則。

TIM圖片20190416162024

方案分析

因為實際分配時跟員工的屬性並沒有很強的關係,主要是需要跟進工單標題及內容來分發的,所以如果只是單純地使用員工屬性作為特徵並使用神經網路作為模型的話效果很差。

而如果直接對工單標題內容分詞並做詞向量處理,然後再作為神經網路的特徵通用效果也很差,這個原因很明顯,維度災難,常見單詞隨便達萬或十萬級別。

以上方案行不通,其實還有一個很經典的處理方式,那就是計算文字之間的相似性。通過相似性的值來做決策,標題相似性加內容相似性。

統計詞頻

根據歷史工單,我們要先統計詞頻。注意這裡沒必要用逆文件頻率,而且每個員工其實是有自己的詞雲的,統計員工各自的詞頻才更符合實際情況。對於一個詞,不同的員工的詞頻是不一樣的,詞頻很高的說明平時正好就是做這類單詞相關的工作。此外,標題和內容的詞頻也應該分開統計,所以詞頻其實是有三個維度:員工、問題、內容。

TIM圖片20190416160010

相似性計算

有了詞頻接下來的工作就好做了,詞頻直接對映到向量。有了向量,那麼通過向量空間模型及餘弦相似性便可計算文字之間的相似性。也就是說,對於一個新工單,我計算標題和歷史工單標題的相似性,並且計算內容和歷史工單內容的相似性,將兩者合併,相似性最大的便是要找的工單。當然,實際情況可以設定一個閾值,超過閾值才認為匹配成功。

from numpy import dot
from numpy.linalg import norm
if norm(vec1) * norm(vec2) != 0:
    sim = float(dot(vec1, vec2) / (norm(vec1) * norm(vec2)))
else:
    sim = 0
複製程式碼

TIM圖片20190416163215

效能問題

如果想要上生產系統,現在還有個效能問題,直接計算所有歷史工單的相似性效能相當低下。為了符合在生產環境響應要求,引入全文搜尋引擎。通過搜尋引擎可以減少大量無關的計算,並且能很好控制總體響應。

主要思路是將工單標題和內容進行index,匹配時先通過搜尋引擎將相關內容標題search出來,接著再計算相似性。注意一般不要直接使用全文搜尋引擎計算相似性,太粗糙,沒有正對性。而且方便使用word2vec或bert等模型演算法,當然如果能寫一個引擎的話則可以把所有工作都下沉到搜尋引擎來做。

TIM圖片20190416164221

-------------推薦閱讀------------

我的開源專案彙總(機器&深度學習、NLP、網路IO、AIML、mysql協議、chatbot)

為什麼寫《Tomcat核心設計剖析》

2018彙總資料結構演算法篇

2018彙總機器學習篇

2018彙總Java深度篇

2018彙總自然語言處理篇

2018彙總深度學習篇

2018彙總JDK原始碼篇

2018彙總Java併發核心篇

2018彙總讀書篇


跟我交流,向我提問:

如何智慧化改造工單系統分發

歡迎關注:

如何智慧化改造工單系統分發

相關文章