A Self-Training Approach for Short Text Clustering
這是一篇關於短文本聚類的文章。
“因爲隨着社交媒體的廣泛使用,短文本已經成爲web上流行的文本形態。然而與長文本不同,使用詞袋模型和TF-IDF表示的短文本存在着稀疏的問題。”
短文本的稀疏問題
假設有短文本數據集X={x1,x2…xn}。
對於xi∈X,假設xi中的詞彙數爲ni,那麼數據集X的詞彙數量V爲
如果用詞袋模型表示 xi ,記爲 xi ,xi ∈ ,那麼xi 的“稀疏率”可以表示爲,通常ni << V 。所以短文本使用詞袋模型表示是非常稀疏的,換言之,向量xi 中有很多維度上的值爲0。
如果使用TF-IDF來表示xi ,對於wj ∈ xi , j = 1、2、…ni,我們計算
因爲對於xi中任意的wj出現的次數一般爲1,所以他們的TF值難以區分。所以計算出的TF-IDF值不能準確的反映wj的特徵。
“過去解決短文本稀疏問題的方法是引入額外的資源豐富文本的表示。最近,低維度的表示展示瞭解決短文本稀疏向量的潛能。Word embedding、sentence embedding以及documents embedding已經在衆多NLP任務中有了良好的表現。”
SIF Embedding
論文使用了SIF Embedding,SIF來自《A Simple but Tough-to-Beat Baseline for Sentence Embeddings》。
SIF的計算分爲兩步:
1、對句子中的每個詞向量,乘以一個權重 a/(a+p(w)),其中 a 是一個超參數,p(w) 爲該詞的詞頻(在整個數據集中的頻率)。
2、計算句向量矩陣的第一個主成分 u,讓每個句向量減去它在 u 上的投影。
“我們的短文本聚類模型包含三步:1、使用SIF得到短文本向量;2、使用一個autoencoder重構短文本向量;3、(Self-training)將聚類作爲輔助的目標分佈,聯合微調encoder。”
Self-training
使用autoencoder將SIF embedding的結果降維後作爲self-training的初始化。然後初始化聚類中心(文章在實驗階段使用100次Kmeans初始化不同的中心,然後選擇最好的中心)。然後交替以下兩個步驟:
1、計算一個向量(文本)放入每個簇的概率
2、計算輔助的概率分佈,作爲encoder的目標
步驟1:向量zi放入uj簇的概率符合自由度爲1的學生T分佈。
步驟2:輔助目標分佈P相較於相似度qij是有更嚴格的概率計算。目的是提高簇的純度、提高置信度。這阻止了大簇扭曲隱藏的特徵空間。
訓練的loss:
實驗結果
我的總結
之所以這個self-training取得了較好的效果,是因爲它將聚類的目標函數作爲了encoder的輔助目標融進了訓練當中。這意味着聚類任務和embedding、降維過程不是割裂的。
在以往的聚類研究當中,研究者都遵循着下圖的結構:
這意味着聚類任務的提升只能依靠預處理技術、特徵提取、特徵降維技術的提升。這也就是作者寫道的:“最近,低維度的表示展示瞭解決短文本稀疏向量的潛能。Word embedding、sentence embedding以及documents embedding已經在衆多NLP任務中有了良好的表現。”
但是本文將聚類的目標和encoder的訓練目標相融合,就意味着聚類算法與特徵提取不是割裂的兩個任務,可以通過聚類算法影響encoder的效果,從而使其成爲更符合聚類任務的encoder。
參考文獻
Amir Hadifar , Lucas Sterckx , Thomas Demeester and Chris Develder . 2019 . A Self-Training Approach for Short Text Clustering.