2014-06-09 38 views
0

我想知道如何根據可能包含的術語來識別文檔(本例中的推文)。R tm/qdap - 根據術語獲取文檔

假設我有這個數據框(df),它由Twitter用戶的屏幕名稱列表和他們的推文之一組成。

> df 
    ScreenName tweet       
[1,] "Guy A" "one random tweet"    
[2,] "Guy B" "another random tweet"   
[3,] "Guy C" "a third random piece of text" 

那麼,這個數據幀中我想獲得包括一定期限-say「鳴叫」的微博 - 和提取那些到一個新的數據幀(DF2)像這樣:

> df2 
    ScreenName tweet     
[1,] "Guy A" "one random tweet"  
[2,] "Guy B" "another random tweet" 

我認爲必須有一種方法來使用tm或qdap包來完成它。但是找不到任何東西,所以最終導致了這個混亂。

清潔文集後,我轉換爲termDocumentMatrix

tdm <- TermDocumentMatrix(corpus, control=list(minWordLength=1)) 

然後我確定,其中術語文檔矩陣的行我感興趣的術語是

t <- as.vector(tdm[term,]) 

子集 - 如果長期一直提到不止一次

t.df <- as.data.frame(t) 
t.sub <- subset(t.df, t >= 1) 

獲取文件編號(行號)

t.n <- as.numeric(rownames(t.sub)) 

創建新的數據幀,其中t.tw - 只包括鳴叫提的期限和T.O - 其他鳴叫

t.tw <- tw[t.n,] 
t.o <- tw[!1:nrow(tw) %in% t.n, ] 

感謝您的幫助。

如果上面那段可怕的代碼冒犯了任何成功的R用戶,我們抱歉。

+0

目前還不清楚你在問什麼。 'tm_filter'工作得很好,如果你想在文檔中搜索術語/文本。你是如何應用它的? – agstudy

+0

最好是花時間以清晰連貫的方式用可重現的示例和期望的輸出格式化問題,而不是發佈稱爲「可怕」的代碼。如果您使用此代碼來描述問題,則有效溝通您的問題和期望的輸出的機會將大大減少。更具體地說,分享一個看起來像你的數據的小型語料庫。分享您想要查找的條款。 –

回答

0

我會留在基地,這與以下行使用grep功能(如果你已經有了一個data.frame):

df[grep("tweet", df$tweet), ] 

這全部與您的數據:

df <- read.table(text='ScreenName tweet       
"Guy A" "one random tweet"    
"Guy B" "another random tweet"   
"Guy C" "a third random piece of text"', header=TRUE) 

df[grep("tweet", df$tweet), ] 

## ScreenName    tweet 
## 1  Guy A  one random tweet 
## 2  Guy B another random tweet