我在平台上使用R 3.0.1:x86_64-apple-darwin10.8.0(64位)
我正在尝试使用tm库中的tm_map.但是当我执行这段代码时
library(tm)
data('crude')
tm_map(crude, stemDocument)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Warning message:
In parallel::mclapply(x, FUN, ...) :
all scheduled cores encountered errors in user code
Run Code Online (Sandbox Code Playgroud)
有谁知道这方面的解决方案?
我在一个文件夹中有近千篇pdf期刊文章.我需要在整个文件夹中对所有文章的摘要进行文本处理.现在我正在做以下事情:
dest <- "~/A1.pdf"
# set path to pdftotxt.exe and convert pdf to text
exe <- "C:/Program Files (x86)/xpdfbin-win-3.03/bin32/pdftotext.exe"
system(paste("\"", exe, "\" \"", dest, "\"", sep = ""), wait = F)
# get txt-file name and open it
filetxt <- sub(".pdf", ".txt", dest)
shell.exec(filetxt)
Run Code Online (Sandbox Code Playgroud)
通过这个,我将一个pdf文件转换为一个.txt文件,然后将该摘要复制到另一个.txt文件中并手动编译.这项工作很麻烦.
如何从文件夹中读取所有单篇文章并将其转换为仅包含每篇文章摘要的.txt文件.可以通过限制每篇文章中的摘要和引言之间的内容来完成; 但我无法这样做.任何帮助表示赞赏.
我正在使用R包tm,我想做一些文本挖掘.这是一份文件,被视为一袋文字.
我不明白如何加载文本文件和创建必要的对象以开始使用诸如....的功能的文档.
stemDocument(x, language = map_IETF(Language(x)))
Run Code Online (Sandbox Code Playgroud)
所以假设这是我的文档"这是对R load的测试"
如何加载数据进行文本处理并创建对象x?
我TermDocumentMatrix用tmR中的包创建了几个.
我想在每组文档中找到10个最常用的术语,最终得到一个输出表,如:
corpus1 corpus2
"beach" "city"
"sand" "sidewalk"
... ...
[10th most frequent word]
Run Code Online (Sandbox Code Playgroud)
根据定义,findFreqTerms(corpus1,N)返回出现N次或更多次的所有术语.要手动执行此操作,我可以更改N,直到我返回10个左右的术语,但输出为findFreqTerms按字母顺序排列,因此除非我选择正确的N,否则我实际上不知道哪个是前10个.我怀疑这个涉及操纵您可以看到的TDM的内部结构,str(corpus1)如在R tm包中创建最常用术语的矩阵,但这里的答案对我来说非常不透明所以我想重新解释这个问题.
谢谢!
这是关于文本挖掘程序的一般性问题.假设有一个文件语料库被归类为Spam/No_Spam.作为标准程序,可以预先处理数据,删除标点,停止单词等.将其转换为DocumentTermMatrix后,可以构建一些模型来预测垃圾邮件/ No_Spam.这是我的问题.现在我想使用为新文档建立的模型到达.为了检查单个文档,我必须构建DocumentTerm*Vector*?所以它可以用来预测垃圾邮件/ No_Spam.在tm的文档中,我发现使用例如tfidf权重将完整的语料库转换为矩阵.如何使用Corpus中的idf转换单个向量?我是否必须每次更改语料库并构建新的DocumentTermMatrix?我处理了我的语料库,将其转换为矩阵,然后将其拆分为训练和测试集.但是这里测试集与整个文档矩阵建立在同一行.我可以检查精度等,但不知道什么是新文本分类的最佳程序.
Ben,想象一下,我有一个预处理的DocumentTextMatrix,我将它转换为data.frame.
dtm <- DocumentTermMatrix(CorpusProc,control = list(weighting =function(x) weightTfIdf(x, normalize =FALSE),stopwords = TRUE, wordLengths=c(3, Inf), bounds = list(global = c(4,Inf))))
dtmDataFrame <- as.data.frame(inspect(dtm))
Run Code Online (Sandbox Code Playgroud)
添加了因子变量并构建了模型.
Corpus.svm<-svm(Risk_Category~.,data=dtmDataFrame)
Run Code Online (Sandbox Code Playgroud)
现在想象一下,我给你一个新文件d(以前不在你的语料库中),你想知道模型预测垃圾邮件/ No_Spam.你如何做到这一点?
好的,我们根据这里使用的代码创建一个示例.
examp1 <- "When discussing performance with colleagues, teaching, sending a bug report or searching for guidance on mailing lists and here on SO, a reproducible example is often asked and always helpful. What are your tips for creating an excellent example? How do you paste data structures from …Run Code Online (Sandbox Code Playgroud) 我正在使用该tm软件包使用以下代码清理一些数据:
mycorpus <- Corpus(VectorSource(x))
mycorpus <- tm_map(mycorpus, removePunctuation)
Run Code Online (Sandbox Code Playgroud)
然后,我想将语料库转换回数据框,以便导出包含数据帧原始格式的数据的文本文件.我尝试过以下方法:
dataframe <- as.data.frame(mycorpus)
Run Code Online (Sandbox Code Playgroud)
但是这会返回一个错误:
"as.data.frame.default中的错误.(mycorpus):无法将类"c(vcorpus,> corpus")强制转换为data.frame
如何将语料库转换为数据框?
我正在尝试使用tm包进行一些非常基本的文本分析并得到一些tf-idf分数; 我正在运行OS X(虽然我在Debian Squeeze上试过这个但结果相同); 我有一个目录(这是我的工作目录),里面有几个文本文件(第一集包含尤利西斯的前三集,第二集包含第二集,如果你必须知道的话).
R版本:2.15.1 SessionInfo()报告这个关于tm:[1] tm_0.5-8.3
相关的代码:
library('tm')
corpus <- Corpus(DirSource('.'))
dtm <- DocumentTermMatrix(corpus,control=list(weight=weightTfIdf))
str(dtm)
List of 6
$ i : int [1:12456] 1 1 1 1 1 1 1 1 1 1 ...
$ j : int [1:12456] 2 10 12 17 20 24 29 30 32 34 ...
$ v : num [1:12456] 1 1 1 1 1 1 1 1 1 1 ...
$ nrow : int 2
$ ncol : int 10646 …Run Code Online (Sandbox Code Playgroud) 我在R中有一个使用该tm软件包的语料库.我正在应用该removeWords功能来删除停用词
tm_map(abs, removeWords, stopwords("english"))
Run Code Online (Sandbox Code Playgroud)
有没有办法将自己的自定义停用词添加到此列表中?
我想使用R的分布式计算tm包(称为tm.plugin.dc)创建一个包含1亿条推文的文本语料库.这些推文存储在我笔记本电脑上的一个大型MySQL表中.我的笔记本电脑很旧,所以我使用的是我在Amazon EC2上设置的Hadoop集群.
CRAN的tm.plugin.dc文档说目前只支持DirSource.文档似乎表明DirSource每个文件只允许一个文档.我需要语料库将每条推文视为文档.我有1亿条推文 - 这是否意味着我需要在旧笔记本上制作1亿个文件?这似乎过分了.有没有更好的办法?
到目前为止我尝试了什么:
将MySQL表的文件转储作为单个(大量).sql文件.将文件上传到S3.将文件从S3传输到群集.使用Cloudera的Sqoop工具将文件导入Hive.怎么办?我无法弄清楚如何使DirSource与Hive一起工作.
在我的笔记本电脑上发送每条推文的XML文件.但是怎么样?我的电脑很旧,无法做到这一点....如果我能够超越它,那么我会:将所有1亿个XML文件上传到亚马逊S3中的文件夹.将S3文件夹复制到Hadoop集群.将DirSource指向该文件夹.
我想计算语料库作者之间的余弦距离.我们来看一个包含20个文档的语料库.
require(tm)
data("crude")
length(crude)
# [1] 20
Run Code Online (Sandbox Code Playgroud)
我想找出这20个文件中的余弦距离(相似度).我创建了一个术语 - 文档矩阵
tdm <- TermDocumentMatrix(crude,
control = list(removePunctuation = TRUE,
stopwords = TRUE))
Run Code Online (Sandbox Code Playgroud)
那么我将它转化成一个矩阵,它传递给dist()了的代理包
tdm <- as.matrix(tdm)
require(proxy)
cosine_dist_mat <- as.matrix(dist(t(tdm), method = "cosine"))
Run Code Online (Sandbox Code Playgroud)
最后我删除了余弦距离矩阵的对角线(因为我对文档与其自身之间的距离不感兴趣)并计算每个文档与语料库的另外19个文档之间的平均距离
diag(cosine_dist_mat) <- NA
cosine_dist <- apply(cosine_dist_mat, 2, mean, na.rm=TRUE)
cosine_dist
# 127 144 191 194
# 0.6728505 0.6788326 0.7808791 0.8003223
# 211 236 237 242
# 0.8218699 0.6702084 0.8752164 0.7553570
# 246 248 273 349
# 0.8205872 0.6495110 0.7064158 0.7494145
# 352 353 …Run Code Online (Sandbox Code Playgroud) r ×10
tm ×10
text-mining ×4
corpus ×3
amazon-ec2 ×1
hadoop ×1
hive ×1
load ×1
matrix ×1
mclapply ×1
pdftotext ×1
proxy ×1
stop-words ×1
tf-idf ×1