2016-07-20 5 views
1

R에서 findAssocs로 작업 할 때이 함수는 실제로 문서에서 검색된 용어 과 함께 발생하는 단어를 선택하지는 않지만 오히려 검색 용어가 자주 등장 할 때 발생하는 단어.R에서 findAssocs를 사용하여 자주 발생하는 단어를 찾을 수 있습니다.

나는 아래의 간단한 테스트 스크립트를 사용하여 시도했다 :

test <- list("housekeeping bath towel housekeeping room","housekeeping dirty","housekeeping very dirty","housekeeping super dirty") 
test <-Corpus(VectorSource(test)) 
test_dtm<-DocumentTermMatrix(test) 
test_dtms<-removeSparseTerms(test_dtm,0.99) 

findAssocs(test_dtms,"housekeeping",corlimit = 0.1) 

그리고 R에서 돌아 오는 결과입니다 :

$housekeeping 
bath room towel 
    1  1  1 

가 "더러운"라는 단어가 만점에 3 개에서 발생하는 것으로 나타났습니다 모든 문서에서 단 한 번 발생했던 반환 된 키워드와 비교할 때 4 개의 문서가 필요합니다.

누구나 내 스크립트에서 잘못되었거나 더 좋은 방법이 있는지 알 수 있습니까?

내가 달성하고자하는 결과는 모델이 특정 문서 내에서가 아니라 모든 문서에서 검색어와 자주 발생하는 단어를 반영해야한다는 것입니다. 나는 4 개의 문서를 1로 결합하려고했지만 findAssocs가 단일 문서에서 작동하지 않으므로 작동하지 않습니다.

조언이 있으십니까?

+0

'cor (c (2,1,1,1), c (0,1,1,1))'의 결과를 확인하십시오. 그것은 "더러운" "하우스 키핑"에 대한 상관 관계 계산입니다. 그것은 -1이고'findAssocs'는 0에서 1 사이의 상관 관계가 필요합니다. – Jota

+0

@Jota 여기서 강조하고 싶은 단어가 "더러운"경우 대체 방법이 있는지 조언 해 주시면 감사하겠습니다. –

+0

예,'findAssocs'에 대한 코드를 파고 필요에 맞게 수정할 수 있습니다. 예를 들어, 다음은 코드에서 파헤쳐서 테스트하지 않은 것입니다.'j <- match ("housekeeping", Terms (test_dtms), nomatch = 0L); slam :: crossapply_simple_triplet_matrix (test_dtms [, j], test_dtms [, -j], cor)'또는 다른 패키지를 볼 수 있습니다. 'quanteda'는 당신이 체크 아웃 할 수있는'similiarity' 함수를 가지고 있습니다. 그것은 당신이 볼 수있는 유사성과 거리 측정의 좋은 번호를 지원합니다. – Jota

답변

1

양자 패키지를 사용하는 대체 방법은 무엇입니까? 반환 된 상관 관계에 대한 신비 제한을 두지 않으며 다른 많은 옵션이 있습니다 (?similarity 참조).

require(quanteda) 

testDfm <- dfm(unlist(test), verbose = FALSE) 
## Document-feature matrix of: 4 documents, 7 features. 
## 4 x 7 sparse Matrix of class "dfmSparse" 
##  features 
## docs housekeeping bath towel room dirty very super 
## text1   2 1  1 1  0 0  0 
## text2   1 0  0 0  1 0  0 
## text3   1 0  0 0  1 1  0 
## text4   1 0  0 0  1 0  1 

similarity(testDfm, "housekeeping", margin = "features") 
## similarity Matrix: 
## $housekeeping 
## bath towel room very super dirty 
## 1.0000 1.0000 1.0000 -0.3333 -0.3333 -1.0000 
+0

고마워요. Jota가 언급 한 -1의 상관 관계가 훨씬 명확 해 보입니다. 그럼에도 불구하고 비즈니스 사용자에게 -1이라는 나쁜 증거를 보여주지는 않습니까? 코사인 메서드를 사용하여 시도한 및 테스트 예제에서 문제를 해결할 것으로 보인다. 그러나 더 큰 데이터 세트에서 시도해 보았을 때, 특정 문서에서 검색 용어가 더 많이 나타나기 때문에 표시해야하는 단어가 덜 중요해졌습니다. –

+0

그러면 모든 문서가 검색된 용어가 1 개만 있으므로 검색된 용어를 모든 문서에 대해 1로 자르는 것이 가능하면 모든 태그가 태그가 붙어 동등한 기회가 발견됩니다. 그러나 이것이 "데이터 조작"으로 간주됩니까? –