0

这是我的代码:示例 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),情况也是一样的。所以,我很好奇这是否是 tm 中的一种定义?如果少于 3 个字母,字符串将被忽略?我不认为这是一个好主意。一个字符串很有可能是有用的,即使它很短,例如缩写。

如果是这样,是否有参数或可以改变它的东西?非常感谢。

4

1 回答 1

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
于 2016-11-09T03:13:59.557 回答