У меня нет идей о том, как выполнить эту задачу. Я подсчитываю частоту слова, на самом деле базовую форму слова (например, бег будет считаться бегом). Я просмотрел некоторые реализации расстояния Левенштейна (одна из реализаций, с которой я столкнулся, — это от dotnerperls).
Я также попробовал двойной Метафон, но это не то, что мне нужно.
Итак, пожалуйста, дайте мне несколько идей о том, как настроить алгоритм расстояния Левенштейна для классификации лингвистически похожих слов, поскольку алгоритм предназначен только для определения количества необходимых правок, не учитывая, являются ли они лингвистически похожими или нет.
Пример: 1. "бег" будет считаться одним вхождением слова "бег" 2. "слово" также будет вхождением слова "слово" 3. "страх" НЕ будет считаться вхождением слова "шестерня"
Кроме того, я реализую его на С#.
Заранее спасибо.
Изменить: я отредактировал его, как предложил Рене. Еще одно примечание: я пытаюсь рассмотреть вопрос о том, является ли слово подстрокой другого слова, но эта реализация не будет такой динамичной. Другая идея, которую я думаю, такова: «если добавить -s или -ing к строке1, строка1 == строка2, то строка2 будет вхождением строки1». Однако это не так, поскольку некоторые слова имеют неправильное множественное число.