꽤 큰 사전에서 작동하는 맞춤법 검사기를 작성하려고합니다. 철자가 틀린 단어에 가장 가까운 단어를 결정하기 위해 Damerau-Levenshtein 거리를 사용하여 사전 데이터를 효율적으로 색인화하는 효율적인 방법을 원합니다 .
공간 복잡성과 런타임 복잡성 사이에서 최상의 절충안을 제공하는 데이터 구조를 찾고 있습니다.
인터넷에서 찾은 내용에 따라 사용할 데이터 구조 유형에 대한 몇 가지 리드가 있습니다.
시도
이것은 내 첫 번째 생각이며 구현하기가 매우 쉽고 빠른 조회 / 삽입을 제공해야합니다. Damerau-Levenshtein을 사용한 대략적인 검색도 여기에서 구현하기 간단해야합니다. 그러나 포인터 저장소에 많은 오버 헤드가 있기 때문에 공간 복잡성 측면에서 매우 효율적으로 보이지 않습니다.
패트리샤 트리
이것은 기본적으로 포인터 저장 비용을 피하기 때문에 일반 Trie보다 적은 공간을 소비하는 것으로 보이지만, 내가 가지고있는 것과 같은 매우 큰 사전의 경우 데이터 조각화가 약간 걱정됩니다.
접미사 트리
나는 이것에 대해 잘 모르겠습니다. 일부 사람들이 텍스트 마이닝에 유용하다고 생각하지만 철자 검사기의 성능면에서 무엇을 줄지 확실하지 않습니다.
3 차 검색 트리
이것들은 꽤 멋져 보이며 복잡성 측면에서 Patricia Tries와 더 가까워 야하지만 (Patricia Tries)보다 조각화가 더 나을 것인지는 확실하지 않습니다.
버스트 트리
이것은 일종의 하이브리드처럼 보이며 Tries 등의 이점이 무엇인지 확실하지 않지만 텍스트 마이닝에 매우 효율적이라는 것을 여러 번 읽었습니다.
이 맥락에서 어떤 데이터 구조를 사용하는 것이 가장 좋으며 다른 구조보다 더 나은 점에 대한 피드백을 얻고 싶습니다. 맞춤법 검사기에 더 적합한 데이터 구조가 누락 된 경우에도 매우 관심이 있습니다.