Как я могу настроить расстояние Левенштейна в классификации лингвистически похожих слов (например, глагольных времен, прилагательных сравнений, единственного и множественного числа) - PullRequest
4 голосов
/ 07 января 2012

У меня нет идей о том, как выполнить эту задачу. Я считаю частоту слова, фактически базовая форма слова (например, бег будет считаться бегом). Я посмотрел на некоторые реализации расстояния Левенштейна (одна реализация, с которой я сталкиваюсь - от dotnerperls ).

Я также попробовал двойной Метафон, но это не то, что я ищу.

Итак, пожалуйста, дайте мне несколько идей о том, как настроить алгоритм расстояния Левенштейна при классификации лингвистически похожих слов, поскольку алгоритм предназначен только для определения необходимого количества правок, не принимая во внимание, сходны ли они лингвистически или нет

Пример: 1. «Бег» будет учитываться как одно вхождение слова «бег» 2. «слово» также будет встречаться с «словом» 3. «страх» НЕ будет считаться возникновением «снаряжения»

Кроме того, я реализую это в C #.

Заранее спасибо.

Редактировать: я отредактировал его, как предложил Рене. Еще одна заметка: Я пытаюсь рассмотреть вопрос о том, является ли слово подстрокой другого слова, но эта реализация не будет такой динамичной. Другая идея, которую я думаю: «если добавить -s или -ing к string1, string1 == string2, то string2 является вхождением string1». Однако это не так, поскольку некоторые слова имеют неправильное множественное число.

1 Ответ

5 голосов
/ 07 января 2012

Задача, которую вы пытаетесь решить, называется Стемминг или Лемматизация .

Как вы уже поняли, Левенштейн-Дистанция не подходит,Распространенные алгоритмы стемминга для английского языка включают Porter- и Snowball-Stemmer.Если вы за это погуглите, я уверен, что вы найдете реализацию C # одного из них.

...