【问题标题】:r : Why is removeSparseTerms() not doing anything?r : 为什么 removeSparseTerms() 没有做任何事情?
【发布时间】:2015-06-30 14:56:11
【问题描述】:

为什么 removeSparseTerms() 没有删除任何术语?应删除单次出现的单词(等)。
(r V. 3.2)

> docs <- tm_map(docs, stemDocument)
> dtm <- DocumentTermMatrix(docs)
> freq <- colSums(as.matrix(dtm))
> ord <- order(freq)
> freq[tail(ord)]
one experi   will   can lucid dream
287   312   363   452   1018   2413
> freq[head(ord)]
abbey abdomin   abdu abraham absent   abus
1       1       1       1       1       1
> dim(dtm)
[1]   1 5265
> dtms <- removeSparseTerms(dtm, 0.1)
> dim(dtms)
[1]   1 5265
> dtms <- removeSparseTerms(dtm, 0.001)
> dim(dtms)
[1]   1 5265
> dtms <- removeSparseTerms(dtm, 0.9)
> dim(dtms)
[1]   1 5265
> 

(语料库是单个文档,一本书的文本版本。)

【问题讨论】:

    标签: r data-mining text-mining data-cleaning


    【解决方案1】:

    原因是您只有一个文档,因此稀疏度不会随着您更改阈值而改变。运行这些行,你会看到效果:

    data("crude")
    tdm <- TermDocumentMatrix(crude)
    dtm <- DocumentTermMatrix(crude[1]) # pick only the first article (document, like your chapter)
    dim(dtm)
    (twenty <- removeSparseTerms(dtm, 0.2))
    (forty <- removeSparseTerms(dtm, 0.4))
    (sixty <- removeSparseTerms(dtm, 0.6))
    

    【讨论】:

    • 这是否也解释了为什么 findAssocs() 不起作用? > findAssocs(dtm, "lucid", corlimit=0.2) $data numeric(0) -- 如果我把书分成两半,我能确定哪些单词一起出现,或者是单词之间比较的结果两半? >
    • 如您所见,它不适用于单个文档。所以我猜它必须手动完成......(如果你想删除只使用一次的术语。)
    • 你能把你的书分成几章然后进行稀疏工作吗?
    猜你喜欢
    • 2021-08-11
    • 2021-12-20
    • 2011-07-25
    • 2023-04-06
    • 2021-04-10
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多