2014-09-26 194 views
2

我的數據是一個txt文件,如下所示:
話number_doc
overwiew 1
客戶端1
店1
瑪吉1
價格2
股票2個
經濟學2stemDocument [R文本挖掘

這些文件的編號是按(從最小到最大)排序的。現在我要爲每個文檔都包含屬於該文檔的所有單詞。現在他們站在一列中,但我想要在textDocument中的單詞(來自包tm,因爲它在該包中的某些功能是必需的)。我這樣做如下:

data <- read.table("poging.txt", header = TRUE) 
data 

doc <- c() 
#I paste all the words from a document together: 
doc[1] <- paste(data[1:4,1], collapse = ' ') 
doc[2] <- paste(data[1:4,1], collapse = ' ') 

#Make a data.frame of it 
doc_df <- data.frame(docs = doc, row.names = 1:2) 

#Install package 
install.packages("tm") 
library(tm) 

#Make a Dataframesource of it so that each row is seen as a document 
ds <- DataframeSource(doc_df) 
inspect(VCorpus(ds)) 

#Now I want to stem for example document number 1 
stemDocument(ds[[1]]) 

但通過使用ds[[1]]作爲參數,它不起作用。他找不到第1號文件。 有人可以幫我嗎?

在例子om包tm他們使用的數據crude。我希望我的數據與crude中的格式相同。

西爾克

+1

請創建一個[可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)與樣品輸入和所需的輸出。如果我們可以將代碼複製/粘貼到R來重新創建問題,那麼幫助您會更容易。 – MrFlick 2014-09-26 21:25:58

+0

我已經做了一個更簡單的案例,現在只有2個文檔,但問題仍然是一樣的。希望你能幫我! – Anita 2014-09-27 07:35:52

+0

但我們仍然無法運行代碼,因爲它需要「poging.txt」。爲了有所幫助,它必須是一個包含的,最小可重現的例子。 – MrFlick 2014-09-27 21:55:59

回答

0

stemDocument(),就是要與TextDocument,而不是一個數據源使用。你想使用數據源創建一個語料庫,那麼你可以從那裏提取文件。

ds <- DataframeSource(doc_df) 
corpus <- VCorpus(ds) 
stemDocument(corpus[[1]]) 

注意stemDocument將返回一個新文檔,並不會永久更新語料庫。所以如果你想對輸出做任何事情,一定要把它保存在某個地方。