ТМ пакет: stemCompletion не работает

У меня есть простой код для выполнения анализа текста. Перед созданием DTM я применяю stemCompletion. Однако результатом этого является то, что я не понимаю, делаю ли я это неправильно, или это единственный способ поведения.

Я сослался на эту ссылку справки rmy: text-mining-with-the-TM-package-word-stemming

Проблема, которую я вижу здесь, заключается в том, что после stemm мой DTm сжимается и не возвращает маркеры вообще (возвращает ‘content’ »meta’)

Мой код и выходные данные:

texts <- c("i am member of the XYZ association",
           "apply for our open associate position", 
           "xyz memorial lecture takes place on wednesday", 
           "vote for the most popular lecturer")

myCorpus <- Corpus(VectorSource(texts))
myCorpus <- tm_map(myCorpus, content_transformer(tolower))
myCorpus <- tm_map(myCorpus, removePunctuation) 
myCorpus <- tm_map(myCorpus, removeNumbers)
removeURL <- function(x) gsub("http[[:alnum:]]*", "", x)
myCorpus <- tm_map(myCorpus, content_transformer(removeURL))  #??
myCorpusCopy <- myCorpus
myCorpus <- tm_map(myCorpus, stemDocument)

for (i in 1:4) {
  cat(paste("[[", i, "]] ", sep = ""))
  writeLines(as.character(myCorpus[[i]]))
}

Output:
  [[1]] i am member of the xyz associ
  [[2]] appli for our open associ posit
  [[3]] xyz memori lectur take place on wednesday
  [[4]] vote for the most popular lectur


myCorpus <- tm_map(myCorpus, stemCompletion, dictionary = myCorpusCopy)
for (i in 1:4) {
  cat(paste("[[", i, "]] ", sep = ""))
  writeLines(as.character(myCorpus[[i]]))
}

Output:
  [[1]] content
  meta
  [[2]] content
  meta
  [[3]] content
  meta
  [[4]] content
  meta

myCorpus <- tm_map(myCorpus, PlainTextDocument)

dtm <- DocumentTermMatrix(myCorpus, control = list(weighting = weightTf))
dtm
inspect(dtm)

Output:
  > inspect(dtm)
  <<DocumentTermMatrix (documents: 4, terms: 2)>>
    Non-/sparse entries: 8/0
  Sparsity           : 0%
  Maximal term length: 7
  Weighting          : term frequency (tf)

  Terms
  Docs           content meta
  character(0)       1    1
  character(0)       1    1
  character(0)       1    1
  character(0)       1    1

Ожидаемый результат: для успешного выполнения stemming (как stemdocument, так и stemcompletion). Я использую пакет tm 0.6

1 ответ

  1. Вы неправильно используете функцию. Вот как это работает:

    texts <- c("i am member of the XYZ association",
               "apply for our open associate position", 
               "xyz memorial lecture takes place on wednesday", 
               "vote for the most popular lecturer")
    corp <- Corpus(VectorSource(texts))
    tdm <- TermDocumentMatrix(corp, control = list(stemming = TRUE))
    Terms(tdm)
    #  [1] "appli"     "associ"    "for"       "lectur"    "member"    "memori"    "most"      "open"     
    #  [9] "our"       "place"     "popular"   "posit"     "take"      "the"       "vote"      "wednesday"
    # [17] "xyz" 
    stemCompletion(Terms(tdm), corp)
    # appli      associ         for      lectur      member      memori        most        open 
    #    "" "associate"       "for"   "lecture"    "member"  "memorial"      "most"      "open" 
    #   our       place     popular       posit        take         the        vote   wednesday 
    # "our"     "place"   "popular"  "position"     "takes"       "the"      "vote" "wednesday" 
    #   xyz 
    # "xyz"