2015-06-24 67 views
-3

我正在對包含2500個文檔的文本數據執行文本挖掘,並在文檔中查找特定單詞。如果文檔中不存在單詞,該如何標記文檔?

我想標記文檔,如果一個單詞說'劃傷'不存在它,並獲得輸出作爲文件列表沒有這個詞。並且還想將輸出保存在文本文件中。

我使用下面的代碼

library(qdapRegex) 

grab2 <- rm_(pattern=S("@around_", 1, "laceration", 1), extract=TRUE) 

grab2(l$Text) 

示例輸出我得到

[[2164]] 
[1] NA 

[[2165]] 
[1] NA 

[[2166]] 
[1] "laceration" 

[[2167]] 
[1] NA 

[[2168]] 
[1] NA 

我想這將僅返回文檔,而單詞「裂傷」的代碼。並且希望將輸出寫入文件。

+0

也許應該使用命令行工具或perl。 R不是爲了有效解析磁盤上的一堆文件而設計的。 – Frank

+0

如果你知道如何「標記」(無論是什麼意思),「文檔」(無論是什麼意思:文件或在某些格式化的文本書目中命名),其中「跳舞」,然後假設2500「文件」可以列出通過在向量中的名稱,你應該可以使用'setdiff'或'!(docs%in%hits)'來獲得設置的差異。 –

+3

據我所知,'rm_'和'S'在vanilla R中不是函數。如果你使用的是一個包,你應該提及它並將它添加到你的代碼中。 – Frank

回答

2

雖然你可以做到這一點的R,這將是更有效地做到這一點,在命令行(使用如果在Windows上類似Linux OS或CygWin的):

grep -v "\blaceration\b" *.txt >ListOfNoLac 

在R,你可以這樣做:

fileList <- list.files(".", "\\.txt$") 
hasLac <- sapply(fileList, function(x) length(grep("\\blaceration\\b", readLines(x))) > 0) 
fileList[!hasLac] 
相關問題