Тм автоматически игнорирует очень короткие строки?

Вот мой код: пример 1:

a <- c("ab cd de","ENERGIZER A23 12V ALKALINE BATTERi")
a1 <- VCorpus(VectorSource(a))
a2 <- TermDocumentMatrix(a1,control = list(stemming=T))
inspect(a2)

Результат:

         Docs
Terms     1 2
  12v     0 1
  a23     0 1
  alkalin 0 1
  batteri 0 1
  energ   0 1

Похоже, первая строка в a игнорируется.

пример 2

a <- c("abcd cde de","ENERGIZER A23 12V ALKALINE BATTERi")
a1 <- VCorpus(VectorSource(a))
a2 <- TermDocumentMatrix(a1,control = list(stemming=T))
inspect(a2)

Результат:

         Docs
Terms     1 2
  12v     0 1
  a23     0 1
  abcd    1 0
  alkalin 0 1
  batteri 0 1
  cde     1 0
  energ   0 1

Мы можем видеть две подстроки (abcd, cde), в то время как самая короткая (de) все еще отсутствует. Ситуация такая же, если я не использую control = list (stemming = T). Итак, мне любопытно, если это своего рода определение в ТМ? Строки будут игнорироваться, если оно меньше 3 букв? Я не думаю, что это хорошая идея. Очень возможно, что строка полезна, даже если она короткая, например, сокращение.

Если так, есть ли параметр или что-то, что может изменить это? Большое спасибо.

1 ответ

Решение

Увидеть ?termFreq, Опция, которую вы должны установить, wordLengths, Из документа:

Целочисленный вектор длины 2. Слова, длина которых меньше минимальной длины слова "wordLengths[1]" или длиннее максимальной длины слова "wordLengths[2]", отбрасываются. По умолчанию используется значение "c(3, Inf)", т. Е. Минимальная длина слова 3 символа.

Итак, если вы не хотите исключать короткие слова, вы можете:

a2 <- TermDocumentMatrix(a1,control = list(stemming=T,wordLengths=c(1,Inf)))
inspect(a2)
         Docs
Terms     1 2
  12v     0 1
  a23     0 1
  ab      1 0
  alkalin 0 1
  batteri 0 1
  cd      1 0
  de      1 0
  energ   0 1
Другие вопросы по тегам