zoukankan      html  css  js  c++  java
  • Text Clustering in R

    Text Clustering in R

    建立词-文档矩阵

    l  获取数据源

    由于要分的词语里面有较多时属于人名,我们引入搜狗细胞库的人名词库。

    installDict("E:\明星【官方推荐】.scel",dictname="starsName")

    引入要聚类的文本

    > df=read.table("F:/testString.txt")#以数据框的形式保存

    > edit(data)

     

    有这些文本,是从网上随机摘取的。

    分词

    我们直接将分词的结果也保留到数据框里面

    > df$seg=segmentCN(gsub(" ","",df[1:length(df[,1]),]))

    > df$seg=as.character(df$seg)#转化为文本

    创建语料库

    > corpus=Corpus(DataframeSource(df)) #以数据框作为源

    我们看看语料库有些什么,

    > inspect(corpus)

    可以看到,分词的结果也是以向量的形式保存下来的。

     

    l  建立词-文档矩阵

    > tdm=TermDocumentMatrix(corpus)

    > tdm

     

    由于是由向量表示的,在聚类时候应转为矩阵形式。

    > tdMatrix=as.matrix(tdm)

     

    聚类

    l  聚类的方法有很多了,我们先用k-means试下

    >kmeans <- kmeans(t(tdMatrix),3)

     

    聚类结果可以看到簇的分布情况

    1

    据日本新闻网10日报道,日本政府为了强化首都的防卫,决定在防卫省所在地建立一个反导防御基地

    3

    2

    据新加坡联合早报11日报道,在泰国,数万名支持政府的红衫军昨天(10日)在曼谷西郊举行大规模集会,声言反抗反政府力量

    2

    3

    美国拥有世界上规模最大、力量最强的反恐部队,包括陆军特种部队“绿色贝雷帽”、海豹突击队及三角洲特种部队等。海豹突击队

    2

    4

    人民网5月11日讯伊朗军方宣布,已经在霍尔木兹海峡海峡附近建了多个无人机基地,伊朗无人机要不间断地在该海峡和波斯湾北部

    2

    5

    美国负责东亚和太平洋事务的助理国务卿拉塞尔(DanielR.Russel)周四在河内表示,美国对中国与越南之间的紧张局势升级感到非常

    2

    6

    何为颠覆?百度一下,这个词的定义是指对某项事物造成强烈冲击改变,使事物本质发生变化。事实上,从PC互联网时代到移动互联网时代

    3

    7

    昨日,工业和信息化部、国家发展改革委《关于电信业务资费实行市场调节价的通告》(以下简称《通告》),宣告电信业务资费正式

    2

    8

    今天,我们正处于决策成本产生巨变的爆发点,过去那些想尽办法都无法获取的数据,在今天唾手可得,而当有些表面上完全不相关的行业

    3

    9

    首届清华五道口全球金融论坛,于2014年5月10日——5月12日在清华大学举办。论坛由清华大学主办,清华大学五道口金融学院和清华

    3

    10

    投资理财服务,其实是非常低频次高客单价的服务,它的规模经济非常明显,P2P平台需要在互联网上寻找这样的客户。”有利网CEO刘雁南说这番话

    2

    11

    今晚东方卫视播出的大型喜剧真人秀《笑傲江湖》,相声名家马三立孙子马小川(见左图,图TP)带着爷爷的经典相声亮相现场,却遭遇冷场尴尬

    1

    12

    昨晚,第21届北京大学生电影节在国家奥林匹克体育中心闭幕。最终,汤唯凭借《北京遇上西雅图》摘下影后桂冠;杨颖

    3

    13

    据香港媒体报道,刘嘉玲、Angelababy、林志玲、高圆圆等前晚在上海出席时装品牌活动,场内美女如云,众人更大斗性感。

    2

    14

    5月11日母亲节期间,《舌尖上的中国2》导演邓洁发出长微博,针对此前《家常》节目播出后,遭受质疑的“子钰母女事件”作出回应

    3

    15

    新浪娱乐讯5月10日晚,由共青团中央、中国残疾人联合会、中国青年志愿者协会、北京大学等共同主办的“心手相牵,共享阳光——中

    3

    l  奇异值分解

    对于大的文本,我们不得不对其进行降维,然后再聚类

    为方便在图中显示,我们取nv=2,即文档由一组二维变量衡量

    > svdMatrix=svd(tdMatrix,nv=2)

    > svdMatrix$v

     

    在图中表示

    > plot(svdMatrix$v)

     

    对分解后的矩阵进行聚类

    > svdkmeans=kmeans(as.matrix(svdMatrix$v),3)

    > svdkmeans

     

    与上图的簇分布情况对照:

     

    可以看到,经过奇异值分解之后的簇分布大致与直接聚类的分布相似。但奇异值分解却将原来的158维降到了2维,若是有大量长文本,经过奇异值分解后效率可以提高很多。

    l  其他聚类结果

    > clara(svdMatrix$v,3)

    1 2 2 2 2 1 2 1 1 2 3 1 2 1 1

     

    > fanClus=fanny(svdMatrix$v,3)

    1 2 2 2 1 3 2 3 3 2 3 3 2 1 1

    > clusplot(fanClus)

     

    > pamClus=pam(svdMatrix$v,3)

    1 2 2 2 1 1 2 1 1 2 3 1 2 1 1

     

  • 相关阅读:
    Maven关于web.xml中Servlet和Servlet映射的问题
    intellij idea的Maven项目运行报程序包找不到的错误
    修改Maven项目默认JDK版本
    刷题15. 3Sum
    刷题11. Container With Most Water
    刷题10. Regular Expression Matching
    刷题5. Longest Palindromic Substring
    刷题4. Median of Two Sorted Arrays
    刷题3. Longest Substring Without Repeating Characters
    刷题2. Add Two Numbers
  • 原文地址:https://www.cnblogs.com/mixes/p/3723491.html
Copyright © 2011-2022 走看看