Я пытаюсь написать проверку орфографии, которая должна работать с довольно большим словарем. Я действительно хочу, чтобы эффективный способ индексирования данных моего словаря использовался с использованием расстояния Дамерау-Левенштейна, чтобы определить, какие слова наиболее близки к слову с ошибкой.
Я ищу структуру данных, которая дала бы мне лучший компромисс между сложностью пространства и сложностью во время выполнения.
Основываясь на том, что я нашел в Интернете, у меня есть несколько рекомендаций относительно того, какой тип структуры данных использовать:
Trie
Это моя первая мысль, и она выглядит довольно простой в реализации и должна обеспечивать быстрый поиск / вставку. Приблизительный поиск с использованием Дамерау-Левенштейна также должен быть прост в реализации. Но это не выглядит очень эффективным с точки зрения сложности пространства, так как у вас, скорее всего, много накладных расходов при хранении указателей.
Патриция Три
Кажется, это занимает меньше места, чем обычный Trie, поскольку вы в основном избегаете затрат на хранение указателей, но меня немного беспокоит фрагментация данных в случае очень больших словарей, таких как у меня.
Суффикс Дерево
Я не уверен в этом, кажется, что некоторые люди находят его полезным для анализа текста, но я не совсем уверен, что он даст с точки зрения производительности для проверки орфографии.
Троичное дерево поиска
Они выглядят довольно красиво и по сложности должны быть близки (лучше?) К Патрисии Трис, но я не уверен насчет фрагментации, если это будет лучше, чем Патрисия Трис.
Взрыв дерево
Это кажется своего рода гибридом, и я не уверен, какое преимущество оно даст по сравнению с Tries и тому подобным, но я несколько раз читал, что это очень эффективно для интеллектуального анализа текста.
Я хотел бы получить некоторую обратную связь относительно того, какую структуру данных лучше всего использовать в этом контексте и что делает ее лучше, чем другие. Если мне не хватает некоторых структур данных, которые были бы еще более подходящими для проверки орфографии, я тоже очень заинтересовался бы.