一种 基于改进K_medoids的 句子文本聚类方法

来源:互联网 发布:bi数据分析师要会什么 编辑:程序博客网 时间:2024/04/28 05:41

【方法介绍】

怎么来表示两个规则描述的句子相近?

我们定义一种距离,两个句子 str1,str2,代表两个之间规则的描述;

str_com是str1和str2的最大公共子串,n1,n2,n0分别是str1,、str2、str_com的长度,

str1、str2的距离定义为:

 dis(str1,str2) = 1 - 2*n0/(n1+n2);

这个距离是一个0到1之间的数,如果str1和str2完全相同则距离为0,完全不同则距离为1。


怎样来对句子聚类?

常用的聚类方法有 k-means 和 k-medoids,k-means需要样本特征的统一量化表示,句子文本不具备这种特征,但是我们定义了句子的相对距离,可以使用k_medoids进行聚类。


一般的k_medoids方法有两个问题:

1 初始中心点不好确定(对聚类结果造成较大影响)

2 分类的数量K无法确定


作者提出了一种改进k_medoids的聚类方法

1 随机初始化K类的类中心。

2 对每一个样本按照离类别中心距离最近 对各样本进行分类

3 检查每个类,如果一个类的各样本与类中心样本的最大距离>0.5,则将离中心样本的类划分为一个新的类,K增加1,并停止检查

4 依次对各类进行类中心选举,选举以类距离最小为标准,如果某类的中心改变,停止其他类的中心选举。(类距离,类内所有样本离类中心的样本距离)

重复2~3~4过程直到类稳定(没有产生新类 且 类中心不发生改变)(终止条件也可以设为 类别数达到自设阈值 或 迭代数达到自设阈值)


改进点:

改进点为步骤3,当一类中某个样本与类别中心得距离超过阈值(比如0.5)时,该类中距离类别中心最远的样本从原类中裂开,成为一个单独的类。

这样K会随着阈值的不同而变化,。

 

【处理结果】

聚类结果:

一共1220条规则,用约150类划分了900条规则。

【代码及数据】

主要代码:

check_k_medoids.m

get_lcs_dis.m

数据:

disM.mat 预算距离矩阵


【其它方法调研】

常见方法:

向量空间模型(VSM )表示文本(文档,even句子)相似度,描述文本距离。

分类层次聚类DIANA:


0 0
原创粉丝点击