我剛剛注意到,在更新到tm
v。0.5-10之後,不再支持函數Dictionary()
。這是一個錯誤嗎?還是被棄用?我想用另一個函數來創建一個字典嗎?tm包中不再支持字典()。如何修改代碼?
因爲我現在有很多代碼需要修改,那麼在沒有工程設計的情況下繼續進行的最好方法是什麼?
從新聞文件我剛剛注意到,在更新到tm
v。0.5-10之後,不再支持函數Dictionary()
。這是一個錯誤嗎?還是被棄用?我想用另一個函數來創建一個字典嗎?tm包中不再支持字典()。如何修改代碼?
因爲我現在有很多代碼需要修改,那麼在沒有工程設計的情況下繼續進行的最好方法是什麼?
從新聞文件正如IShouldBuyABoat所說,你沒有給我們任何關於你如何使用Dictionary
的線索,所以我們不能給你任何具體的答案(更新你的問題,更多細節)。
在任何情況下,回答你的「如何更新我的代碼」問題可能是「只是刪除Dictionary
,它應該是精」,因爲你可以在這裏看到:
library(tm)
data(crude)
找出Dictionary
在早期版本的tm
包所做的:一個毫無意義的功能
methods(Dictionary)
getAnywhere(Dictionary.DocumentTermMatrix)
# function(x) structure(Terms(x), class = c("Dictionary", "character"))
getAnywhere(Dictionary.character)
# function (x) structure(x, class = c("Dictionary", "character"))
類,無論如何,似乎非常明智的將其刪除。但是如何更新依賴於它的代碼?
您可能使用Dictionary
這樣的:
myDictionary <- Dictionary(c("some", "tokens", "that", "I", "am", "interested", "in"))
inspect(DocumentTermMatrix(crude, list(dictionary = myDictionary)))
現在,這項功能不再可用,你應該這樣做,而不是使用一個特徵向量:'
myTerms <- c("some", "tokens", "that", "I", "am", "interested", "in")
inspect(DocumentTermMatrix(crude, list(dictionary = myTerms)))
輸出對於這兩個示例是相同的,第一個是使用tm
版本0.5-9和第二個版本0.5-10
該指令在使用Terms
的消息是,如果你想獲得的所有詞語的文件項矩陣,像這樣
Terms(DocumentTermMatrix(crude))
如果這些方法都可以幫助你,那麼你就需要提供更多的細節你想要什麼去做。
更完整的提取物:
\subsection{DEPRECATED & DEFUNCT}{
\itemize{
\item Following functions have been removed:
\itemize{
\item \code{Dictionary()} (use a character vector instead; use
\code{Terms()} to extract terms from a document-term or term-document
matrix),
所以。是的,它被棄用和刪除。正如Ben所建議的,作者打算使用Terms()
。爲什麼你得到這個錯誤只是一個空閒的猜測問題,因爲你沒有提供一個數據對象並且代碼會拋出錯誤。一個猜測是你提供的對象不是TDM或DTM。
如果您使用Dictionary作爲@Ben建議,我認爲您可以創建一個名爲Dictionary
的虛擬函數,它只是返回您傳遞給它的字符向量。
Dictionary <- function(x) {
if(is.character(x)) {
return (x)
}
stop('x is not a character vector')
}
但是,長期來說,捲起袖子和重構代碼可能會更好。
從包新聞:「使用一個字符向量;使用Terms()從文檔術語或術語文檔矩陣中提取術語」http://cran.r-project.org/web/packages/tm /新聞。html – Ben
@Ben Terms()沒有完全複製Dictionary()'UseMethod中的錯誤(「Terms」): 沒有適用於'Terms'的適用方法應用於類「character」的對象' – CptNemo