当前位置:首页 > R语言文本挖掘预测模型案例分析报告 附代码数据
【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
R语言文本挖掘预测模型案例分析报告
knitr::opts_chunk$set(echo=TRUE, message=FALSE, warning=FALSE, cache=TRUE) library(quanteda) library(tm) # Set a parent folder for the main directory pfolder<-\jects/JHU_Coursera_Capstone\ dfolder<-paste(pfolder, \, sep=\) setwd(pfolder) 1项目概况 该项目试图建立一个预测文本模型,可以用来预测计算机或移动设备的用户输入的下一个单词。该项目将使用由英语语料库开发的退避模型,该模型具有由网络爬虫收集的超过两百万行文本的样本。 自然语言处理中的常见步骤是: 1.获取和清理数据 o示例文本 o预处理文本(删除不符合您的目的的数据,如标点,亵渎等) oTokenization(识别要分析的单词和单词的组合) 2.探索性数据分析 o创建一个频率矩阵(根据目标,可以是文档或文档项) o显示有用的观察 3.模型开发 o开发初始模型(可以是预测,分析或其他) o测试模型(在样品中和在样品准确度外) o改进模型(根据使用情况应该更快还是更准确)? 2数据 这些数据是从https://d396qusza40orc.cloudfront.net/dsscapstone/dataset/Coursera-SwiftKey.zip与其他语言语料库下载的英文文本语料库。语料库是由网络爬虫从公开可用的来源收集的。有关数据的更多解释,请访问https://web-beta.archive.org/web/20160930083655/http://www.corpora.heliohost.org/aboutcorpus.html。 2.1下载并加载数据 # 用于将数据下载并存储到父文件夹中的zip文件的代码 file_URL<-\one/dataset/Coursera-SwiftKey.zip\ dest<-\ 【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
download.file(file_URL, dest) unzip(dest) 加载数据 # 设置识别语料库中的英文文件 cfolder<-paste(pfolder, \, sep=\) names<-list.files(cfolder) fplist<-paste(cfolder, \, names[grep(pattern=\, names, ignore.case=FALSE)], sep=\) text<-sapply(fplist, readLines) 2.2数据的特点
数据的特点可以在下面看到。
line_count<-sapply(text, length) nWords<-sapply(text, function(x)stringi::stri_count(x, regex=\)) nChar<-sapply(text, nchar) sources<-sapply(names, function(x)strsplit(x, \)[[1]][2]) summary_df<-list() for(iin1:length(sources)){ temp<-summary(nWords[[i]]) summary_df[[i]]<-data.frame(source=factor(sources[i], levels=sources), lines=line_count[i], nWords=sum(nWords[[i]]), nChar=sum(nChar[[i]]), min=min(nWords[[i]]), med=median(nWords[[i]]), mean=mean(nWords[[i]]), max=max(nWords[[i]])) } summary_df<-dplyr::bind_rows(summary_df) 【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
summary_df ## source lines nWords nChar min med mean max ## 1 blogs 899288 37334131 206824505 1 28 41.51521 6630 ## 2 news 1010242 34372530 203223159 1 31 34.02406 1792 ## 3 twitter 2360148 30373543 162096031 1 12 12.86934 47 2.3字数
word_count<-list() for(iin1:length(sources)){ word_count[[i]]<-data.frame(line=1:length(text[[i]]), nWords=nWords[[i]], nChar=nChar[[i]], source=factor(sources[i], levels=sources), row.names=NULL) } word_count<-dplyr::bind_rows(word_count) rm(line_count, nChar, nWords) library(ggplot2) qplot(nWords, data=subset(word_count, nWords<=250), color=source, geom=\) 【原创】附代码数据
有问题到淘宝找“大数据部落”就可以了
如上所示,博客和新闻样本通常比Twitter样本长,这是有道理的,因为Twitter限制为140个字符。 有超过250个单词的可以忽略的条目,所以我删除它们来更清楚地显示大部分数据。
因为三个来源都有明确的分布模式,所以假设一个随机样本将具有相似的分布模式是合理的。
rm(summary_df, word_count) 3创建和处理样本
由于语料库比较大,我只用10%的样本进行探索性数据分析,并开发出我的初始模型。
3.1选择10%的样本 set.seed(12345) p<-.10 sample<-sapply(text, function(x)x[sample(1:length(x), floor(p*length(x)), replace=FALSE)]) rm(text) 3.2清理
清理过程将包括词干,也适应语法差异和错误拼写。
make_wordbag<-function(remove_stopwords=TRUE){ profanity_url<-\stock/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words/master/en\
共分享92篇相关文档