2015-10-19 40 views
0

我試圖找到馬丁路德金的「我有一個夢想」演講中每學期的頻率。我已將所有大寫字母轉換爲小寫字母,並已刪除所有停用詞。我有一個.txt文件中的文本,所以我不能在這裏顯示它。該文件中讀取的代碼如下:R:每學期查找頻率 - 警告消息

speech <- readLines(speech.txt) 

然後我執行轉換爲小寫和去除的成功停止的話,並把它稱爲:

clean.speech 

現在我有找到一些問題每學期的頻率。我創建了一個文集,檢查我的文集,並創建了一個TermDocumentMatrix如下:

myCorpus <- Corpus(VectorSource(clean.speech)) 
inspect(myCorpus) 
TDM <- TermDocumentMatrix(myCorpus) 

一切都很好了這一點。不過,我當時寫了下面的代碼,並得到了警告消息:

m < as.matrix(TDM) 

Warning Message: 
"In m < as.matrix(TDM): longer object length is not a multiple of shorter object length 

我知道這是一個很常見的警告信息,因此我首先用Google搜索,但我無法找到有關條款的頻率東西。我繼續運行下面的文本,看看它是否會運行一個警告消息,但它沒有。

v <- sort(rowSums(m), decreasing = TRUE) 
d <- data.frame(word=names(v), freq=v) 
head(d, 15) 

我的目標是找到術語的頻率。我很抱歉問這個問題,因爲我知道這個問題被問了很多。我只是不明白要改變我的代碼。謝謝大家,我很感激!

+0

嘗試進行[再現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。現在我們只能猜測出了什麼問題。 – phiver

+0

我無法直接發佈鏈接,因爲它是從我的Blackboard帳戶通過我的大學需要憑據。一旦我打開鏈接,我將所有文本複製到.txt文件中。我認爲這個問題很漫長,但是謝謝你的嘗試!我很感激! :) – mapleleaf

回答

0

只需撥打findFreqTerms(),例如,作爲tm::findFreqTerms(TDM, lowfreq=2, highfreq = 5)

(該tm::是可選的 - 只是說,它是一個內置tm包的功能可按)

1

如果你的目標只是找到術語的頻率,那麼試試這個。

首先,我得到了「我有一個夢想」的演講爲角色載體:

# get the text of the speech from an HTML source, and extract the text 
library(XML) 
doc.html <- htmlTreeParse('http://www.analytictech.com/mb021/mlk.htm', useInternal = TRUE) 
doc.text = unlist(xpathApply(doc.html, '//p', xmlValue)) 
doc.text = paste(doc.text, collapse = ' ') 

然後,我創建quanteda文檔長期矩陣,移除停止字(和添加「將「因爲quanteda的英文停用詞的內置列表不包括這個術語)。從那裏topfeatures()給你最頻繁的條款和他們的計數。

library(quanteda) 
# create a document-feature matrix 
IHADdfm <- dfm(doc.text, ignoredFeatures = c("will", stopwords("english")), verbose = FALSE) 
# 12 most frequent features 
topfeatures(IHADdfm, 12) 
## freedom  one  ring dream  let  day negro today  able every together years 
##  13  12  12  11  10  9  8  7  7  7  6  5 
# a word cloud, if you wish 
plot(IHADdfm, random.order = FALSE) 

enter image description here