gpt4 book ai didi

r - 在语料库的每个文档中查找最频繁的术语

转载 作者:行者123 更新时间:2023-12-04 12:31:10 25 4
gpt4 key购买 nike

我一直在使用 R 的 tm 包在分类问题上取得了很大的成功。我知道如何在整个语料库中找到最频繁的术语(使用 findFreqTerms()),但在文档中看不到任何可以找到最频繁术语的内容(在我提取词干和删除了停用词,但在我删除语料库中每个单独文档中的稀疏词之前)。我试过使用 apply()max 命令,但这给了我每个文档中术语出现的最大次数,而不是术语本身的名称.

library(tm)

data("crude")
corpus<-tm_map(crude, removePunctuation)
corpus<-tm_map(corpus, stripWhitespace)
corpus<-tm_map(corpus, tolower)
corpus<-tm_map(corpus, removeWords, stopwords("English"))
corpus<-tm_map(corpus, stemDocument)
dtm <- DocumentTermMatrix(corpus)
maxterms<-apply(dtm, 1, max)
maxterms
127 144 191 194 211 236 237 242 246 248 273 349 352
5 13 2 3 3 10 8 3 7 9 9 4 5
353 368 489 502 543 704 708
4 4 4 5 5 9 4

想法?

最佳答案

Ben 的回答给出了您的要求,但我不确定您的要求是否明智。它不考虑关系。这是使用 the qdap package 的一种方法和第二种方法.他们会给你包含单词的列表(在 qdap 的情况下是包含单词和频率的数据框列表。你可以使用 unlist 来使用第一个选项和 lapply ,索引和 unlist 使用 qdap。qdap 方法适用于原始 Corpus:

选项 #1:

apply(dtm, 1, function(x) unlist(dtm[["dimnames"]][2], 
use.names = FALSE)[x == max(x)])

带有 qdap 的选项 #2:

library(qdap)
dat <- tm_corpus2df(crude)
tapply(stemmer(dat$text), dat$docs, freq_terms, top = 1,
stopwords = tm::stopwords("English"))

lapply(WRAP_HERE, "[", 1) 包装 tapply 使两个答案在内容和格式上几乎相同。

编辑:添加了一个更简洁地使用 qdap 的示例:

FUN <- function(x) freq_terms(x, top = 1, stopwords = stopwords("English"))[, 1]
lapply(stemmer(crude), FUN)

## [[1]]
## [1] "oil" "price"
##
## [[2]]
## [1] "opec"
##
## [[3]]
## [1] "canada" "canadian" "crude" "oil" "post" "price" "texaco"
##
## [[4]]
## [1] "crude"
##
## [[5]]
## [1] "estim" "reserv" "said" "trust"
##
## [[6]]
## [1] "kuwait" "said"
##
## [[7]]
## [1] "report" "say"
##
## [[8]]
## [1] "yesterday"
##
## [[9]]
## [1] "billion"
##
## [[10]]
## [1] "market" "price"
##
## [[11]]
## [1] "mln"
##
## [[12]]
## [1] "oil"
##
## [[13]]
## [1] "oil" "price"
##
## [[14]]
## [1] "oil" "opec"
##
## [[15]]
## [1] "power"
##
## [[16]]
## [1] "oil"
##
## [[17]]
## [1] "oil"
##
## [[18]]
## [1] "dlrs"
##
## [[19]]
## [1] "futur"
##
## [[20]]
## [1] "januari"

关于r - 在语料库的每个文档中查找最频繁的术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19760746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com