위키 대타 (Wikidata)의 수백만 명으로 구성된 유명한 사람들의 목록을 가지고 있으며, 나는 모든 사람들을 매우 짧은 텍스트로 효율적으로 찾아내는 시스템을 만들어야합니다. 이것은 단지 한 단어 일 수 있습니다 (예 : "Einstein"). 몇 페이지의 텍스트 (예 : Wikipedia 페이지).맞춤법 오류를 허용하면서 일부 텍스트에 언급 된 모든 사람들을 효율적으로 찾을 수 있습니까?
맞춤법 오류 (예 : 마이클 잭슨 대신 미카엘 잭슨) 및 짧은 형식 (예 : M. 잭슨)에 대해 시스템이 상당히 견딜 수 있어야합니다. 모호함이있는 경우 모든 가능한 사람들을 돌려 주어야합니다 (예 : "조지 부시"는 부계와 아들 모두를 반환해야하며 다른 동음 이의어도 가능).
이 related question에는 Aho-Corasick algorithm 사용을 포함하여 흥미로운 답변이 몇 가지 있습니다. in Python을 비롯한 여러 언어로 된 도서관이 있습니다. 그러나 퍼지 검색 (예 : 허용 오차 맞춤법)을 지원하지 않는 것 같습니다.
나는 어휘를 확장하여 각 이름의 가능한 철자를 모두 포함 할 수 있다고 생각하지만 어휘가 너무 큽니다. 가능한 경우 가능하면 피하는 편이 낫습니다. (또한이 솔루션을 더 확장하고 싶을 수도 있습니다. 한 지점의 사람들보다).
나는 Lucene/ElasticSearch를 잠깐 살펴 봤지만, 놓친 경우를 제외하고는이 유스 케이스를 지원하지 않는 것 같습니다.
아이디어가 있으십니까?