一種用戶行為數(shù)據(jù)采集方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)采集技術(shù)領(lǐng)域,尤其涉及一種用戶行為數(shù)據(jù)采集方法。
【背景技術(shù)】
[0002]通過采集和分析用戶的行為數(shù)據(jù),能夠了解用戶的使用習慣和使用體驗,便于軟件開發(fā)人員進行軟件改進,同時通過了解用戶的使用習慣,也可以定向推送一些服務。
[0003]移動電子設(shè)備自身的操作系統(tǒng)內(nèi)部提供大量的API (Applicat1n ProgrammingInterface,應用程序編程接口),以方便軟件開發(fā)人員編程時調(diào)用。一般可調(diào)用相關(guān)的API直接記錄用戶操作id到文件再上傳到服務器,但這樣能采集到的信息有限,同時存在因記錄文件過大造成上傳較慢的風險,而且不利于服務器的數(shù)據(jù)挖掘,容易造成服務器接口壓力過大,同時監(jiān)控行為也會加大移動設(shè)備的能耗。
【發(fā)明內(nèi)容】
[0004]針對現(xiàn)有技術(shù)中的用戶行為數(shù)據(jù)采集方法存在的上述技術(shù)問題,本發(fā)明公開了一種新的用戶行為數(shù)據(jù)采集方法。
[0005]本發(fā)明的發(fā)明目的通過下述技術(shù)方案來實現(xiàn):
一種用戶行為數(shù)據(jù)采集方法,其具體包括以下的步驟:步驟一、程序啟動后,監(jiān)控線程啟動,所述監(jiān)控線程用于在用戶操作程序時,將用戶的行為數(shù)據(jù)放入到隊列中;其中行為數(shù)據(jù)包括用戶操作id以及相關(guān)的操作信息;步驟二、從隊列中獲取一條用戶的行為數(shù)據(jù),然后按照定義好的詞表以及語義將該行為數(shù)據(jù)組裝成一個有意義的語句,所述詞表為事先定義好的所有有可能的用戶行為;步驟三、將步驟二組裝的有意義的語句保存到記錄文件中,然后在隊列中刪除本條記錄。通過該方法將用戶的行為數(shù)據(jù)進行有效的采集。
[0006]更進一步地,上述方法還包括當存在新的語句需要保存時,判斷記錄文件的閾值是否大于設(shè)定的閾值,是則創(chuàng)建新的記錄文件,否則將語句保存在原來的記錄文件中。
[0007]更進一步地,上述方法還包括當步驟三執(zhí)行時,添加一個全局的鎖保護步驟三的執(zhí)行。防止在保存記錄到本地的同時上傳記錄模塊也去操作該記錄文件,從而造成沖突。
[0008]更進一步地,上述方法還包括當用戶沒有操作時,監(jiān)控線程處于休眠狀態(tài),執(zhí)行操作時才喚醒。通過這樣的方法在最大程度上節(jié)省能耗。
[0009]更進一步地,上述在用戶操作程序時,將用戶的行為數(shù)據(jù)放入到隊列中具體為:在需要統(tǒng)計用戶操作行為的地方預埋統(tǒng)計點。
[0010]更進一步地,上述詞表包括用戶操作id子表、軟件功能模塊子表、用戶操作行為子表和操作結(jié)果子表。
[0011]更進一步地,上述方法還包括判斷隊列中是否還有數(shù)據(jù),若有,則繼續(xù)從隊列中獲取用戶的行為數(shù)據(jù),若無,則繼續(xù)監(jiān)控,等待用戶操作。
[0012]更進一步地,上述方法還包括當程序終止時,監(jiān)控線程也結(jié)束。
[0013]更進一步地,上述方法還包括將記錄的用戶行為數(shù)據(jù)定時上傳到服務器。其中定時可以為固定的時間點,比如哦O點,7點,12點,也可以是固定的時間差,比如間隔4個小時等。
[0014]通過采用以上技術(shù)方案,本發(fā)明的有益效果是:用戶的行為數(shù)據(jù)是基于詞表組成的有意義的操作,方便服務器端進行數(shù)據(jù)挖掘。設(shè)置上傳的時間間隔與最小上傳記錄文件大小的閥值,便于減輕服務器的壓力,節(jié)省成本。考慮移動設(shè)備的性能問題,設(shè)置記錄文件的最大閥值。使用運行循環(huán)及信號技術(shù),只有用戶操作時才會喚醒監(jiān)控線程,以達到該線程的最低能耗。
【附圖說明】
[0015]圖1為本發(fā)明的用戶行為數(shù)據(jù)采集的流程圖。
[0016]圖2為本發(fā)明的將用戶行為數(shù)據(jù)上傳到服務器的流程圖。
【具體實施方式】
[0017]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合具體實施例,對本發(fā)明進行進一步詳細的說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0018]本發(fā)明公開了一種用戶行為數(shù)據(jù)采集方法,其具體包括以下的步驟:
步驟一、事先根據(jù)需要采集的用戶行為定義好詞表,所述詞表包括用戶所有可能的操作行為;所述詞表可以按照以下的方式設(shè)定,其包括用戶操作id子表、軟件功能模塊子表、用戶操作行為子表和操作結(jié)果子表。所述用戶操作id子表用于記錄每個id代表的含義,例如表示用戶取景界面拍照;所述軟件功能模塊子表用于記錄實現(xiàn)功能的軟件模塊,例如:Camera表不相機模塊;所述用戶操作行為子表用于記錄用戶的行為,例如:Click_Camera_Button表示點擊了拍照按鈕;所述操作結(jié)果子表用于統(tǒng)計操作結(jié)果,例如:GetUserInfo_Requst_Result表示獲取用戶請求的結(jié)果。
[0019]步驟二、在需要統(tǒng)計用戶操作行為的地方預埋統(tǒng)計點;例如:我們需要統(tǒng)計用戶的拍照行為,則在拍照操作的響應函數(shù)中取出用戶操作id子表中的id_l_l,由于該行為是相機模塊產(chǎn)生的,貝1J又取出Camera,再取出用戶的操作行為Click_Camera_Button等信息。
[0020]步驟三、當程序啟動時,開啟兩個線程,一個用于監(jiān)控用戶行為,獲取行為數(shù)據(jù),一個用于上傳記錄到服務器。
[0021]步驟四、當用戶操作時,將對應預埋點的用戶操作id以及相關(guān)的操作信息(例如:id_l_l, Camera, Click_Camera_Button 等)組成一個字典結(jié)構(gòu),如下所不:
{
EventId = “id_l_l,,,
In = “Camera,,,
Act1n = “Click_Camera_Button,,,
Userid = “A792C1D15AEF”,
}
并將其放入到一個安全隊列中。
[0022]步驟五、從隊列中獲取一條字典數(shù)據(jù),然后從字典中取出對應信息的值,再將對應的值按照語義格式化成一個串(例如:EventId:1d_l_l Userid:A792C1D15AEFAct1n:Click_Camera_Button In:Camera 即是說發(fā)生了事件用戶 A792C1D15AEF在相機模塊點擊了拍照按鈕)。
[0023]步驟六、檢查本地最新記錄文件的大小,如果大于設(shè)定的閥值(可設(shè)置為50KB,但不限定于50KB),則創(chuàng)建一個新的記錄文件,如果小于設(shè)定的閥值,則保存記錄到本地最新的記錄文件中。
[0024]步驟七、將本次記錄(即步驟六中已保存的記錄)從隊列里刪除。并判斷隊列中是否還有數(shù)據(jù),若有,則回到步驟五,若無,則繼續(xù)監(jiān)控,等待用戶操作。若程序終止,則監(jiān)控也結(jié)束。
[0025]具體的一個優(yōu)選例
在將行為數(shù)據(jù)放入到安全隊列時,添加一個全局的鎖,用于保護本段代碼的執(zhí)行,防止在保存記錄到本地的同時上傳記錄模塊也去操作該記錄文件,從而造成沖突,若成功鎖住,則執(zhí)行下一步:從隊列中獲取一條數(shù)據(jù),取出此次用戶操作相關(guān)的信息結(jié)構(gòu),然后按照語義將該結(jié)構(gòu)中的信息組裝成一個有意義的語句。
[0026]如圖1所示的本發(fā)明的用戶行為數(shù)據(jù)采集的流程圖。
[0027]I)首先定義好詞表,其中,詞表分為用戶操