大數據中非結構化數據的挖掘:文本
一、 點擊流中的非結構化文本數據都有哪些?
首先來定性什么是非結構化文本數據,這里指的是點擊流原始數據中以文字形式展現的數據,包括原始LOG日志以及已經被結構化入庫中的部分數據,比如Adobe Analytics的Data Feed,Webtrekk中的Raw Data。當然,有些數據雖然是文本或字符串的形式,但并不是真正意義上的非結構化,比如瀏覽器的類型信息、推薦來源,雖然取值為文本,但取值都有規律,這些數據在數據庫中更多的是作為外鍵(FK)關聯到維度表,因此都不算嚴格意義上的非結構化數據。 真正的非結構化文本數據,包括:
-
搜索詞:我們永遠無法準確定義用戶的搜索詞都有哪些;
-
完整URL地址:尤其是含有特定監測Tag的地址;
-
特定監測標簽:通常鑒于以URL Tag形式進行監測的情形;
-
頁面名稱:名稱的規范性取決于系統配置信息;
-
用戶自定義標簽:比如用戶對自身的評價標簽——偉岸、高富帥等;
-
文章特定信息:如文章摘要、關鍵字等,跟用戶一樣,文章信息也是因文章而已;
-
用戶評論、咨詢內容:絕對的非結構化段落;
-
唯一設備號:如IMEI、MAC等(這部分通常會作為關聯主鍵和唯一識別標示,不會作為規則提取的字段);
這些信息的特點是:①取值通常是文本或字符串,②長度不一致,單值結果的長度可能是1個字節甚至是1000個字節不等,③無明確的值域范圍。
二、 這些數據都是從哪來的?
這些數據通常都是用戶自定義的,另外也包括由于系統產生或收集的非結構化數據本身。
自定義非結構化文本數據。這些信息通常都是在工具中通常都是自定義的維度獲取,比如webtrends中的metea、Adobe Analytics中自定義Prop和eVar、UA中的Dimension等,如Adobe Analytics中的Prop的字段是以varchar(100)的格式定義的,這意味著如果需要收集數據的單個結果長度超過100個字節,結果將被截斷;而eVar的字段格式與Prop相同,但程度更長,是255,所以從底層數據支持的角度考慮,如果在自定義維度時,在不考慮路徑應用的情況下盡量使用eVar來定義。
系統獲取的非結構化文本數據。比如通過Adobe分類規則生成器、處理規則或JS自動復制變量值的形式都會產生。
三、 非結構化文本數據的應用場景在哪?
通常情況下,非結構化的數據可以跟結構化的數據一樣,作為分析的維度應用到各種報表或OLAP中;但這僅僅能發揮其一小部分作用,原因是只靠固定維度的常規分析難以挖掘非結構化數據中隱含的知識點,因此我們需要借用數據挖掘的相關技術。 以搜索詞為例,站內搜索詞基本上每個工具都會監測 ,但是搜索詞的常規應用場景大多集中在以下幾種:
-
對運營體系來講,看下最近用戶熱搜了哪些詞,哪些詞有什么樣的變化趨勢,并結合轉化效果來指導搜索詞運營;
-
對采銷商品體系來講,挖掘下購買某些品類的用戶通常會通過哪些詞進行搜索,以此來提高在這些展現結果頁的排名以獲得更好的展示和點擊,創造售賣機會;
-
對搜索產品開發而言,用戶搜索后的結果數、排序功能、篩選等功能怎樣,引發了用戶的哪些連環反應,為產品功能優化提供參考;
-
對SEO和SEM來講,站內的搜索詞可以作為站外SEM選詞、匹配規則調整和站內頁面SEO優化的參考…
這些場景固然有用且實用,但其中有一個問題,除了SEO和SEM對于關鍵字的選擇和拓展上,可以采用全量的方式應用以外,其他的業務體系都無法直接拿來復用。換句話說,SEO和SEM可以把所有關鍵字拿來用,但其他業務部門只能用到其中一部分,原因是大量關鍵詞從單純從字面上無法挖掘深層價值。 舉個例子,比如家電采銷需要過濾出某段時間家電相關搜索詞,通過搜索某些關鍵詞詞根,然后用正則或模糊匹配來搜索結果并作進一步分析,但總有很大一部分次是業務無法提取的價值所在,比如:
-
“三星”和“note2”,沒有經驗的人是無法知曉二者是如何關的?
-
搜索“三星”的,你并不知道他想找的是三星手機還是三星電視;
-
我在一次訪問中搜索了n多詞,到底想找什么還是隨便看看?
-
作為家電品類的目標客戶,通常會搜索哪些詞?
-
隱藏用戶搜索詞中的特定需求有哪些——比如超薄、紅色還是商務特點?
四、非結構化文本數據的挖掘實現
默認我們都是通過Data Feed或Raw Data的形式進行挖掘,因此這里講省略掉數據監測收集和入庫的過程,只從數據挖掘的角度進行探討。
1. 基于關聯規則的文本挖掘
關聯規則中最常用的是Apriori,其核心是基于兩階段頻集思想的遞推算法,該關聯規則在分類上屬于單維、單層、布爾關聯規則,常用于事務性的挖掘規則中(所謂事務性規則是事件間的關聯,無事件概念),比如在一次事件中通常哪兩種事件或事物一起發生。 這種關聯規則的問題在于缺乏時間的因素,只能判斷同期內發生事件。比如用關聯規則出現的問題可能是:搜索了三星的用戶還搜索了蘋果,這種結果應用在搜索功能體驗上沒有問題,但是如果應用在有強烈時間關系的場景下就有問題了:
A、B兩篇文章,分別是上下文兩部分,這兩部分通過關聯規則提示相關性必然非常強,但里面的推薦邏輯是看了A(上文)后才看B(下文),而不是先推薦看B,再看A;
A、B兩個商品有強烈的關聯,假設A為鼠標,B為筆記本,通常是先購買筆記本,然后才是購買鼠標,如果再買了鼠標之后推薦買筆記本,顯示失去了邏輯關系。
諸如此類的應用場景非常多,核心是要把事物發生的先后順序考慮在里面。因此關聯規則通常適用于沒有明顯時間序列的業務應用場景,另外對于支持度和置信度的設置都要根據實際業務經驗來調整,過低的支持度和置信度出來的規則沒有意義,過高的設置又帶來規則過少。 關聯規則相對其他數據挖掘模型簡單,更易于業務理解和應用,通常解釋的是“干了某件事之后還會干什么事”,比如:
-
搜了某個關鍵字之后用戶還會搜索什么?
-
看了某頁面/文章/評論之后用戶還會看什么?
-
從某個渠道進入之后通常還會從那個渠道進入?
2. 序列模式挖掘
序列模式挖掘解釋的關系跟關聯模型相同,只不過把時間因素考慮在內,算法包括三類:
-
類Apriori算法:典型代表GSP算法,SPADE算法;
-
基于劃分模式的生長算法:典型代表是FreeSpan和PrefixSpan算法;
-
基于序列比較的算法:代表為Disc-all;
整體來看PrefixSpan和Disc-all在算法效率和性能表現上會更好,同時,考慮到業務對時間上的約束條件,比如我們分析發現,用戶的存留周期只有1年,那么我們只想對1年內發生重復行為的用戶進行針對性動作,1年就是我們的約束條件。這也是在做基于時間序列也需要考慮的因素。
3. 文本聚類挖掘
聚類分析是業務進入數據挖掘場景最基本的需求,通常的需求如,描述某類用戶的基本特征,同時,這些特征可以作為進一步挖掘和分析的基本條件。聚類分析中最常用的算法是K-MEANS聚類和兩步聚類,由于聚類方法簡單實用,在此做分析下二者的差異點和主要應用點:
K-MEANS聚類:客戶特征整體分群分析,大量會員或用戶進行分群,找到不同群體突出特點。特點:①噪點過濾(但是不能控制過濾程度),②分組數自動/指定皆可,③通過標準化減少極值影響。
兩步聚類:兩步聚類與K均值應用場景一致,特點:①要求指定分組數,一定經驗要求,②受極值、噪點影響大且不能設置,③大數據量時開銷資源大,④受初始質點選擇分類受影響大。
通常我們會把文本中的字段作為聚類的變量,以此來挖掘某類用戶的具體特征。文本聚類常用的業務場景是:把用戶分類,然后查看某類用戶中哪些特征較為明顯,然后針對性的做進一步細分和挖掘,比如: 把購買的用戶分成3類(既可以指定,也可以系統自動分類),然后找到每類用戶中的突出特點,如A類用戶對優惠券、折扣的敏感度高,那么可以結合其他特征定義為價格主導型客戶;B類用戶對產品需求集中度高,但受價格波動和其他因素影響較小,屬于產品導向型;C類用戶對評論、咨詢、分享的參與率高,并且明顯影響其購買決策,那么這類用戶屬于輿論導向型。將這些用戶簡單分類之后,再深挖其中每類用戶受其中每個變量的影響程度,比如結合決策列表和決策樹深挖其購買決策影響因素,找到某類用戶影響決策的最終因素。
4. 文本規則提取
所謂的文本規則提取,指的是把文本作為用戶提取規則的一個變量,通常用決策樹、SVM、SLRM來提取業務規則,比如要找到購買家電類的用戶,他們對產品有哪些需求點,可以通過以下幾種方式提取規則:
決策樹:決策樹挖掘模式通常使用C 5.0、C&RT、CHAID、QUEST等,決策樹模型的特點是以樹狀展現規則,并按照規則對目標的影響程度分支,非常利于業務理解和規則提取。
文本規則提取通常也叫做分類,意思是把具備某類目標的用戶中影響因素***的幾個規則提取出來。這是業務應用最常用的一種數據挖掘模型,常用于:
-
在已經找到的目標用戶群體中,發現流失用戶的集中特點,比如***一次購買間隔超過6個月,此時可以對超過6個月的用戶做流失前的挽回;
-
要針對A類商品促銷,可以針對購買了A類商品的用戶進行規則挖掘,可能找到的是上次購買的是C商品,同時收入高于1000,地域是北京的用戶,此時直接提取出具備該規則的用戶進行精準營銷;
-
比如現在有一批新品需要推廣,需要找到目標人群,可以針對已知人群進行挖掘,最終出來的結果可能是搜索搜索了黑色、篩選了“新品上架”、年齡是25歲以下的女性用戶,針對具備這些規則的用戶的精準營銷必然具有很好的效果和拉升作用;
-
把客戶進行A/B/C分級之后,找到A類客戶評論、標簽和關鍵字中的關鍵字段,找到各類用戶的典型情感標簽。
以上四類是文本數據挖掘中最常用的場景,由于文本的限制,文本不能參與到數據挖掘中對變量類型要求是數據值相關的字符集的建模中。但文本經過處理后可以作為建模的重要變量,并且該變量由于非結構化的屬性,具有更多的色彩。
在文本挖掘中,充滿挑戰的是對文本段落的挖掘和關鍵字的提取,比如用戶在一段評論中,如何提取大段文字中的關鍵字標簽是關鍵,當然欣喜的是國內已經有些公司有實力做文本關鍵字的提取,同時結合SEO的方法基本能有效提煉大段文字中的關鍵字。
但另一個挑戰是文本的“語意”。由于文本在漢語中的豐富的色彩,對文本的感情屬性的判斷需要根據語境,比如“很好”這個詞,普通情況下是贊美的語意,但如果上文說到是負面,再結合這個詞,則明顯是諷刺的意思。文本語意挖掘在用戶輿論風向標、用戶評價積極性、用戶滿意度和好感度中的應用及其重要,目前尚沒有有效的機器解決方案,當前更多的是結合機器算法以及人工識別是主流解決方法。
當然,隨著機器學習算法的深入研究以及CPU性能的提高,機器很有可能達到或超過人腦的能力,屆時可能會實現對語言的判斷,另外通過人工干預預設固定場景和學習路徑,也許會解決中國語言中語境的問題。