2010-02-08 3 views
3

우선, 내 질문을 읽어 주셔서 감사합니다.java에서 - 유사한 값 그룹화

나는 그 값에 대해 TF/IDF을 사용하여 얼마나 많은 문서가 더 유사한지를보기 위해 코사인 유사성을 계산했습니다. 다음 행렬을 볼 수 있습니다. 열 이름은 doc1, doc2, doc3과 같으며 행 이름은 doc1, doc2, doc3과 같습니다. 다음 행렬 덕택에 doc1과 doc4는 72 %의 유사성 (0.722711142)을가집니다. 두 문서가 비슷하다고해도 올바른 것입니다. 1000 개의 문서가 있고 각 문서의 주파수를 볼 수 있습니다. 얼마나 많은 이들이 유사한 지보기 위해 매트릭스로. 나는 그들을 결합하기 위해 k-means와 agnes (계층 구조)와 같은 다른 클러스터링을 사용했다. 그것은 클러스터를 만들었습니다. 예를 들어, Cluster1에는 (doc4, doc5, doc3) becoz 값이 있습니다 (0.722711142, 0.602301766, 0.69912109). 그러나이 3 가지 문서가 실제로 동일하면 수동으로 볼 때 그렇지 않습니다. :(나는 무엇을하고 있는가 아니면 클러스터링 이외의 다른 것을 사용한다 ??????

1    0.067305859 -0.027552299 0.602301766 0.722711142  
    0.067305859 1    0.048492904 0.029151952 -0.034714695 
    -0.027552299 0.748492904 1    0.610617214 0.010912109  
    0.602301766 0.029151952 -0.061617214 1    0.034410392  
    0.722711142 -0.034714695 0.69912109 0.034410392 1    

PS :. 값은 당신에게 아이디어를주고 을 당신이 어떤이있는 경우 그냥 잘못 될 수 있습니다 . 질문은 내가 TF/IDF에 익숙하지 않다 감사

+0

모든 팁 ?? 어떤 도움 ???????????????????????? – user238384

+0

사소한 질문 : 해당 문제에 대한 기존 해결책을 적용 할 수 없거나 처음부터 왜 개발합니까? 내 감정은 lucene (또는 solr)가 이것을 구현해야한다고 말합니다. – Karussell

+0

글쎄, lucene 또는 solr는 무엇을할까요? 벌써 했어. 이제 CSV 파일을 가지고 있지만 내 질문이 다릅니다. 당신이 당신의 질문을 설명 할 수 있다면. 나는 더 좋은 방법으로 대답 할 수있다. – user238384

답변

1

문의 바랍니다하지만 프로세스는 일반적으로 여러 단계에서 잘못 될 수 :

1

, 당신은 중지 단어를 제거 했

2,나요 형태소 분석을 적용하시오 포터 스 트리머 예를 들면.

3, 문서 길이의 주파수를 표준화 했습니까? (아마도 TFIDF에 대한 해결책이 있습니다. 잘 모르겠습니다)

4, 클러스터링은 발견 방법이지만 성배는 아닙니다. 그룹으로 검색하는 문서는 다소 관련이있을 수 있지만 데이터, 조정, 클러스터링 알고리즘 등에 따라 달라질 수 있습니다.

달성하고자하는 작업은 무엇입니까? 당신의 설정은 무엇입니까? 행운을 빈다!

+0

안녕하세요, 귀하의 회신 해 주셔서 감사합니다. 예, 저는 위에서 언급 한 모든 것을 사용했습니다. 나는 큰 유사성 행렬을 가지고 있으며 지금 모든 유사한 문서들을 그룹화하고자합니다. 예를 들어, 10 개의 문서가 문서 15와 비슷한 경우 11 개의 문서 (1 ~ 10 및 15 doc)를 포함하지만 클러스터링이 거리에서 작동하고 문서를 그룹화하는 하나의 클러스터가 있어야합니다. 어느 주파수가 있습니다. 그 클러스터에있는 모든 문서가 다른 반면 클로저가 더 많으면 70 %라고 말할 수 있습니다. ( 다른 기술이 있습니까? – user238384

+0

올바른 클러스터링 방법은 문서 공간의 분포에 따라 크게 달라집니다. CURE 알고리즘을 사용해보십시오 , DENCLUE 또는 Markov Clustering (http://www.micans.org/mcl/) – ron

1

내 접근 방식은 문서 사이의 유사성이 클러스터링 알고리즘 자체에서 발견되어야하기 때문에 사전 계산 된 유사성 값을 전혀 사용하지 않는 것이 좋습니다. 필자는 코퍼스에서 용어 당 하나의 열이있는 기능 공간을 설정하여 열의 수가 단어의 크기와 같습니다 (원하는 경우 중지 단어 빼기). 각 특성 값에는 해당 문서의 각 용어의 상대 빈도가 포함됩니다. 나는 당신이 tf * idf 값을 사용할 수 있다고 생각합니다. 그러나 너무 많은 도움을 기대하지는 않습니다. 사용하는 클러스터링 알고리즘에 따라 특정 용어의 식별력을 자동으로 찾아야합니다. 즉, 유사한 용어가 유사한 모든 문서에 나타나는 경우 해당 용어는 클래스를 잘 구분하지 않으며 알고리즘은이를 감지해야합니다. .

+0

과 같은 연결 데이터의 그래프 표현에서 작동하는 클러스터링이 있습니다. 미안하지만 이해할 수 없습니다. , LSI와 VSM에 대한 유사성 기준을 계산 중입니다. 클러스터링은 유사성을 도울 수 없습니다. 어떤 점이 무엇인지 설명해주십시오. – user238384

+0

클러스터링에서 문서는 기능 공간의 한 점이고 resp 알고리즘은 데이터 요소를 그룹화합니다 기능이 단어 빈도 인 경우 동일한 단어 (예 : * similar * docs)를 포함하는 문서는 같은 그룹에 속합니다.이 모든 클러스터링은 about : grouping si입니다. milar 데이터 포인트 (여기서는 : 문서). 유사도는 사용 된 기능에 따라 다릅니다. 나는이 책의 16-18 장을 다음과 같이 생각한다 : http://nlp.stanford.edu/IR-book/information-retrieval-book.html은 당신을 잘 안내 할 것이다 (온라인으로 자유롭게 구할 수있다). – ferdystschenko