Алгоритм сравнения имен - PullRequest
       1

Алгоритм сравнения имен

5 голосов
/ 24 октября 2010

Чтобы проверить, есть ли имя в антитеррористическом списке.

В дополнение к данному имени, также найдите похожие имена (возможные псевдонимы).

Пример:
имя => Бен Ладен предупреждение!
имя => Бен Ларден Ммм ... подозрительное имя, соответствует xx% с Бен Ладеном

Как я могу это сделать?

  • с использованием PHP
  • имена правильные на 100%, так как они из официальных источников
  • Я итальянец, но я думаю, что это не будет проблемойТак как имена являются международными
  • имена могут состоять из нескольких слов: Najmiddin Kamolitdinovich JALOLOV
  • ищет компании и людей

Я смотрел на разные алгоритмы: выдумаете, что Левенштейн может сделать эту работу?
спасибо заранее!

ps У меня возникли некоторые проблемы при форматировании этого текста, извините: -)

Ответы [ 2 ]

7 голосов
/ 24 октября 2010

Я бы сказал, что лучшим вариантом для работы с нативными функциями PHP являются

  • soundex() - Рассчитать ключ soundex строки
  • levenshtein() - Рассчитать расстояние Левенштейна между двумя строками
  • metaphone() - вычислить метафоновую строку
  • similar_text() - Рассчитать сходство между двумя строками

Поскольку вы, вероятно, сопоставляете имена с базой данных (?), Вы также можете проверить, предоставляет ли ваша база данных какие-либо функции сопоставления имен.

Google также предоставил PDF-файл с хорошим обзором алгоритмов сопоставления имен:

2 голосов
/ 24 октября 2010

Функция Левенштейна (http://php.net/manual/en/function.levenshtein.php) может сделать это:

$string1 = 'Bin Laden';
$string2 = 'Ben Larden';
levenshtein($string1, $string2); // result: 2

Установите порог для этого результата и определите, выглядит ли имя одинаково.

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