Отправляет email-рассылки с помощью сервиса Sendsay

Delphi для профессионалов

  Все выпуски  

Delphi для профессионалов - Определение схожести произношения двух слов


Информационный Канал Subscribe.Ru


eServer.ru :: Хостинг без ограничений!

Рассылка: Delphi для профессионалов

Количество подписчиков: 3113
Рассылка 'Delphi для профессионалов'

Выберите действие:
Заглавие (одной строкой) :
Содержание :

От кого :
Не показывать мой e-mail другим пользователям


Определение схожести произношения двух слов

{ Данный совет взят из файлов помощи Ллойда (Lloyd) }

Функция Soundex определяет схожесть звучания двух слов. Алгоритм Soundex опубликован в одной из статей журнала PC Magazine и предназначен для работы с английским языком (может кто-нибудь портирует для работы с нашим могучим? Пишите). Функции передается строка. Возвращаемое Soundex значение также имеет тип строки. Эта величина может сохраняться в базе данных или сравниваться с другим значением Soundex. Если два слова имеют одинаковое значение Soundex, можно предположить, что звучат они одинаково (более или менее).

Вы должны иметь в виду, что алгоритм Soundex игнорирует первую букву слова. Таким образом, "won" и "one" будут иметь различное значение Soundex, а "Won" и "Wunn" - одинаковое.

Soundex будет особенно полезен в базах данных, когда пользователь затрудняется с правописанием имен и фамилий.

Function Soundex(OriginalWord: string): string;
var
  Tempstring1, Tempstring2: string;
  Count: integer;
begin
  Tempstring1 := '';
  Tempstring2 := '';
  OriginalWord := Uppercase(OriginalWord); //Переводим исходное слово в верхний регистр
  Appendstr(Tempstring1, OriginalWord[1]); //Используем первую букву слова
  for Count:=2 to length(OriginalWord) do
  //Назначаем числовое значение каждой букве, за исключением первой
    case OriginalWord[Count] of
      'B','F','P','V'                 : Appendstr(Tempstring1,'1');
      'C','G','J','K','Q','S','X','Z' : Appendstr(Tempstring1,'2');
      'D','T'                         : Appendstr(Tempstring1,'3');
      'L'                             : Appendstr(Tempstring1,'4');
      'M','N'                         : Appendstr(Tempstring1,'5');
      'R'                             : Appendstr(Tempstring1,'6');
    //Все другие буквы, цифры и знаки пунктуации игнорируются
    end;
  Appendstr(Tempstring2, OriginalWord[1]);
  //Удаляем из результата все последовательно повторяющиеся цифры.
  for Count:=2 to Length(Tempstring1) do
    if Tempstring1[Count-1]<>Tempstring1[Count] then
      Appendstr(Tempstring2,Tempstring1[Count]);
  Soundex:=Tempstring2; //Это - значение soundex
end;  

SoundAlike - функция, проверяющая схожесть звучания двух слов. При схожести звучания она возвратит значение True и значение False в противном случае. Она демонстрирует пример использования функции Soundex.

function SoundAlike(Word1, Word2:string): boolean;
begin
  if (Word1 = '') and (Word2 = '') then result:=True
  else
    if (Word1 = '') or (Word2 = '') then result:=False
    else
      if (Soundex(Word1)=Soundex(Word2)) then result:=True
      else result:=False;
end;  

Все вопросы присылайте по адресу: delphi-ask@igp.org.ua
Все ответы присылайте по адресу: delphi-reply@igp.org.ua
Все подсказки присылайте по адресу: delphi-hint@igp.org.ua

Со всем списком советов можно познакомиться по адресу: http://igp.org.ua/delphine/.
Наш проект Delphine можно найти по следующей ссылке: http://igp.org.ua/products/delphine/.

Заходите в наш форум: Форум Delphi-профессионалов. Адрес: http://igp.org.ua/cgi-bin/yabb/yabb.pl.
Здесь Вы найдете ответы на все Ваши вопросы!

Выберите действие:
Заглавие (одной строкой) :
Содержание :

От кого :
Не показывать мой e-mail другим пользователям



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное