2010-05-13 2 views
5

단일 문서와 많은 수의 문서 (n = = 1 백만) 사이의 문서 유사성을 가능한 한 빨리 결정하려고합니다. 더 구체적으로, 필자가 비교하고있는 문서는 전자 메일입니다. 그룹화되어 (즉, 폴더 또는 태그가 있음) 어떤 그룹이 새로운 이메일에 가장 적합한 지 결정하고 싶습니다. 빠른 성능이 중요합니다.매우 빠른 문서 유사성

내 가정은 용어 벡터 간의 코사인 유사성이이 애플리케이션에 적합하다는 것입니다. 이것이 사용하기 좋은지 아닌지에 대해 의견을주십시오!

이미 다음과 같은 가능성 성능 가속화를 위해 고려했다 :

  1. 모든 용어 벡터

  2. 각 그룹에 대한 용어 벡터를 계산 (N ~ = 10,000) 사전 정상화를 각 이메일보다는 (n ~ = 1,000,000); 이것은 아마도 내 응용 프로그램에 대해 허용 될 수 있지만, 당신이 그것을하지 않는 이유를 생각할 수 있다면, 알려주십시오! 새 전자 메일 전에 이전 이메일의에서 본 적이 새로운 용어가 있으면 그게 내가 재 필요가 의미 하는가,

    1. :

    나는 몇 가지 질문이 모두 내 용어 벡터의을 계산 하시겠습니까? 이것은 비싸 보입니다.

  3. 쿼리 문서와 가까운 벡터 만 고려하는 영리한 방법이 있습니까?

  4. 이 모든 벡터에 대해 사용하는 메모리 양에 대해 좀 더 검소 할 방법이 있습니까?

고마워요!

답변

4

Bayesian filtering을 사용하십시오. 제공된 링크는 스팸 필터링을 의미하지만 알고리즘을 여러 카테고리/태그에 매우 쉽게 적용 할 수 있습니다.

SO question about Bayesian filtering도 많이 있습니다.

+0

주셔서 감사합니다. 베이지안 필터링은 흥미로운 아이디어입니다. 몇 가지 질문이 있습니다. 1. 왜 BF가이 인스턴스의 코사인 유사성보다 우수하다고 생각하십니까? 2. 뭔가 빠졌지 만, 코사인 유사도와 마찬가지로 카테고리 수를 n = 카테고리 수만큼 O (n)로 유지하지 않겠습니까? 나는 O (log n) 또는 O (1) 룩업 테이블을 사용하여 가능한 범주화 후보를 순위 매김해야한다고 생각합니다. – Peyton

+0

이 문제를 해결하기 위해 - 이제 베이지안 필터링 문제를 해결하려고합니다. 좋은 생각 인 것 같습니다. 따라서이 대답을 수락하십시오. – Peyton

관련 문제