Как определить, какая строка в массиве наиболее похожа на данную строку? - PullRequest
3 голосов
/ 26 января 2011

Учитывая строку,

string name = "Michael";

Я хочу иметь возможность оценить, какая строка в массиве наиболее похожа:

string[] names = new[] { "John", "Adam", "Paul", "Mike", "John-Michael" };

Я хочу создать сообщение для пользователя:«Мы не смогли найти« Майкла », но« Джон-Майкл »близок. Ты это имел в виду?»Как бы я сделал это определение?

Ответы [ 2 ]

5 голосов
/ 26 января 2011

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

Здесь есть статья, предоставляющая вам общую реализацию для C # здесь .

3 голосов
/ 26 января 2011

Здесь у вас есть результаты для вашего примера с использованием расстояния Левенштейна:

EditDistance["Michael",#]&/@{"John","Adam","Paul","Mike","John-Michael"}
{6,6,5,4,5}  

Здесь у вас есть результаты с помощью теста подобия Смита-Уотермана

SmithWatermanSimilarity["Michael",#]&/@{"John","Adam","Paul","Mike","John-Michael"}
{0.,0.,0.,2.,7.} 

HTH!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...