Это называется лемматизацией, а то, что вы называете «основанием слова», называется леммой.morpha
и его повторная реализация в Stanford POS tagger делают это.Однако и то, и другое требует ввода тегов POS для разрешения присущей неоднозначности на естественном языке.
(тег POS означает определение категорий слов, например, существительное, глагол. Я предполагаю, что вам нужен инструмент, который обрабатывает английский язык.)
Редактировать : так как вы собираетесь использовать это для поиска, вот несколько советов:
- Простой родословный для английского языка имеет смешанную репутацию вМир поисковых систем.Иногда это работает, часто - нет.
- Автоматическая коррекция орфографии может работать лучше.Это то, что Google делает.Однако, если вы хотите сделать это правильно, это дорого с точки зрения вычислений.
- Лемматизация может дать преимущества, но, вероятно, только если вы индексируете и ищете и слова и леммы,(Тот же совет касается и стемминга.)
- Вот плагин для Lucene , который выполняет лемматизацию.
(Предыдущие замечания основаны на моем собственном исследовании; я написалМоя магистерская работа о лемматизации в поисковых системах для очень шумных данных.)