用于文本挖掘的r语言第4部分文本分类
第四部分文本分类
【发现有人转载,决定重新整理格式和什么,有时间就做一个高级版的文本挖掘,嗯!原文地址:用于文本挖掘的CSDN-R语言第4部分文本分类]
正如第3部分文本聚类中提到的,分类和聚类之间的简单区别。因此,要进行分类,需要先整理出一个训练集,也就是已经分类清楚的文本;测试集可以被训练集代替;预测集,即未分类文本,是分类方法的最终应用。
1.数据准备
训练集准备是一个非常繁琐的功能,所以暂时还没有找到什么省力的方法,只能根据文字内容手动整理。在这里,我们仍然使用某个品牌的官方微数据。根据微博的内容,我把它在微博中的主要内容分为:推广信息、产品推广、公益信息、生活鸡汤、时尚新闻、娱乐圈。每个类别有20-50条数据,如下图,培训。
训练集是hlzj.train,以后作为测试集使用。
预测集是第2部分中的hlzj。
hlzj . train-read . CSV(' hlzj _ train . CSV ',header=T,stringsAsFactors=F)
长度(hlzj.train)
[1] 2
表(hlzj.train $类型)
时尚新闻生活产品
27 34 38
推广公益娱乐圈
45 22 36
长度(hlzj)
[1] 1639
2.分词处理
训练集、测试集和预测集都需要分词才能进行后续的分类过程。这里就不详细描述了。该过程类似于第2部分中描述的过程。设置分词后hlzjTrainTemp的训练,然后为HLZJ文件设置分词后的hlzjTEMP。然后分别从hlzjTrainTemp和hlzjTemp中删除停止字。
图书馆
hlzjtrainttemp-gsub('[0-90123456789 ~]','',hlzj.train$text)
分段
hlzjtrainttemp 2-lappy(hlzjtrainttemp,removeStopWords,StopWords)
hlzj temp 2-lappy(hlzj temp,removeStopWords,StopWords)
3.获取矩阵
如Part3所述,聚类时,首先要将文本转换成矩阵,分类也需要这个过程,使用tm软件包。首先,将训练集和停止词去除后的预测集的结果合并到hlzjAll中。请记住,前202条数据(1:202)是训练集,最后1639条数据(20:1841)是预测集。得到hlzjAll的语料库,得到文档入口矩阵,转化为公共矩阵。
hlzjAll -字符(0)
hlzjAll[1:202]-hlzjtrainttemp 2
hlzjAll[203:1841]-hlzjtemp 2
长度(hlzjAll)
[1] 1841
语料库
(hlzjall . DTM-document term matrix(corp sall,control=list(WordLengs=c(2,Inf)))
文档术语矩阵(文档: 1841,术语: 10973)
非稀疏/稀疏条目: 33663/20167630
稀疏度: 100%
最长期限: 47
加权:项频率(tf)
dtmAll _ matrix-as . matrix(hlzjall . DTM)
4.分类
使用类软件包中的knn算法(K最近邻算法)。矩阵的前202行数据是已经分类的训练集,而最后1639条数据没有分类。我们应该根据训练集得到分类模型,然后对其进行分类预测。将分类结果与原微博放在一起,用fix()检查,可以看到分类结果,效果相当明显。
row names(DTmall _ matrix)[1:202]-hlzj . train $ type
row name(DTmall _ matrix)[20:1841]-c(')
train - dtmAll_matrix[1:202,]
predict-dtmAll _ matrix[203:1841,]
train class-as . factor(row name(train))
图书馆(类)
培训、预测、培训课程
长度(hlzj_knnClassify)
[1] 1639
hlzj_knnClassify[1:10]
[1]产品产品推广产品时尚新闻生活
[8]产品产品时尚新闻
:时尚新闻生活产品推广公益娱乐圈
表(hlzj_knnClassify)
hlzj_knnClassify
时尚新闻生活产品推广公益娱乐圈
40 869 88 535 28 79
hlzj . KNN result-list(type=hlzj _ knnClassify,text=hlzj)
hlzj . KNN result-as . data . frame(hlzj . KNN result)
修复(hlzj.knnResult)
Knn分类算法是最简单的一种。后来我尝试用神经网络算法(nnet())、支持向量机算法(svm())和randomForest算法(())的时候,出现了计算机内存不足的问题。我的电脑是4G的,当我观看内存监控时,我可以看到最大使用量达到了3.92G,看起来我们需要换一台更好的电脑 ()
在硬件条件能够满足的情况下,分类应该没有问题。相关算法可以使用:方法名,来查看其描述文档。
5.分类效应
上面没有提到测试过程。对于上面的例子,knn的前两个参数使用train。因为使用了相同的数据集,结果是准确率可以达到100%。如果训练集很多,可以按7:3或833602随机分成两部分,前者用于训练,后者用于测试。这里就不细说了。
在分类效果不理想的情况下,需要对训练集进行丰富,使训练集的特征尽可能明显,以提高分类效果,这在实践中是一个繁琐但不敷衍的过程。
有什么可以改进的欢迎指正,请注明出处,谢谢!
————————————————
版权声明:本文系CSDN博主EchoCaiCai原创文章,遵循CC 4.0 BY-SA版权协议。转载请附上原始来源链接和本声明。
原文:https://blog.csdn.net/cl1143015961/article/details/44413631
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/151778.html