王海
摘 要:在本次研究中,筆者從統(tǒng)計自然語言處理的角度,對移動端生成的異常日志做了一個系統(tǒng)分析。按照實際情況對統(tǒng)計自然語言處理原理進行了闡述。然后,利用統(tǒng)計自然語言處理原理對異常日志做大數據處理應用進行了論述,以供參考。
概述
隨著自2010年來,移動網絡的迅猛發(fā)展,從2G到3G再到4G,還有未來可期的5G。更快捷的移動網絡不僅讓用戶得到了很多互聯(lián)網服務,而且移動端本身也可以上傳各種類型的數據及內容到云端,以供互聯(lián)網服務提供商進行大數據分析。本文就論述移動端所生成大數據的多元用途、大數據技術處理,以及由此所衍生的技術范疇。
質量分析
通常系統(tǒng)自帶應用,如電話、短信等等。以及豐富繁多的第三方應用,如:微信、支付寶等等。衡量系統(tǒng)自帶應用和第三方應用這兩類應用質量的技術指標有:
1.崩潰率,崩潰即是應用發(fā)生了嚴重的異常,系統(tǒng)強制將應用退出。崩潰率就是,一個應用一天發(fā)生的崩潰次數,除以該應用的一天內的啟動次數。
3.用戶界面的刷新速率。
這三個技術指標,實際上對應著三類異常的發(fā)生概率。當三類異常發(fā)生時,會產生系統(tǒng)日志,那么,如何收集分散在各地的用戶手頭上的手機內的異常日志呢?這就需要上報機制,通過移動網絡上傳到云端。
通過將移動端的崩潰日志,無響應日志上報到云端,就可以找到產生崩潰和無響應的原因,并定位在客戶端代碼中的不良代碼段。把不良代碼段進行優(yōu)化修改,通過驗證就可以在下個版本發(fā)布出去,那么下個版本的移動端的軟件質量就得到了提升。
應用發(fā)生空指針異常并崩潰時生成的日志
如果一個應用的日活躍數為一百萬,崩潰率為1%,那么云端每天收集到的崩潰日志的份數為:一百萬 x 1% = 一萬。日活躍數一百萬還只是相對較小規(guī)模,即便如此每天產生一萬份日志,人工也是無法及時處理的。所以就需要借助大數據技術的處理能力。
首先是把日志做分類處理,以便于開發(fā)人員分門別類的分析產生異常的原因,因為發(fā)生異常的原因有多種,所以產生的異常日志的內容樣式也是有多種。這時就需要借助大數據技術的分類算法,來對數量繁多的異常日志進行分類處理了。實際上這里提到的大數據技術,就是統(tǒng)計自然語言處理。接下來的這個段落就是介紹如何將統(tǒng)計自然語言處理運用到異常日志的分類處理。
當今的自然語言處理方式,就是使用數學統(tǒng)計的方式。讓計算機處理自然語言,就是在自然語言這種上下文相關的特性建立數學模型。這個數學模型就是在自然語言處理中常說的統(tǒng)計語言模型(Statistical Language Model),它是今天所有自然語言處理的基礎。
舉個例子,如下這兩句話:
△美聯(lián)儲主席昨天告訴媒體7000億美元的救助資金將借給上百家銀行、保險公司。(句一)
△聯(lián)儲美主席昨保險天救助告訴媒體7000億美上百家銀行元資金的將借給、公司。(句二)
統(tǒng)計模型的出發(fā)點很簡單,并不是理解這句話的語法語義來判別是否合理,而是看它的可能性大小如何。至于可能性就用概率來衡量。句一很通順好理解,它的出現概率大致是10-20。句二是病句無法理解,它的出現概率大致概率是10-50。因此,句一的出現的概率遠大于句二。
這個方法更普遍而嚴格的描述是:假定S表示某一個有意義的句子,由一連串特定順序排列的詞w1, w2, …, wn組成,這里n是句子的長度。我們想知道S在文本中出現的可能性,也就是數學上所說的S的概率P(S)。因此,需要有個數學統(tǒng)計模型來估算。既然S = w1,w2,…, wn,那么不妨把P(S)展開表示:
P(S) = P(w1,w2,…, wn)
利用條件概率的公式,S這個序列出現的概率等于每一個詞出現的條件概率相乘,于是P(S) = P(w1,w2,…, wn)可展開為:
P(S) = P(w1,w2,…, wn)
= P(w1) P(w2 | w1)P(w3 | w1, w2) … P(wn | w1,w2,…, wn-1)
其中P(w1)表示第一個詞w1出現的概率;P(w2 | w1)是在已知第一個詞的前提下,第二個詞的概率;以此類推。不難看出,詞wn的出現概率取決于它前面的所有詞。
為了減少計算量,就假設任意一個詞wi出現的概率只同它前面的詞 wi-1有關,于是問題就變得很簡單了。這種假設在數學上稱為馬爾可夫假設?,F在S出現的概率就變得簡單了:
P(S) = P(w1,w2,…, wn)
= P(w1) P(w2 | w1)P(w3 | w2) … P(wn | wn-1)
此公式對應的統(tǒng)計語言模型是二元模型(Bigram Model)
接下來的問題就是如何估計每個詞出現的條件概率P(wi | wi-1)。根據它的定義:
P(wi | wi-1)=P(wi-1,wi)/P(wi-1)
因為有了大量數字化文本,也就是專業(yè)人士講的語料庫(corpus),只要數一數wi-1, wi這對詞在統(tǒng)計的文本中前后相鄰出現了多少次#( wi-1, wi),以及wi-1本身在同樣的文本中出現了多少次#(wi-1),然后用#(wi-1, wi)和#(wi-1)這兩個數分別除以語料庫的大小#,即可得到二元組的相對頻度。
根據大數定理,只要統(tǒng)計量足夠,相對接頻度就等于概率,聯(lián)合概率和邊緣概率就可以這樣表達:
P(wi-1,wi)=(wi-1,wi)/# P(wi-1)=(wi-1)/#
再把聯(lián)合概率P(wi-1,wi)和P(wi-1)邊緣概率帶入上面的條件概率公式:
P(wi | wi-1)=(wi-1,wi)/(wi-1)
上述的推導過程,還是明確的說明了現代自然語言處理的方式就是使用數學統(tǒng)計的方式。更是一種思維方式的闡述,我們再做自然語言處理的很多細分領域的工作時,都是基于歷史已有的語料資源,利用數學統(tǒng)計知識,來估算現有情況和歷史相符合的概率大小。
如果要借助統(tǒng)計自然語言處理的方式,對異常日志這一自然語言的特殊子類進行分類,就要做建立異常日志的特有語料庫。利用典型類型的異常日志作為語料庫的具體實例內容,作為“崩潰、應用無響應、內存溢出錯誤”這三類異常日志類型的基準,移動端所上報的異常日志和異常日志語料庫中的基準,做上述的相似性概率計算,即可得出和哪個類型的異常日志基準相似概率最大,即算作哪個類型的異常日志分類。
這個異常日志分類的數據處理方式,是有監(jiān)督的處理方式,因為基于異常日志語料庫中的基準日志作為標簽。通常在提升移動端應用的質量過程中,需要及時修復用戶遇到最多的軟件異常缺陷。這個需求場景下,就需要把相同位置發(fā)生的異常都收集整理到一起組成一個集合,再對多個集合中的異常日志數量做排序,就可以得到用戶遇到次數最多的異常。
那么如何將相同位置發(fā)生的異常都收集整理到一起組成一個集合呢?同樣要利用統(tǒng)計自然語言處理的大數據處理方式,即聚類,放到統(tǒng)計自然語言處理這個范疇內,就是主題模型。
我再回到統(tǒng)計自然語言處理領域探討主題模型,假如有一篇文章文本,通過里面的詞,來確定它是什么類型的文章,如果文章中出現很多體育類的詞,比如,籃球,足球之類的,那么主題模型就會把它劃分為體育類的文章。主題模型,顧名思義就是文章和主題的對應關系,納入統(tǒng)計的概念講就是文章和主題的對應概率計算。顯然文章由眾多詞所組成,也就延伸為:文章-主題-詞的關系及相應的概率問題。
LDA(Latent Dirichlet Allocation)的定義:
△是實現主題模型的一種無監(jiān)督的方法。在訓練時不需要手工標注的訓練集,需要的是文檔集和指定主題的個數。
△是一種典型的詞袋模型,它認為一篇文檔是由一組詞組成的集合,詞與詞之間沒有順序和先后關系。
△是一種主題模型,它可以將文檔集中的每篇文檔按照概率分布的形式給出。
△一種典型的詞袋模型,它認為一篇文檔是由一組詞組成的集合,詞與詞之間沒有順序和先后關系。
LDA的數學解釋是:同一主題下,某個詞出現的概率,以及同一文檔下,某個主題出現的概率,兩個概率的乘積,可以得到某篇文檔出現某個詞的概率。
現有的是詞和文章,那么主題是如何冒出來的?這是我比較困惑的。但實際上LDA的輸出結果只是對主題模型進行分類,并沒有給出具體的主題模型的類別,如:體育、財經這樣的具體主題類型并沒有給出。
LDA的輸入是文檔,輸出有兩項:
△一個評估,多少主題對應一個文檔,實際上是概率
△另一個評估,一個主題生成多少詞,實際上也是概率
LDA的核心就是這個公式:
P(詞 | 文檔) = P(詞 | 主題)P(主題 | 文檔)
數學表達式:
P(w | d) = P(w | t) * P(t | d)
針對異常日志這樣的自然語言,就需要把其中發(fā)生異常日志的位置字段做高權重運算。這樣就可以按照“位置字段”對異常日志進行聚類,生成異常日志的主題模型。
通過上報異常日志數據,對日志數據進行分類和聚類的處理,再解決重點的缺陷,最后通過發(fā)布新版本這樣的流程,就可以快速高效的提升應用的質量,提升用戶體驗的同時也就更加圓滿的落地了業(yè)務。否則在一個崩潰、無響應頻發(fā)的應用內,業(yè)務流程都用可能無法運行通暢,更是無法談論商業(yè)價值了。
這就是一個運用大數據技術,高效提升移動端應用質量的一個范例。
展望,通過移動端應用生成的大數據,還可以進行:
·用戶行為分析,哪些位置、樣式、色彩的圖標或按鈕會比較顯著的吸引用戶產生點擊行為??梢杂涗浻脩舻狞c擊操作路徑,就能夠通過產品設計層面,規(guī)劃出更為符合大眾直覺的頁面層級。
·商業(yè)信息分析,對于電商類移動端應用,可以通過移動端上報的數據,整理分析得出店鋪的訪購率,客單價
參考文獻:
Android全埋點解決方案 王灼洲 著 ISBN:978-7-111-62149-2
統(tǒng)計學習方法 李航 著 ASIN:B01M8KB8FF
劉韻,張遙.大數據管理:概念、技術與挑戰(zhàn)[J].數碼世界,2016,(6):16~16.