python3 自然语言处理_Python自然语言处理(三) -- 利用NLTK进行聚类

这篇文章介绍如何利用NLTK进行聚类,和上两篇文章Python自然语言处理(一)、Python自然语言处理(二)不同,聚类不能算作自然语言处理的内容,但可以很容易应用到NLP中,因此将其划分到自然语言处理下。

-------------------进入正题--------------------

nltk内部封装了常用的聚类方法:Kmeans(K均值)、混合高斯聚类以及GAAC(组平均层次聚类)

使用这些聚类方法之前,需要保证已安装pynum,因为他们聚类传入的数据要求是pynum.array类型。

pynum的安装教程网上一大堆,这里不进行介绍。

一、数据准备

下面所有的聚类数据都是用这组:

注意:datas的元素是array类型

二、Kmeans聚类

用到的函数:

nltk.cluster.kmeans.KMeansClusterer(num_means, distance )#返回Kmeans聚类器的对象,num_means:目标类别数,distance:自定义距离函数

例子中,我们的目标类别数目为2, 距离函数为欧式距离

km.cluster(datas) #对数据集datas进行聚类

km.classify(data)#返回data被分到的类别

三、GAAC聚类

nltk.cluster.gaac.GAAClusterer(num_clusters , normalise )#num_clusters:目标类别数, normalise:是否归一化

这里需要说明一下,GAAC的距离使用的是点积的结果,并不是余弦相似度,如果normalise设置为True,将相似度进行归一化,此时的距离为余弦相似度

GAAC无法自定义相似度

例子中,我们设置目标类别为3,距离需要归一化,也即相似度为余弦相似度。

上述结果可以看出,所分的三个类为{(1,0)}, {(0,1)}, {[ 1,  1.] [ 5,  5.] [ 5 , 4.] [ 4 , 5.]}

结果和Kmeans非常不同,这是因为使用的相似度为余弦相似度

四、混合高斯聚类

用到的函数:

nltk.cluster.em.EMClusterer(initial_means)#initial_means:the means of the gaussian cluster centers

箭头表示聚类的结果,其余数据为中间数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值