[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Транслит



Alexey Pechnikov wrote:
> On Thursday 05 November 2009 12:04:36 Serhiy Storchaka wrote:
>> Вы неправильно понимаете принцип работы soundex. Если по-разному звучащие
>> слова получат одинаковый код — не беда, они отсеются на втором этапе.
>> Главное — чтобы слова, звучащие похоже, получили одинаковый код. И лучше
>> захватить немного лишнего, чем пропустить возможные варианты. Потому-то
>> soundex игнорирует гласные и h (которая иногда не произносится, а иногда
>> является модификатором s, c или t), не различает c, k и s (потому лишь,
>> что английская c иногда произносится как k, а иногда s). Кроме первой
>> буквы, конечно (но из-за особенностей русского произношения и первые
>> буквы можно иногда объединять). Если хотите большую избирательность —
>> используйте другие алгоритмы, более сложные.
> 
> В москве "о" зачастую звучит как "а". В Нижнем Новгороде - как "оо".
> Потому мне предложенный вами вариант замен представляется неприемлемым.

Да хоть три "о". На soundex это не влияет. И не должно влиять на вменяемый
аналог, потому, что код не должен зависеть от особенностей диалектного
произношения. Вы неправильно понимаете принцип работы soundex.

> Это не привязываясь к реализации самого хэша soundex.

А если не привязываться, то зачем вам транслит нужен, в эпоху уникода? Если
нужно ужать в 7 бит, используйте хоть UUENCODE.

> Насчет более сложных 
> алгоритмов - вы можете назвать такие, которые дают лучший результат? Сама
> по себе сложность отнюдь не является достоинством. Было бы интересно
> сравнить.

Это вам нужно, не мне. Беглый поиск указывает на Double Metaphone и другие
системы. Есть и попытки адаптации принципов soundex к русскому языку. Цель
улучшений — уменьшение коллизий, меньше непохожих слов должны давать один и
тот же код. Но ни в коем случае корректный алгоритм не должен для похожих
слов давать разные коды (как это может быть при использовании soundex с
обычным транслитом). Это первичный критерий.



Reply to: