bays朴素贝叶斯文本挖掘Chinese

简介: bays朴素贝叶斯文本挖掘Chinese

1 数据准备

##read and clean
sms1<-readLines("sms_labelled.txt",encoding="UTF-8")

2 数据预览

num<-nchar(sms1)
type<-substr(sms1,1,1)#the first character is email type
text<-substr(sms1,3,max(num))#the second character is blank
smsd<-data.frame(type,text,num,stringsAsFactors = F) #Record the number of characters per line

在这里插入图片描述
发现数据第一个字符是短信类型,第二个字符是空格,于是对我们求的y和文本x信息进行提取,num是查看每行数据有多少个字符

index0<-order(num,decreasing = T)#Returns a subscript index sorted by num 

排序后返会的是下标

3 数据清洗

#tapply  The data is grouped and calculated according to the second parameter

index0<-tapply(index0,type[index0],function(x) x[1:1000])#select the first 1000 items by group 

index0<-c(index0$`0`,index0$`1`)#Group by 0 and 1 to form a subscript vector

text0<-text[index0] #Text sorted by  the first two thousand characters

type0<-type[index0] #Type sorted by  the first two thousand characters

class<-factor(type0,labels=c("ham","spam")) # 0 and 1 forward message types

由于原始文本行数太多,这里分别提取了垃圾和非垃圾邮件的前1000条数据

##clean and segment words
text1<-gsub("[^\u4E00-\u9FA5]"," ",text0) #Clean non Chinese characters

去除其中的非中文字符

library(jiebaR)
library(tm)
##self build stopwords
work=worker(bylines = T,stop_word = "stop.txt") #Stop word text
text2<-segment(text1,work) # segment text
text2<-lapply(text2,function(x) x[nchar(x)>1]) #Filter text with more than 1 characters

加载包,依靠停用词列表删除多余的停用词

在这里插入图片描述

textC<-tm_map(textC,function(x) removeWords(x,"我们"))#remove "我们"
inspect(textC)

4 设置测试集和训练集

##split
set.seed(12)
index1<-sample(1:length(class),length(class)*0.9) #Divide test set and training set
text_tr<-textC[index1]
text_te<-textC[-index1]
inspect(text_tr)

5 词云预览

##wordcloud
library(wordcloud)
index2<-class[index1]=="spam" #select spam
pal<-brewer.pal(6,"Dark2") # wordcloud color
par(family='STKaiti')
wordcloud(text_tr,max.words=40,random.order=F,scale=c(4,0.5),colors=pal)
wordcloud(text_tr,max.words =150, scale=c(4,0.5), 
          random.order=F, colors = pal,family="STKaiti")
wordcloud(text_tr[index2],max.words =150, scale=c(4,0.5), 
          random.order=F, colors = pal,family="STKaiti")
wordcloud(text_tr[!index2],max.words =150, scale=c(4,0.5), 
          random.order=F, colors = pal,family="STKaiti")
        

6 生成模型数据

##freq words
text_trdtm<-DocumentTermMatrix(text_tr)#Corpus generated word document matrix
inspect(text_trdtm)

ncol(text_trdtm)# Number of columns in word docment matrix
dict<-findFreqTerms(text_trdtm,5)# Words appearing above 5 are considered as high_frequency words

text_tedtm<-DocumentTermMatrix(text_te,list(dictionary=dict)) #select column

train<-apply(text_trdtm[,dict],2,function(x) ifelse(x,"yes","no"))# 1 and 0 to yes and no

test<-apply(text_tedtm,2,function(x) ifelse(x,"yes","no"))

inspect(test)

将出现在5次以上的词设为高频词,过滤掉出现次数低于5次的词语

7 建模与模型预测

##model
library(e1071)
library(gmodels)
sms<-naiveBayes(train,class[index1],laplace = 1)
testpre<-predict(sms,test,type="class")
CrossTable(testpre,class[-index1],prop.chisq = F,prop.t=F,dnn=c("actual","preedicted"))

在这里插入图片描述

目录
相关文章
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
基于非英语数据集的图形机器学习和集成学习方法增强文本分类和文本情感分析
基于非英语数据集的图形机器学习和集成学习方法增强文本分类和文本情感分析 摘要 近年来,机器学习方法,特别是图学习方法,在自然语言处理领域,特别是文本分类任务中取得了巨大的成果。然而,许多这样的模型在不同语言的数据集上显示出有限的泛化能力。在本研究中,我们在非英语数据集(如波斯语Digikala数据集)上研究并阐述了图形机器学习方法,该方法由用户对文本分类任务的意见组成。更具体地说,我们研究了(Pars)BERT与各种图神经网络(GNN)架构(如GCN、GAT和GIN)的不同组合,并使用集成学习方法来处理某些知名的非英语数据集上的文本分类任务。我们的分析和结果表明,应用GNN模型可以更好地捕捉文
93 0
|
1月前
|
自然语言处理 算法 数据挖掘
基于python豆瓣电影评论的情感分析和聚类分析,聚类分析有手肘法进行检验,情感分析用snownlp
本文介绍了一个基于Python的情感分析和聚类分析项目,使用snownlp库对豆瓣电影评论进行情感分析,并采用手肘法辅助K-means算法进行聚类分析,以探索评论中的不同主题和情感集群。
基于python豆瓣电影评论的情感分析和聚类分析,聚类分析有手肘法进行检验,情感分析用snownlp
|
3月前
|
机器学习/深度学习 算法 数据处理
【阿旭机器学习实战】【33】中文文本分类之情感分析--朴素贝叶斯、KNN、逻辑回归
【阿旭机器学习实战】【33】中文文本分类之情感分析--朴素贝叶斯、KNN、逻辑回归
|
4月前
|
自然语言处理 Python
使用Python实现文本分类与情感分析模型
使用Python实现文本分类与情感分析模型
88 1
|
4月前
|
机器学习/深度学习 数据采集 自然语言处理
scikit-learn在文本分类中的应用
【4月更文挑战第17天】`scikit-learn`是Python中用于文本分类的强大工具,提供数据预处理(如`CountVectorizer`和`TfidfVectorizer`)、模型训练(如逻辑回归、SVM、朴素贝叶斯)及性能评估功能。通过预处理、模型训练和评估,可以实现文本分类。尽管scikit-learn有丰富的算法库、易用的API和高效性能,但特征工程、不平衡数据和模型泛化仍是挑战。
|
4月前
|
自然语言处理 数据可视化 数据安全/隐私保护
R语言文本挖掘tf-idf,主题建模,情感分析,n-gram建模研究
R语言文本挖掘tf-idf,主题建模,情感分析,n-gram建模研究
|
4月前
|
机器学习/深度学习 Python
【Python机器学习】卷积神经网络Vgg19模型预测动物类别实战(附源码和数据集)
【Python机器学习】卷积神经网络Vgg19模型预测动物类别实战(附源码和数据集)
175 1
|
自然语言处理 Python
【NLP Tool -- NLTK】NLTK进行英文情感分析、分词、分句、词性标注(附代码)
NLP自然语言处理之NLTK工具的使用,进行英文情感分析、分词、分句、词性标注(附代码)
719 0
|
机器学习/深度学习 自然语言处理 数据可视化
【Pytorch神经网络实战案例】30 jieba库分词+训练中文词向量
在NLP中,一般都会将该任务中涉及的词训练成词向量,然后让每个词以词向量的形式型的输入,进行一些指定任务的训练。对于一个完整的训练任务,词向量的练大多发生在预训练环节。
400 0
|
机器学习/深度学习 自然语言处理 算法
【文本分类】基于改进TF-IDF特征的中文文本分类系统
【文本分类】基于改进TF-IDF特征的中文文本分类系统
233 0
【文本分类】基于改进TF-IDF特征的中文文本分类系统