2009-09-21 5 views
0

두 문자열을 사용하여 두 텍스트 간의 관계를 보여주는 코사인 유사성 값을 제공하는 함수가 있습니다.텍스트 비교 속도 향상 (희소 행렬 사용)

75 개의 텍스트를 서로 비교하려면 모든 텍스트가 서로 비교되도록 5,625 개의 단일 비교를 수행해야합니다.

이 비교 수를 줄일 수있는 방법이 있습니까? 예를 들어 스파 스 행렬 또는 k-means?

나는 내 기능이나 텍스트를 비교하는 방법에 대해 이야기하고 싶지 않습니다. 단지 비교 횟수를 줄이는 것입니다.

답변

1

Ben이 말한 바에 따르면 더 나은 목표를 알려주는 데 도움이되는 것은 사실입니다.

예를 들어 비슷한 문자열을 찾고자한다면 하나의 가능한 최적화 은 쿼드 트리와 같은 공간 데이터 구조에 문자열 벡터를 저장하여 너무 멀리 떨어져있는 벡터를 완전히 삭제할 수 있습니다. 많은 비교를 피한다.

+0

예, 비슷한 문자열을 찾고 싶습니다. Ben의 대답에 대한 자세한 내용은 내 의견에 나와 있습니다. 내 데이터베이스 (MySQL의) 이러한 공간 유형을 가지고있는 것 : http://dev.mysql.com/doc/refman/5.0/en/mysql-spatial-datatypes.html Theres는 quadtree에 대해 아무것도!? – caw

+0

많은 종류의 공간 인덱스가 사용자에게 도움이 될 수 있습니다. MySQL에서 사용 가능한 형식에 대해 읽어보십시오. –

+0

나는이 공간적 특징에 대해 많이 읽었습니다. 내 질문에 단락을 추가했습니다. 좀 더 도와 줄 수 있어요? – caw

1

알고리즘이 쌍으로있는 경우 정의에 따라 비교 횟수를 줄일 수 없습니다.

비교 횟수를 줄이려면 다른 알고리즘을 사용하거나 최소한 입력을 사전 처리해야합니다.

기능에 대한 세부 정보가 없으면 구체적인 도움을주기가 어렵습니다.

+0

내 함수는 코사인 유사성을 계산합니다. 텍스트의 토큰/단어를 포함하는 두 개의 배열을 필요로합니다. 코사인 유사성을 쌍으로 계산할 수 있다고 생각합니다. 그래서 코사인 유사성에 대한 비교 횟수를 줄일 수는 없겠지요. 맞습니까? – caw

+0

네,하지만 특정 데이터에만 관심이 있다면 유사한 문자열에 대해 언급 한 Vinko와 같은 비교를 피할 수도 있습니다. –