Тм автоматически игнорирует очень короткие строки?
Вот мой код: пример 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