“сходства”
Posted in: Многофайловые сценарии PHP, By: admin, At: Декабрь 5th, 2007
Довольно трудно научить компьютер понимать” строки так же, как это делает человек. Типичный пример этой проблемы — ошибки правописания, в частности, когда вы имеете дело с именами.
Несмотря на то что не существует решений, которые хотя бы в начальной степени приближались к возможностям человеческого мозга, все же некоторые алгоритмы в течении мнопгх лет были разработаны для определения “сходства” между строками в виде полутонов, вместо “черно-белого” подхода.Одним из примеров этого является алгоритм soundex, изначально разработанный для применения в процессе переписи населения США в конце XIX века. Этот алгоритм работает за счет присвоения значения каждому гласному звуку алфавита и последующего вычисления общего значения слова на основе его начала и составляющих его слогов. Результирующее soundex-зиачение представляется начальной буквой слова и комбинацией значений его слогов.
Этот алгоритм, который был реализован в РНР в функции soundex (), может оказаться чрезвычайно полезным при поиске имен на основе их фонетических представлений. Например, слова “Tabini” и “Tabani” имеют одинаковые soundex-значеиия:
echo soundex (’Tabini’); echo “\n”;
echo soundex (’Tabani’); echo “\n”;
Приведенный выше сценарий вернет следующее:
Т150 Т150
В результате поиск имен становится намного легче, даже если их точное написание неизвестно.
Более совершенный алгоритм для сравнения двух слов базируется на их фонетическом представлении — метафопический (metaphone), который был представлен в 1990 году Лоуренсом Филипсом (Lawrence Philips). Метафонический алгоритм работает методом присвоения фонетического значения комбинациям символов, на базе их типичного применения в английском языке.
В РНР доступна реализация этого алгоритма в виде функции metaphone ():
<7php
echo metaphone (’Tabini’); echo “\n”;
echo metaphone (’Tabani’); echo “\n”;
Этот сценарий вернет метафоническое значение “ТВН” для обеих строк.
Leave a Reply