tor*_*ino 2 r text-analysis corpus word-count tm
我有一个包含超过5000个文本文件的语料库.我想在每个文件运行预处理之后获得每个文件的单个字数(转向更低,删除停用词等).我对单个文本文件的单词计数没有任何好运.任何帮助,将不胜感激.
library(tm)
revs<-Corpus(DirSource("data/"))
revs<-tm_map(revs,tolower)
revs<-tm_map(revs,removeWords, stopwords("english"))
revs<-tm_map(revs,removePunctuation)
revs<-tm_map(revs,removeNumbers)
revs<-tm_map(revs,stripWhitespace)
dtm<-DocumentTermMatrix(revs)
Run Code Online (Sandbox Code Playgroud)
Ben*_*Ben 11
正如泰勒所说,如果没有可重复的例子,你的问题就不完整了.以下是如何为此类问题创建可重现的示例 - 使用随程序包内置的数据:
library("tm") # version 0.6, you seem to be using an older version
data(crude)
revs <- tm_map(crude, content_transformer(tolower))
revs <- tm_map(revs, removeWords, stopwords("english"))
revs <- tm_map(revs, removePunctuation)
revs <- tm_map(revs, removeNumbers)
revs <- tm_map(revs, stripWhitespace)
dtm <- DocumentTermMatrix(revs)
Run Code Online (Sandbox Code Playgroud)
以下是如何获取每个文档的单词计数,dtm的每一行都是一个文档,因此您只需对行的列求和,并为文档指定单词count:
# Word count per document
rowSums(as.matrix(dtm))
Run Code Online (Sandbox Code Playgroud)
您也可以在我与Paul Nulty一起开发的Quanteda软件包中执行此操作。quanteda
为此,使用工具创建自己的语料库很容易,但是它也tm
直接导入VCorpus对象(如下所示)。
您可以使用summary()
语料库对象类型的方法来获得每个文档的令牌计数,或者使用dfm()
,然后rowSums()
在生成的文档功能矩阵上使用来创建文档功能矩阵。 dfm()
默认情况下,将应用您需要使用tm
包装单独进行的清洁步骤。
data(crude, package="tm")
mycorpus <- corpus(crude)
summary(mycorpus)
## Corpus consisting of 20 documents.
##
## Text Types Tokens Sentences
## reut-00001.xml 56 90 8
## reut-00002.xml 224 439 21
## reut-00004.xml 39 51 4
## reut-00005.xml 49 66 6
## reut-00006.xml 59 88 3
## reut-00007.xml 229 443 25
## reut-00008.xml 232 420 23
## reut-00009.xml 96 134 9
## reut-00010.xml 165 297 22
## reut-00011.xml 179 336 20
## reut-00012.xml 179 360 23
## reut-00013.xml 67 92 3
## reut-00014.xml 68 103 7
## reut-00015.xml 71 97 4
## reut-00016.xml 72 109 4
## reut-00018.xml 90 144 9
## reut-00019.xml 117 194 13
## reut-00021.xml 47 77 12
## reut-00022.xml 142 281 12
## reut-00023.xml 30 43 8
##
## Source: Converted from tm VCorpus 'crude'.
## Created: Sun May 31 18:24:07 2015.
## Notes: .
mydfm <- dfm(mycorpus)
## Creating a dfm from a corpus ...
## ... indexing 20 documents
## ... tokenizing texts, found 3,979 total tokens
## ... cleaning the tokens, 115 removed entirely
## ... summing tokens by document
## ... indexing 1,048 feature types
## ... building sparse matrix
## ... created a 20 x 1048 sparse dfm
## ... complete. Elapsed time: 0.039 seconds.
rowSums(mydfm)
## reut-00001.xml reut-00002.xml reut-00004.xml reut-00005.xml reut-00006.xml reut-00007.xml
## 90 439 51 66 88 443
## reut-00008.xml reut-00009.xml reut-00010.xml reut-00011.xml reut-00012.xml reut-00013.xml
## 420 134 297 336 360 92
## reut-00014.xml reut-00015.xml reut-00016.xml reut-00018.xml reut-00019.xml reut-00021.xml
## 103 97 109 144 194 77
## reut-00022.xml reut-00023.xml
## 281 43
Run Code Online (Sandbox Code Playgroud)
我很乐意为您解决任何quanteda
相关问题。