2011-02-24 2 views
4

Google은 문자열 입력을 받아 Google API를 사용하여 순위가 매겨진 책 목록을 반환하는 Android 앱을 제작하고 있습니다.Android & 퍼지 매칭, n-gram 및 Levenshtein 거리

사용자가 입력 한 개방형 문자열을 비교하는 방법을 찾고 있습니다. 목록에있는 첫 번째 항목은 입력 한 내용이 하나의 책일 가능성이 있는지를 보여줍니다. 나는 책, 제목, 저자, 설명 등에 관한 많은 정보를 가지고 있으므로 어느 부분에서나 검색 할 수 있습니다.

예는 다음과 같습니다

 
'eyre affair fforde', 'fforde eyre affair', 'the eyre affair' 
----> 
'Likely' to be 'The Eyre Affair by Jasper Fforde' 

은 무엇 이것에 대해 이동하는 가장 좋은 방법이 있을까요? 나는 levenshtein distance를 살펴 보았지만 open-ended 입력, n-grams가 좋은 방법 인 것처럼 보이거나 어렴풋이 일치하는 것으로는 작동하지 않을 것이라고 생각합니다.

다른 아이디어?

답변

7

나는 이들 중 하나와 함께 갈 것입니다 :

SimMetrics (SimMetrics는 유사성이나 거리 메트릭, 예를 들어 Levenshtein 거리, L2 거리, 코사인 유사성, 인 Jaccard 유사성 등 등의 오픈 소스 확장 라이브러리)

커먼즈 랭 LevenshteinDistance

또는 청각 또는 맞춤법 실수를 없애 : soundex 또는 metaphone.

+0

훌륭하게, 정말 고마워요. –

+0

@ puppetmaster04 : 환영받는 것 이상으로 도울 수있어서 기쁩니다. 귀하의 질문을 읽고 귀하의 앱이 어떻게 진화하는지 궁금합니다. – Chris

+0

불행히도 SimMetrics를 제외한 모든 링크는 죽었습니다. – MrMaffen