2014-08-28 15 views
12

Bir TermDocumentMatrix oluşturmaya çalışırken, R içinde {tm} paketinin çok sayıda çevrimiçi örneği üzerinde çalışıyorum. Bir corpus oluşturmak ve temizlemek oldukça kolaydı, ancak matris oluşturmaya çalıştığımda sürekli olarak bir hatayla karşılaşıyorum. Hata: UseMethod içindeTermDocumentMatrix hataları, R

hatası ("meta", x): 'meta' için uygulanabilir bir yöntem sınıfı "karakter" Buna ek olarak bir nesneye uygulanan : uyarı mesajı: mclapply olarak (unname (içerik (x)), termFreq, kontrol): tüm zamanlanmış çekirdekler burada Jon Starkweather metin madenciliği example gelen kodu kullanıcı kodu Örneğin

hataları karşılaştı. Bu uzun kod için şimdiden özür dilerim, ancak bu tekrarlanabilir bir örnek üretiyor. Lütfen hatanın {tdm} işleviyle birlikte geldiğini unutmayın.

#Read in data 
policy.HTML.page <- readLines("http://policy.unt.edu/policy/3-5") 

#Obtain text and remove mark-up 
policy.HTML.page[186:202] 
id.1 <- 3 + which(policy.HTML.page == "     TOTAL UNIVERSITY  </div>") 
id.2 <- id.1 + 5 
text.data <- policy.HTML.page[id.1:id.2] 
td.1 <- gsub(pattern = "<p>", replacement = "", x = text.data, 
    ignore.case = TRUE, perl = FALSE, fixed = FALSE, useBytes = FALSE) 

td.2 <- gsub(pattern = "</p>", replacement = "", x = td.1, ignore.case = TRUE, 
    perl = FALSE, fixed = FALSE, useBytes = FALSE) 

text.d <- td.2; rm(text.data, td.1, td.2) 

#Create corpus and clean 
library(tm) 
library(SnowballC) 
txt <- VectorSource(text.d); rm(text.d) 
txt.corpus <- Corpus(txt) 
txt.corpus <- tm_map(txt.corpus, tolower) 
txt.corpus <- tm_map(txt.corpus, removeNumbers) 
txt.corpus <- tm_map(txt.corpus, removePunctuation) 
txt.corpus <- tm_map(txt.corpus, removeWords, stopwords("english")) 
txt.corpus <- tm_map(txt.corpus, stripWhitespace); #inspect(docs[1]) 
txt.corpus <- tm_map(txt.corpus, stemDocument) 

# NOTE ERROR WHEN CREATING TDM 
tdm <- TermDocumentMatrix(txt.corpus) 
+1

Bu yazıyı gördüm ve sorunuz bana bunu hatırlattı. [Bu bağlantı] bir göz atın (http://stackoverflow.com/questions/24771165/r-project-no-applicable-method-for-meta-applied-to-an-object-of-class-charact). Bu yararlı olabilir. – jazzurro

+0

@jazzurro - beni bu yazıya yönlendirdiğiniz için teşekkürler! tm_map işlevinde tokmalayıcıya content_transformer eklenmesi sorunu çözdüm –

+1

Aslında bende aynı sorun vardı ve bu mesajı gördüm. Senaryonun şu an çalıştığına sevindim. – jazzurro

cevap

27

çözümüne jazzurro puan sağlanan bağlantı. kod

txt.corpus <- tm_map(txt.corpus, tolower) 

aşağıdaki satırı tm v0.6 bu konunun 2 nedeni vardır

txt.corpus <- tm_map(txt.corpus, content_transformer(tolower)) 
5

şekilde değiştirilmelidir. yerine PlainTextDocument ait

  1. vb tolower gibi süreli seviyesi dönüşümleri yapıyorsanız tm_map döner karakter vektör.
    Çözüm: content_transformer aracılığıyla tolower arayın veya SnowballC paketi yüklü değilse tolower
  2. hemen sonra tm_map(corpus, PlainTextDocument) arayıp belgeleri kök çalışıyorsanız o zaman da bu oluşabilir.
    Çözüm: install.packages('SnowballC')
1

content_transformer uygulamak için hiçbir ihtiyaç vardır.

bu yolla corpus oluşturun:

trainData_corpus <- Corpus((VectorSource(trainData$Comments))) 

Deneyin.