1. 程式人生 > >文字資料下的使用者畫像

文字資料下的使用者畫像

一、概述

1、使用者標籤的獲取:喜好關鍵詞表:一個key-value 鍵值對。

使用者喜好的關鍵詞-喜好程度”這樣的Key-Value對。而這個map最開始當然是空的,而從任意時刻開始,我們可以開始跟蹤某使用者的瀏覽行為,每當該使用者新瀏覽了一條新聞,我們就把該新聞的“關鍵詞-TFIDF值”“插入”到該使用者的喜好關鍵詞表中。當然這個“插入”要考慮關鍵詞表裡已經預先有了某預插入的關鍵詞的情況,那麼在這個基礎上,我們可以將預插入的關鍵詞的TFIDF值直接和詞表裡的值加起來。

當然,考慮到儲存問題,我們可以為使用者的喜好關鍵詞表設定一個容量上限,比如最多1000個詞,當然具體數值還是需要在實際執行過程根據效果做調整。
2、文字標籤的獲取:文字的關鍵詞、主題、嵌入向量等。

3、通過隱語義模型, 為使用者推薦感興趣的內容。

基於內容的推薦系統,最簡單的當屬計算使用者與物品之間的相似度了。具體來說,物品畫像有對應的稀疏向量,使用者畫像也有對應的稀疏向量,兩者之間計算餘弦相似度,之後按照相似度結果對物品進行排序。

使用上面的簡單演算法有一個天然優勢就是可解釋性很強,但是並不屬於機器學習方法,因為沒有考慮推薦系統的目標,在 推薦系統中重要卻又容易被忽視的問題有哪些 中介紹了目標思維的重要性,如果要考慮目標的話,我們可以構建一個監督學習模型。

具體以實際應用場景來說,首先要確定我們推薦系統的目標,可以是點選率、購買率、閱讀時間長短等等,目標需要根據不同的業務和場景來確定。確定了目標之後,我們開始收集跟目標相關資料來作為訓練資料。

每一個訓練資料樣本都包含兩部分,一部分是特徵,包含使用者畫像,物品畫像以及一些上下文資訊,比如時間、地理位置、網路環境、裝置等等,另一部分是目標,目標的資料是由使用者互動行為得到的,比如標註使用者是否點選,是否購買,閱讀時間等。

接下來根據訓練樣本來訓練分類器或者回歸器,取決於推薦系統目標(目標為點選率,購買率時屬於分類問題,閱讀時間長短屬於迴歸問題),按照以上這種方式構建的推薦系統,可以一直去迭代優化。

總結

總結一下,基於內容的推薦有一些天生的優勢,也是非常重要的,基於內容推薦時,需要兩類資料:物品畫像,使用者畫像。基於內容來構建推薦系統可以採用的演算法有簡單地相似度計算,也有使用機器學習構建監督學習模型。

二、定義

使用者畫像是一個向量,是推薦系統構築過程中的一個環節。有兩個關鍵:維度和量化。

在文字領域,使用者畫像就是對文章喜好的標籤。

把所有非結構化的文字結構化,去粗取精,保留關鍵資訊;
根據使用者行為資料把物品的結構化結果傳遞給使用者,與使用者自己的結構化資訊合併。

前面把使用者的文字、物品的文字進行結構化後得到了諸如標籤(關鍵詞、分類)、主題、嵌入向量,接下來就是如何把物品的這些標籤傳遞給使用者。

三、步驟

1、非結構化文字之結構化,主要有如下6個方法:

成熟的文字挖掘、NLP演算法有以下幾類:
1. 關鍵詞提取:是最基礎的物品畫像的標籤來源,也為其他文字分析提供資料基礎,如TF-IDF,TextRank;
2. 實體識別:人、位置、地點、著作、影視劇、歷史事件和熱點事件等,最長基於詞典的方法結合CRF模型;類比分詞和詞性標註,實體識別是指對每一個分好的次,識別為定義好的命名實體類集合之一。
3. 內容分類:將文字按照分類體系分類,用分類來表達較粗粒度的結構化資訊;SVM, FastText。
4. 文字聚類:在無人制定分類體系的前提下,無監督地將文字劃分成多個類簇也很常見,別看不是標籤,類簇編號也是使用者畫像的常見構成;
5. 主題模型:從大量已有文字中學習主題向量,然後再預測新的文字在各個主題上的概率分佈情況,也很實用,其實這也是一種聚類思想,主題向量也不是標籤形式,也是使用者畫像的常用構成;LDA主題模型,給出文章的topic。
6. 嵌入:也就是Embedding,從詞到篇章,無不可以學習這種嵌入表達。嵌入表達是為了挖掘出字面意思之下的語義資訊,並且用有限的維度表達出來。得到稠密的詞向量。
---------------------

2、下面是幾種常用的文字結構化演算法:

2.1.1 TF-IDF

TF-Term Frequency是詞頻,IDF-Inverse Document Frequency是逆文件頻率。TF-IDF提取關鍵詞的思想是來自於資訊檢索領域,其思想很樸素:1)在一篇文章中反覆出現的詞更重要;2)在所有文件中都出現的詞更不重要。而這兩個點分別用TF和IDF兩個指標表示。
- TF,詞頻,在要提取關鍵詞的文件中出現的次數;
- IDF,在現有所有文件中,統計沒歌詞出現在了多少個文件中,記為n

 IDF的特點 所有詞的N 一樣,所以出現文件數越少的詞,IDF值越大。若某次的文件頻率為0,為防止計算出無窮大的IDF,所以上式的分母中+1進行平滑

計算出TF和IDF後,將兩項相乘,就得到每個詞的權重。
2.1.2 TextRank

TextRank和Google的PageRank有一些關係,PageRank用來衡量網頁重要性,而TextRank與之類似:
1. 文字中,設定一個視窗寬度,比如 K 個詞,統計視窗內的詞和詞的共現關係,將其看成無向圖。圖就是網路,由存在連線關係的節點構成,所謂無向圖,就是節點之間的連線關係不考慮從誰出發,有關係就對了;
2. 所有詞初始化的重要性都為1;
3. 每個節點把自己的權重平均分配給“和自己有連線”的其他節點;
4. 每個節點將所有其他節點分給自己的權重求和,作為自己的新權重;
5. 如此反覆迭代第 3、4 兩步,直到所有的節點權重收斂為止。

通過 TextRank 計算後的詞語權重,呈現出這樣的特點:那些有共現關係的會互相支援對方成為關鍵詞。
2.1.3 內容分類

內容分類即短文字分類,較常見的經典演算法有SVM,NaiveBayes,在工具上最常用的是Facebook開源的FastText。文字分類在現在資訊流充斥的各APP或Web平臺隨處可見,知乎、今日頭條、微信、微博……,文字分類的結果,可以被用來作為使用者冷啟動時的興趣探索手段。
2.1.4 實體識別

這應該算得上是一個NLP技術,命名實體識別(也常常被簡稱為 NER,Named-Entity Recognition)在 NLP 技術中常常被認為是序列標註問題,和分詞、詞性標註屬於同一類問題。而所謂序列標註,就是給一個字元序列,從左往右遍歷每個字元,一邊遍歷一邊對每個字元分類,分類的體系因序列標註問題不同而不同,分詞問題、詞性問題、實體識別。

對於序列標註問題,通常的演算法就是隱馬爾科夫模型(HMM)或者條件隨機場(CRF),我們在推薦系統中主要是挖掘出想要的結構化結果,對其中原理有興趣再去深入瞭解。實體識別還有比較實用化的非模型做法:詞典法。提前準備好各種實體的詞典,使用trie-tree資料結構儲存,拿著分好的詞去詞典裡找,找到了某個詞就認為是提前定義好的實體了。
2.1.5 聚類

傳統聚類方法在文字中的應用,今天逐漸被主題模型(Topic Model)取代,同樣是無監督模型,以 LDA 為代表的主題模型能夠更準確地抓住主題,並且能夠得到軟聚類的效果,也就是說可以讓一條文字屬於多個類簇。

LDA 模型需要設定主題個數,如果你有時間,那麼這個 K 可以通過一些實驗來對比挑選,方法是:每次計算 K 個主題兩兩之間的平均相似度,選擇一個較低的 K 值;如果你趕時間,在推薦系統領域,只要計算資源夠用,主題數可以儘量多一些。

另外,需要注意的是,得到文字在各個主題上的分佈,可以保留概率最大的前幾個主題作為文字的主題。LDA 工程上較難的是並行化,如果文字數量沒到海量程度,提高單機配置也是可以的,開源的 LDA 訓練工具有 Gensim,PLDA 等可供選擇。

著名的《LDA數學八卦》是靳志輝大牛所作,大牛原來在騰訊廣點通任高階研究員,2018年開始走上了創業這條不歸路,《正態分佈的前世今生》也是大牛的傑作,有興趣的感覺找資源拜讀~
2.1.6 Embedding

Embedding其實是一個數學概念,以此前如為例:詞嵌入,也叫word embedding,前面的結構化方案,除了 LDA,其他都是得到一些標籤,而這些標籤無一例外都是稀疏的,而詞嵌入則能夠為每一個詞學習得到一個稠密的向量。
拿著這些向量可以做以下的事情:
1. 計算詞和詞之間的相似度,擴充結構化標籤;
2. 累加得到一個文字的稠密向量;
3. 用於聚類,會得到比使用詞向量聚類更好的語義聚類效果。

這方面當然就屬大名鼎鼎的 Word2Vec了。Word2Vec 是用淺層神經網路學習得到每個詞的向量表達,Word2Vec 最大的貢獻在於一些工程技巧上的優化,使得百萬詞的規模在單機上可以幾分鐘輕鬆跑出來,得到這些詞向量後可以聚類或者進一步合成句子向量再使用。
 

3、文字內容特徵化

內容特徵化即給內容打標籤。

內容標籤來源:已有的標籤、網路抓取的流行標籤、對內容的特徵詞提取。

給內容打標籤方式:人工打標籤、機器學習的方法打標籤。針對機器自動打標籤,需要採取機器學習的相關演算法來實現,即針對一系列給定的標籤,給內容選取其中匹配度最高的幾個標籤。這不同於通常的分類和聚類演算法。可以採取使用分詞 + Word2Vec來實現,過程如下:

  • 將文字語料進行分詞,以空格,tab隔開都可以,使用結巴分詞。
  • 使用word2vec訓練詞的相似度模型。
  • 使用tfidf提取內容的關鍵詞A,B,C。
  • 遍歷每一個標籤,計算關鍵詞與此標籤的相似度之和。
  • 取出TopN相似度最高的標籤即為此內容的標籤。

此外,可以使用文字主題挖掘相關技術,對內容進行特徵化。這也分為兩種情況:

  1. 通用情況下,只是為了效果優化的特徵提取,那麼可以使用非監督學習的主題模型演算法。如LSA、PLSI和GaP模型或者LDA模型。
  2. 在和業務強相關時,需要在業務特定的標籤體系下給內容打上適合的標籤。這時候需要使用的是監督學習的主題模型。如sLDA、HSLDA等。

4、使用者特徵化

使用者特徵化即為使用者打標籤。通過使用者的行為日誌和一定的模型演算法得到使用者的每個標籤的權重。

  • 使用者對內容的行為:點贊、不感興趣、點選、瀏覽。對使用者的反饋行為如點贊賦予權值1,不感興趣賦予-1;對於使用者的瀏覽行為,則可使用點選/瀏覽作為權值。
  • 對內容發生的行為可以認為對此內容所帶的標籤的行為。
  • 使用者的興趣是時間衰減的,即離當前時間越遠的興趣比重越低。時間衰減函式使用1/[log(t)+1], t為事件發生的時間距離當前時間的大小。
  • 要考慮到熱門內容會干預使用者的標籤,需要對熱門內容進行降權。使用click/pv作為使用者瀏覽行為權值即可達到此目的。
  • 此外,還需要考慮噪聲的干擾,如標題黨等。

5、隱語義模型

有了內容特徵和使用者特徵,可以使用隱語義模型進行推薦。這裡可以使用其簡化形式,以達到實時計算的目的。

四、群使用者畫像

通過計算相似度,聚類得到使用者群體畫像,反應了一個群體的典型特徵,通常用聚類完成之後各個類的簇中心點表示這個簇。