이 문제가 있습니다. 특정 고유 ID를 키로 사용하고 문자열을 값으로 사용하는 매우 큰 세트 (수백만)의 키 - 값 쌍이 있습니다 (두 개 이상의 키에 대해 문자열이 정확히 같을 수 있음). 그룹 1은 신분증 문자열 쌍 그룹 2 그룹핑 실제로 쌍 값인 문자열 사이의 유사성을 수행해야 다른 쌍 등 포함 포함 함께 같이 I 그룹화 이러한 키 - 값 쌍을 갖는다. 나는 이미이 문자열들 사이에 Levenshtein Distance를 구현하고 임계 거리보다 적은 거리를 가진 쌍을 함께 그룹화했습니다. 그리고 저는 이것을 전통적인 (매우 나쁜) 방식으로 구현했습니다 : 각 문자열을 다른 모든 것과 비교하십시오.키 - 값 쌍의 클러스터링
나는이를 최적화하는 방법에 대한 몇 가지 도움말이 필요합니다. Hadoop의 Map-Reduce를 사용하여 키 - 값 쌍을 실제로 그룹화 할 수 있습니까? map과 reduce 함수에 대한 입력은 개별적이고 독립적이어서 '그룹화'할 수 없다고 생각합니다. 그리고 이것은 k-means 클러스터링 문제입니까? 다른보다 빠르고 효율적인 기술을 제안 할 수 있습니까? 감사합니다. .
감사합니다. 하지만 그런 나무가 필요한가요? 다른 문자열로 데이터를 쿼리하거나 다른 처리를하고 싶지 않습니다. 난 그냥 쌍의 모든 쌍의 문자열 사이의 거리가 어쩌면 50보다 적은 쌍의 그룹 싶어요 (문자열은 1000 개 이상의 chracters 너무). 그런 나무를 만드는 것이 "그룹화"를 더 빠르게 만들까요? – user2365015
그래서 수천 개의 그룹과 수백만 개의 항목이 있다고 가정 해 보겠습니다. 새로운 문자열 각각에 대해 가장 먼저해야 할 일은 기존 그룹에 대해 새 구성원을 테스트하고 "가장 가까운"기존 그룹을 찾아서 적절한 그룹이 존재하는지 테스트하는 것입니다. 선형 적으로 모든 그룹을 테스트 할 수는 있지만 그룹화 할 수없는 단어를 찾을 때마다 트리에 새 멤버를 추가하면 BK 트리를 만드는 것이 더 빠를 것이라고 생각합니다. – Ted
가장 가까운 거리의 기존 그룹을 더 빨리 찾을 수 있습니다. 그러나 그것이 좋지 않을 경우, 예를 들어 끝 부분에 고정 된 수의 최적 그룹을 확보 할 수 있습니다. 고정 된 수의 최적화 된 출력을 위해서는 다른 클러스터링 방식을 사용해야한다고 생각합니다. – Ted