R语言做文本挖掘 Part4文本分类

技术R语言做文本挖掘 Part4文本分类 R语言做文本挖掘 Part4文本分类Part4文本分类
【发现有人转载,决定把格式什么重新整理一遍,有时间做个进阶版文本挖掘,恩!原文地址:CSDN-R语言做文

用于文本挖掘的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

(0)

相关推荐

  • 如何制作微信投票器,微信投票活动怎么做?

    技术如何制作微信投票器,微信投票活动怎么做?作为主办方都知道策划一场成功的微信投票活动是兼具宣传和增粉作用的,而且也是宣传范围广、活动成本低的一种方式,但是如何制作微信投票活动?微信投票活动怎么做以及微信投票活动的制作教

    测评 2021年12月10日
  • Xsheel使用小技巧有哪些

    技术Xsheel使用小技巧有哪些这篇文章将为大家详细讲解有关Xsheel使用小技巧有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。❝ 工作中无可避免的会使用到Xsh

    攻略 2021年11月9日
  • docker容器源码怎样部署httpd用存储卷部署网站

    技术docker容器源码怎样部署httpd用存储卷部署网站这篇文章将为大家详细讲解有关docker容器源码怎样部署httpd用存储卷部署网站,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知

    攻略 2021年12月8日
  • 如何理解Oracle补丁体系及其迭代阶段

    技术如何理解Oracle补丁体系及其迭代阶段这篇文章主要介绍“如何理解Oracle补丁体系及其迭代阶段”,在日常操作中,相信很多人在如何理解Oracle补丁体系及其迭代阶段问题上存在疑惑,小编查阅了各式资料,整理出简单好

    攻略 2021年10月28日
  • 在mysql如何查找效率慢的SQL语句

    技术在mysql如何查找效率慢的SQL语句这篇文章主要介绍在mysql如何查找效率慢的SQL语句,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、MySQL数据库有几个配置选项可以帮助我们及时捕获

    攻略 2021年10月29日
  • 解析JVM内存监控流程的示例分析

    技术解析JVM内存监控流程的示例分析解析JVM内存监控流程的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。你对JVM内存监控是否熟悉

    攻略 2021年10月23日