2017-11-16 14 views
0

나는 dtm을 가지고 있으며 문서 용어 행렬에서 각 문서의 빈도별로 상위 5 개 용어를 추출하려고합니다. dtm에서 문서 당 빈도별로 상위 피쳐 추출 R

은 내가 TM 패키지

Terms      
Docs aaaa aac abrt abused accept accepted 
1 0 0 0 0 0 0 
2 0 0 0 0 0 0 
3 0 0 0 0 0 0 
4 0 0 0 0 0 0 
5 0 0 0 0 0 0 
6 0 0 0 0 0 0 
를 사용하여 구축 DTM을

필요한 출력 형식이어야합니다 유래는 기타와 ANS 내가 사용할 수있는 모든 솔루션을 시도

Id 
1 Term1 Term2 Term3 Term4 Term5 
2 Term1 Term2 Term3 Term4 Term5 
and so on for all the documents. 

소스 은 Make dataframe of top N frequent terms for multiple corpora using tm package in R (tdm으로 변환하여 출력 형식으로 가져 오려고했지만 작동하지 않음) 및 기타 일하다. Quanteda를 사용

답변

1

:

library(quanteda) 
txt <- c("hello world world fizz", "foo bar bar buzz") 
dfm <- dfm(txt) 
topfeatures(dfm, n = 2, groups = seq_len(ndoc(dfm))) 
# $`1` 
# world hello 
# 2  1 
# 
# $`2` 
# bar foo 
# 2 1 

는 또한 DocumentTermMatrixdfm 사이에 변환 할 수 있습니다.

또는 고전 tm 사용 :

library(tm) 
packageVersion("tm") 
# [1] ‘0.7.1’ 
txt <- c(doc1="hello world world", doc2="foo bar bar fizz buzz") 
dtm <- DocumentTermMatrix(Corpus(VectorSource(txt))) 
n <- 5 
(top <- findMostFreqTerms(dtm, n = n)) 
# $doc1 
# world hello 
# 2  1 
# 
# $doc2 
# bar buzz fizz foo 
# 2 1 1 1 
do.call(rbind, lapply(top, function(x) { x <- names(x);length(x)<-n;x })) 
# [,1] [,2] [,3] [,4] [,5] 
# doc1 "world" "hello" NA  NA NA 
# doc2 "bar" "buzz" "fizz" "foo" NA 

findMostFreqTermstm version 0.7-1 이후 사용할 수 있습니다.