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"))

在这里插入图片描述

目录
相关文章
|
5月前
|
机器学习/深度学习 自然语言处理 语音技术
利用Python实现简单文本分类器
【8月更文挑战第30天】本文旨在通过一个简易的文本分类器项目,引导读者步入自然语言处理的大门。我们将使用Python编程语言,借助其强大的库支持,一步步构建起能够区分不同类型文本的分类器。文章将深入浅出地介绍必要的理论知识,并通过实际代码示例加深理解。无论你是编程新手还是希望扩展技能边界的开发者,这篇文章都将为你提供有价值的见解和指导。
|
5月前
|
自然语言处理
HanLP — HMM隐马尔可夫模型 -- 语料库
HanLP — HMM隐马尔可夫模型 -- 语料库
56 0
|
5月前
|
机器学习/深度学习 自然语言处理 算法
利用Python实现简单文本分类
【8月更文挑战第3天】本文将引导读者了解如何使用Python编程语言实现基础的文本分类。通过具体的代码示例和步骤解释,我们将探索如何训练一个模型来自动对文本数据进行归类。本教程适合有Python基础但尚未涉足机器学习领域的初学者,旨在提供足够的信息帮助读者理解并实现自己的文本分类器。
|
7月前
|
机器学习/深度学习 算法 数据处理
【阿旭机器学习实战】【33】中文文本分类之情感分析--朴素贝叶斯、KNN、逻辑回归
【阿旭机器学习实战】【33】中文文本分类之情感分析--朴素贝叶斯、KNN、逻辑回归
|
8月前
|
机器学习/深度学习 自然语言处理 算法
使用Python实现简单的文本分类器
本文介绍了如何使用Python编程语言实现一个简单但有效的文本分类器。通过使用基本的自然语言处理技术和机器学习算法,我们可以将文本数据分为不同的类别,从而实现对文本信息的自动化处理和分析。通过详细的步骤和示例代码,读者将能够理解文本分类的基本原理,并且能够自己动手实现一个简单的文本分类器。
|
8月前
|
自然语言处理 Python
使用Python实现文本分类与情感分析模型
使用Python实现文本分类与情感分析模型
116 1
|
8月前
|
自然语言处理 数据可视化 数据安全/隐私保护
R语言文本挖掘tf-idf,主题建模,情感分析,n-gram建模研究
R语言文本挖掘tf-idf,主题建模,情感分析,n-gram建模研究
|
8月前
|
机器学习/深度学习 算法 数据可视化
利用Python实现简单的文本分类器
本文介绍了如何使用Python编写一个简单的文本分类器,通过基于词袋模型和朴素贝叶斯算法的方法实现对文本进行分类。通过示例代码和详细说明,读者可以了解如何构建一个能够自动对文本进行分类的程序,并在实际应用中使用这种技术。
|
机器学习/深度学习 数据采集 自然语言处理
【Deep Learning A情感文本分类实战】2023 Pytorch+Bert、Roberta+TextCNN、BiLstm、Lstm等实现IMDB情感文本分类完整项目(项目已开源)
亮点:代码开源+结构清晰+准确率高+保姆级解析 🍊本项目使用Pytorch框架,使用上游语言模型+下游网络模型的结构实现IMDB情感分析 🍊语言模型可选择Bert、Roberta 🍊神经网络模型可选择BiLstm、LSTM、TextCNN、Rnn、Gru、Fnn共6种 🍊语言模型和网络模型扩展性较好,方便读者自己对模型进行修改
678 0
|
数据采集 自然语言处理 开发工具
fasttext实现文本分类
fasttext实现文本分类
342 0