论文地址:https://arxiv.org/pdf/2001.11631.pdf
相关博客:
【自然语言处理】【聚类】基于神经网络的聚类算法DEC
【自然语言处理】【聚类】基于对比学习的聚类算法SCCL
【自然语言处理】【聚类】DCSC:利用基于对比学习的半监督聚类算法进行意图挖掘
【自然语言处理】【聚类】DeepAligned:使用深度对齐聚类发现新意图
【自然语言处理】【聚类】CDAC+:通过深度自适应聚类发现新意图
【计算机视觉】【聚类】DeepCluster:用于视觉特征无监督学习的深度聚类算法
【计算机视觉】【聚类】SwAV:基于对比簇分配的无监督视觉特征学习
【计算机视觉】【聚类】CC:对比聚类
【计算机视觉】【聚类】SeLa:同时进行聚类和表示学习的自标注算法
【自然语言处理】【聚类】ECIC:通过迭代分类增强短文本聚类
【自然语言处理】【聚类】TELL:可解释神经聚类
一、简介
由于技术的进步,微博、问答、社会新闻网站等各种来源产生了大量的短文本。组织这些文本是对话意图发现、数据摘要、频繁项挖掘以及信息搜索和过滤等任务的重要一步。将相似文本聚类到相同的分组是许多文本组织策略的基础。
本文的研究目标是从簇中高效的移除异常值,并重新将其分配的合适的簇,从而改善不同聚类方法的质量。本文提出的方法超越了基于神经网络和
Dirichlet
\text{Dirichlet}
Dirichlet多项式混合模型的state-of-the-art
。
本文中迭代分类的概念是来源于称为 k-means– \text{k-means--} k-means–的迭代聚类算法,其会在每次迭代中移除异常值来获得更好的聚类表示。基于此,本文的迭代分类算法会在每次迭代过程中移除异常值。 k-means– \text{k-means--} k-means–和本文的方法都会计算无异常值的簇表示。然而, k-means– \text{k-means--} k-means–和本文方法计算簇表示的方式是不同的。 k-means– \text{k-means--} k-means–通过对无异常值向量进行平均来表示每个簇。相反,本文的方法使用训练的分类模型来表示每个簇。为了获得模型,其会使用无异常值的簇标签来训练分类器。使用训练好的模型,迭代将异常值重新分类至目标簇。本文方法获得的簇结果是下一次的迭代输入,若是最后一次迭代则是整个算法最终的结果。
本文提出的增强聚类算法能够应用在任何初始聚类中且独立于获得簇的方法。然而,最终簇的质量依赖于计算初始簇的方法。作者使用 k-means \text{k-means} k-means, k-means– \text{k-means--} k-means–和使用稠密和稀疏相似矩阵的层次聚类来计算初始的簇。 k-mean \text{k-mean} k-mean和 k-means– \text{k-means--} k-means–聚类算法被应用在文本的向量表示上。对于层次聚类,则使用文本相似矩阵(稠密或稀疏),其中稀疏相似矩阵会保留一定数量的最显著相似值,并丢弃其余的值。
矩阵稀疏化能够使用不同的准则来选择丢弃的值。这里考虑两种方法,一种是基于KNN
的方法,另一种则是基于相似度分布的。基于KNN
的方法会保留每行中最大的k
个值。基于相似度分布的方法,每行保留的相似度数量是不固定的。相反,它是基于每行的相似度值分布。
本文的两个主要贡献为:
- 提出的聚类增强方法改善了各种短文本数据集的质量,并且不需要人类标注数据来训练分类模型。本文的聚类增强方法的实现和数据集都是可公开获取的。
- 层次聚类和迭代分类的结合效果要好于其他聚类方法与迭代分类的结合。此外,在具有中等数量簇的数据集上,这种组合方法性能优于最先进的短文本聚类算法。
二、相关工作
1. 短文本聚类
2. 相似矩阵稀疏化
文本相似矩阵稀疏化的目标是,保持一个文本与其最相似文本的联系,并通过将对应的相似度分数设置为0来将不相似的联系打断。本小节会讨论几种相似度矩阵稀疏化方法,包括基于全局阈值、最近邻和中心向量的方法。
基于全局阈值的相似矩阵稀疏化方法是最简单的稀疏化方法。它会移除低于给定阈值的所有相似值。这种方法的问题是可能会被破坏或者合并,因为不同簇中的文本可能有不同相似度等级。例如,一个簇中的相似度阈值可能介于0.2和0.4之间,而另一个簇中的相似度阈值则位于0.5至0.8。若设置全局阈值为0.5,那么第一个簇中的相似值都会被设置为0,簇会被消除。一个低阈值,例如0.15,可能会导致第二个簇包含额外的文档。
基于最近邻的相似矩阵稀疏化方法包括 KNN \text{KNN} KNN和共享最近邻。 KNN \text{KNN} KNN稀疏化被保留每个文本 k k k个最高相似分。共享最近邻方法则会添加一个条件,给定文本与保留下相似分的文本应该共享一定数量的邻居。
基于中心向量的相似矩阵稀疏化方法中,文本会表示为 TF-IDF \text{TF-IDF} TF-IDF向量,中心向量则是整个文本集合中向量的平均值。该方法是通过消除那些两两相似度小于两个文本与中心向量度的最大值的相似度,从而实现相似矩阵稀疏化。
三、通过迭代分类增强聚类
给定短文本的集合,并将这些文本划分至簇,迭代分类则会通过检测每个簇的异常值并改变它们分配的簇来实现簇划分的改善。这会重复几次,因此方法的名称中会有"迭代"这个词。在每次迭代中,分别生成不包含异常值和包含异常值的训练集和测试集。这里使用训练集来训练分类算法,并且使用训练好的模型来分类测试集。迭代的过程重复直至满足停止准则。整体算法流程如下:
算法1: 通过迭代分类增强聚类
输入: D为包含n个文本的集合,L是D中文本的初始化标签,K是簇的数量
输出: 文本的增强簇标签
maxIteration \text{maxIteration} maxIteration=50
avgTextsPerCluster = n K \text{avgTextsPerCluster}=\frac{n}{K} avgTextsPerCluster=Kn
for i=1 \text{i=1} i=1 to maxIteration \text{maxIteration} maxIteration do
从区间 [ P 1 , P 2 ] [P_1,P_2] [P1,P2]均匀随机采样一个参数 P P P;
通过异常值检测算法将 K K K个簇中的异常值移除 ;
若一个簇包含超过 avgTextsPerCluster × P \text{avgTextsPerCluster}\times P avgTextsPerCluster×P数量的文本,随机移除该簇中的文本直至簇中留下的文本数量为 avgTextsPerCluster × P \text{avgTextsPerCluster}\times P avgTextsPerCluster×P;
将上面两步移除的文本作为测试集,其余文本作为训练集;
使用训练集训练一个分类器,并对测试集中的文本进行分类,这会对测试集中的每个文本 t t t分配一个新的簇标签 L ( t ) L(t) L(t);
如果每个簇的分布区域稳定则停止迭代;
end for
return L L L
1. 训练集和测试集生成
在每次迭代中,会随机选择一个数字 P P P,其对应于训练集中文本所占比例。 P P P是在区间 [ P 1 , P 2 ] [P_1,P_2] [P1,P2]中均匀随机采样获得的。
为了生成训练集,会将
K
K
K个簇中的异常值移除,这些簇是通过当前簇标签
L
L
L定义的。为了移除异常值,使用一种称为
Isolation Forest
\text{Isolation Forest}
Isolation Forest的异常检测算法,其会应用在文本的
TF-IDF
\text{TF-IDF}
TF-IDF向量表示。该算法会基于特征的值来孤立每个item
。首先,选择一个item
的随机特征。然后,从被选择特征中最小值和最大值之间选择一个随机值。然而,通过该值绘制一条直线来孤立item
。算法重复这些步骤,直至item
被孤立。使用较少步骤就被孤立的item
被认为是异常值,因此它们处于特征空间的低密度区域。
如果移除异常值后,一个簇包含的文本超过 n K × P \frac{n}{K}\times P Kn×P,然后从簇中等概率随机移除文本,从而将簇中的文本数量缩减至 n K × P \frac{n}{K}\times P Kn×P。从每个簇中移除文本的原因,是希望每个簇具有相近的文本数量,从而减少分类算法的偏差。将删除的文本添加至测试集,并添加其他文本至训练集。
2. 训练分类模型并在测试集上分类
训练集和测试集中的文本使用 TF-IDF \text{TF-IDF} TF-IDF向量表示。基于训练集中的聚类文本训练一个分类器,标签为聚类的标签。在训练集上使用多项式逻辑回归来获得训练后的模型。然而,使用训练好的分类器对测试集中的文本进行分类。这为测试集中的文本定义了新的簇标签,并产生新的簇划分。
3. 迭代分类的停止准则
当达到最大数量的迭代数或者簇的尺寸趋于稳定则停止迭代分类。令
C
1
,
…
,
C
k
C_1,\dots,C_k
C1,…,Ck和
C
1
′
,
…
,
C
k
′
C_1',\dots,C_k'
C1′,…,Ck′是迭代前和迭代后的簇。当满足如下条件时认为簇的尺寸稳定
1
k
∑
i
=
1
k
∣
∣
C
i
′
∣
−
∣
C
i
∣
∣
≤
0.05
n
k
\frac{1}{k}\sum_{i=1}^k||C_i'|-|C_i||\leq 0.05\frac{n}{k}
k1i=1∑k∣∣Ci′∣−∣Ci∣∣≤0.05kn
举例来说,考虑将1000个文本划分为2个簇的例子。簇的平均尺寸为50。若一次迭代分配48个文本至第一个簇,并且分配余下的52个文本至第二个簇,而下一次迭代分配的文本数变为49和51,那么簇尺寸的平均决定变化为
1
2
(
∣
48
−
49
∣
+
∣
52
−
51
∣
)
=
1
\frac{1}{2}(|48-49|+|52-51|)=1
21(∣48−49∣+∣52−51∣)=1。由于其小于平均簇尺寸的5%,则认为簇的尺寸保持稳定。
四、相似矩阵稀疏化
1. KNN \text{KNN} KNN稀疏化
KNN
\text{KNN}
KNN稀疏化使用最近邻居数量k
作为参数。一个
n
×
n
n\times n
n×n的对称相似矩阵
S
=
(
s
i
j
)
S=(s_{ij})
S=(sij)作为
KNN
\text{KNN}
KNN稀疏化方法的输入。该方法的准则是,对于每个问题保留除对角线以外k
个最相似的文本。对于文本
t
i
t_i
ti,若
s
i
j
s_{ij}
sij在
t
i
t_i
ti的k
个最相似中,则保留
t
i
t_i
ti和
t
j
t_j
tj的相似度
s
i
j
s_{ij}
sij。然而,文本
t
j
t_j
tj和文本
t
i
t_i
ti的相似度
s
j
i
s_{ji}
sji可能并不会被保留下来。因此,应用这个准则后,得到的稀疏矩阵是一个非对象稀疏矩阵。因此,若
s
i
j
s_{ij}
sij和
s
j
i
s_{ji}
sji中任意一个在稀疏矩阵中被保留,则可以通过同时保留
s
i
j
s_{ij}
sij和
s
i
j
s_{ij}
sij来使稀疏矩阵对称。
2. 基于相似分布的稀疏化
本文提出了一种基于相似矩阵中分数的分布来稀疏化相似矩阵的方法。稀疏矩阵能够被应用于各种基于稀疏矩阵的聚类方法的输入,例如层次聚类。算法2展示了本文提出的稀疏方法。输入是
n
n
n个文本的对称相似矩阵。目标是通过保留"最重要"的相似度分数并将不重要的相似分数设置为0来增加矩阵中的信噪比。这里将矩阵中元素设置为0的准则可能导致非对称矩阵。这样的矩阵需要对称化。这里遵循sparsification with exclusion
方法,仅当稀疏化准则即不保留
s
i
j
s_{ij}
sij和
s
j
i
s_{ji}
sji时,设置
s
i
j
s_{ij}
sij为0。
算法2: 基于相似分布的稀疏化
输入: S = ( s i j ) = n × n S=(s_{ij})=n\times n S=(sij)=n×n相似矩阵, K K K是簇的数量;
输出: 稀疏相似矩阵 M = n × n M=n\times n M=n×n
令 M = ( m i j ) = n × n M=(m_{ij})=n\times n M=(mij)=n×n为单位矩阵
令 A = ( a i j ) = n × n A=(a_{ij})=n\times n A=(aij)=n×n为全0矩阵
令 l = n / K − 1 l=n/K-1 l=n/K−1
令 N = ⌊ n × l 2 ⌋ N=\lfloor\frac{n\times l}{2}\rfloor N=⌊2n×l⌋为对角线上方保留非零相似度分数的数量
for i = 1 i=1 i=1 to n n n do
计算第 i i i行所有非对角线的均值 μ i \mu_i μi和标准差 σ i \sigma_i σi
for j = 1 j=1 j=1 to n n n and j ≠ i j\neq i j=i do
a i j = ( s i j − μ i ) / σ i a_{ij}=(s_{ij}-\mu_i)/\sigma_i aij=(sij−μi)/σi
end for
end for
L = ∅ L=\empty L=∅
for i = 1 i=1 i=1 to n n n do
for j = i + 1 j=i+1 j=i+1 to n n n do
向 L L L中添加三元组 ( i , j , max ( a i j , a j i ) ) (i,j,\text{max}(a_{ij},a_{ji})) (i,j,max(aij,aji))
end for
end for
将 L L L中的三元组按照第三个分量降序排序
for 对于 L L L中前 N N N个三元组 ( i , j , ⋅ ) (i,j,\cdot) (i,j,⋅)中的每个 do
m i j = s i j m_{ij}=s_{ij} mij=sij
m j i = s j i m_{ji}=s_{ji} mji=sji
end for
return M M M
相比于
KNN
\text{KNN}
KNN的方法,每个文本保留的相似度数量是不固定的。相反,该方法是基于每个文本与其他文本的相似值分布的。对于每个文本
t
i
t_i
ti,计算
t
i
t_i
ti与所有其他文本相似分数的均值
μ
i
\mu_i
μi和标准差
σ
i
\sigma_i
σi。然后,基于
t
i
t_i
ti与其他文本的这些统计值来稀疏化相似度。特别地,定义保留准则为:当然仅当
s
i
j
s_{ij}
sij满足下式时才会被保留
s
i
j
>
μ
i
+
α
σ
i
(1)
s_{ij}>\mu_i+\alpha\sigma_i \tag{1}
sij>μi+ασi(1)
α
\alpha
α是一个全局因子。利用准则和矩阵对称性来选择因子
α
\alpha
α,每行中非对角线的非零元素的平均数为
l
=
n
k
−
1
l=\frac{n}{k}-1
l=kn−1。注意,如果每个簇都有
n
k
\frac{n}{k}
kn个元素,那么就返回相同簇中的相似度分数,
l
l
l是每行非对角线非零元素的数量。
为了有效的选择将要保留下来的相似度值,对于每个相似度值
s
i
j
s_{ij}
sij使用一个辅助值
a
i
j
=
s
i
j
−
μ
i
σ
i
a_{ij}=\frac{s_{ij}-\mu_i}{\sigma_i}
aij=σisij−μi。从公式
(
1
)
(1)
(1)中得到的准则可以被重新表述为:若
a
i
j
>
α
a_{ij}>\alpha
aij>α,则相似度分数
s
i
j
s_{ij}
sij被保留。由于采用了sparsificaton with exclusion
方法来对称化,如果保留准则对于
s
i
j
s_{ij}
sij或者
s
j
i
s_{ji}
sji满足,那么最终的对称矩阵就会保留
s
i
j
s_{ij}
sij。这样,如果每行非对角线非零元素的平均数量为
l
l
l,则需要将主对角线上方的
N
=
⌊
n
×
l
2
⌋
N=\lfloor\frac{n\times l}{2}\rfloor
N=⌊2n×l⌋个元素返回,这是通过将
α
\alpha
α设置为
{
max
(
a
i
j
,
a
j
i
)
∣
1
≤
i
<
j
≤
n
}
\{\text{max}(a_{ij},a_{ji})|1\leq i<j\leq n \}
{max(aij,aji)∣1≤i<j≤n}中第前
N
N
N大的值。
五、短文本聚类方法
本小节是本文实验中所使用的聚类方法。
5.1 k-means \text{k-means} k-means和 k-means– \text{k-means--} k-means–
k-means \text{k-means} k-means聚类算法用于将短文本聚类至 k k k个簇。由于 k-means \text{k-means} k-means对于初始种子高度敏感,因此采用一种称为 k-means++ \text{k-means++} k-means++的种子选择方法来获得更好的聚类表现。使用初始簇中心, k-means \text{k-means} k-means会分配每个文本至最近的中心。这个算法会迭代一定的数量。在每次迭代中,它会使用分配的文本重新计算簇中心,并再次将文本分配至最近的簇。当算法达到最大迭代数,获得连续迭代之间的簇分配趋于稳定,则算法终止。
k-means– \text{k-means--} k-means–是 k-means \text{k-means} k-means聚类算法的变体,在每次 k-means \text{k-means} k-means迭代中重新计算簇中心之前会先移除异常值。为了检测异常值,短文本会使用与最近簇中心的距离进行降序排序,且 d d d个最远的文本被认为是异常值并从簇中被移除,这样簇中心就不会对异常值敏感。
5.2 基于稠密相似矩阵的层次聚类
层次聚类会使用存储了文档间相似度的对称矩阵。若每对文档间的相似度均被存储则该矩阵是稠密的。聚类算法开始时,每个文档都属于自己的簇,然后重复合并最相似的簇直至仅保留下 k k k个簇。
本文实验中使用fastcluster
包作为聚类算法。这个包提供了许多不同簇之间的度量,这些度量决定哪些簇会被合并。目前为止,
Ward
\text{Ward}
Ward链接准则具有最好的效果,所有在本文实验中使用。
Ward
\text{Ward}
Ward链接准则会假设数据点之间的距离为欧式聚类,并且在每一步中通过最小方差来合并两个簇。在本文的实验中,文档的聚类是cosine
相似度,也就是非欧距离。在本文实验中使用
Ward
\text{Ward}
Ward链接准则仍然是合理的,并且解释了这种聚类方法在本文实验数据集上的有效性。确实,在单位空间上彼此接近的点,它们与原点形成的夹角的余弦值是空间上两点间距离的近似值,也就是其近似与两点的欧式距离。如果要计算的簇数量不是太小,那么每个簇中的点在球面上会彼此接近,那么形成这些簇的点间距离相比于欧式距离来说,失真度较低。
5.3 基于稀疏相似矩阵的层次聚
稠密相似度矩阵提供了关于文档对相似度最详细的细节,但是最低的相似度分数可以被看作是噪音。将这些相似度设置为0会增加簇之间的距离,并提供更好的聚类结果。
在本文实验中考虑两种稀疏方法:基于相似度分布的方法和基于 KNN \text{KNN} KNN的方法。基于这两种方法生成的稀疏矩阵会使用相同的层次聚类算法。