그렇습니다 . 혼동을 이해하는 것은 이해가되지만, "상황"이라는 용어는이 문맥에서 명확하게 정의하기 어렵 기 때문입니다.
에 대한 sparse
논쟁 의 의미 에서 removeSparseTerms()
, 희소성은 용어에 대한 상대적인 문서 빈도 의 임계 값을 말하며 , 그 위 의 용어는 제거됩니다. 여기서 상대적 문서 빈도는 비율을 의미합니다. 명확하지는 않지만 명령에 대한 도움말 페이지는 1.0에 가까워 질 수록 희소성이 줄어 듭니다 . 희소성은 0 또는 1.0의 값을 사용할 수 없으며 그 사이의 값만 사용할 수 있습니다.
따라서 0.99보다 더 희소 한 sparse = 0.99
용어 만 제거 한다는 해석이 정확합니다 . 정확한 해석 은 항에 대해 모든 항을 유지한다는 것입니다
. 여기서 은 문서 수입니다.이 경우 아마도 모든 항이 유지됩니다 (아래 예 참조). .sparse = 0.99
제이디에프제이> N* ( 1 − 0.99 )엔
다른 극단적 인 경우 인 경우 sparse = .01
모든 문서에 (거의) 나타나는 용어 만 유지됩니다. (물론 이것은 용어의 수와 문서의 수에 따라 달라지며, 자연어에서는 "the"와 같은 일반적인 단어가 모든 문서에서 나타날 가능성이 높기 때문에 "스파 스"가 아닙니다.
희소성 임계 값 0.99의 예 (0.01 개 미만의 문서 (제 1 예) 및 0.01 개 이상의 문서에서 가장 많이 발생하는 용어) :
> # second term occurs in just 1 of 101 documents
> myTdm1 <- as.DocumentTermMatrix(slam::as.simple_triplet_matrix(matrix(c(rep(1, 101), rep(1,1), rep(0, 100)), ncol=2)),
+ weighting = weightTf)
> removeSparseTerms(myTdm1, .99)
<<DocumentTermMatrix (documents: 101, terms: 1)>>
Non-/sparse entries: 101/0
Sparsity : 0%
Maximal term length: 2
Weighting : term frequency (tf)
>
> # second term occurs in 2 of 101 documents
> myTdm2 <- as.DocumentTermMatrix(slam::as.simple_triplet_matrix(matrix(c(rep(1, 101), rep(1,2), rep(0, 99)), ncol=2)),
+ weighting = weightTf)
> removeSparseTerms(myTdm2, .99)
<<DocumentTermMatrix (documents: 101, terms: 2)>>
Non-/sparse entries: 103/99
Sparsity : 49%
Maximal term length: 2
Weighting : term frequency (tf)
실제 텍스트와 용어가 포함 된 몇 가지 추가 예는 다음과 같습니다.
> myText <- c("the quick brown furry fox jumped over a second furry brown fox",
"the sparse brown furry matrix",
"the quick matrix")
> require(tm)
> myVCorpus <- VCorpus(VectorSource(myText))
> myTdm <- DocumentTermMatrix(myVCorpus)
> as.matrix(myTdm)
Terms
Docs brown fox furry jumped matrix over quick second sparse the
1 2 2 2 1 0 1 1 1 0 1
2 1 0 1 0 1 0 0 0 1 1
3 0 0 0 0 1 0 1 0 0 1
> as.matrix(removeSparseTerms(myTdm, .01))
Terms
Docs the
1 1
2 1
3 1
> as.matrix(removeSparseTerms(myTdm, .99))
Terms
Docs brown fox furry jumped matrix over quick second sparse the
1 2 2 2 1 0 1 1 1 0 1
2 1 0 1 0 1 0 0 0 1 1
3 0 0 0 0 1 0 1 0 0 1
> as.matrix(removeSparseTerms(myTdm, .5))
Terms
Docs brown furry matrix quick the
1 2 2 0 1 1
2 1 1 1 0 1
3 0 0 1 1 1
의 마지막 예 sparse = 0.34
에서는 문서의 3 분의 2에서 발생하는 용어 만 유지되었습니다.
문서 빈도를 기준으로 문서 용어 행렬에서 용어를 트리밍하는 다른 방법은 텍스트 분석 패키지 quanteda 입니다. 여기서 동일한 기능은 희소성이 아니라 문서의 빈도 ( tf-idf 에서와 같이)를 직접적으로 나타냅니다 .
> require(quanteda)
> myDfm <- dfm(myText, verbose = FALSE)
> docfreq(myDfm)
a brown fox furry jumped matrix over quick second sparse the
1 2 1 2 1 2 1 2 1 1 3
> trim(myDfm, minDoc = 2)
Features occurring in fewer than 2 documents: 6
Document-feature matrix of: 3 documents, 5 features.
3 x 5 sparse Matrix of class "dfmSparse"
features
docs brown furry the matrix quick
text1 2 2 1 0 1
text2 1 1 1 1 0
text3 0 0 1 1 1
이 사용법은 훨씬 간단합니다.