Pull to refresh

Comments 19

UFO just landed and posted this here
Спасибо за наводку. Про soundex прочел, а бывает ли он для не-английских языков?
UFO just landed and posted this here
Огромное спасибо. Я ж видел эту статью, но почему-то решил, что это немного не то, что надо. Сейчас внимательно перечитал, и понял, что это очень и очень то.

Осталось решить проблему адаптации для сортировки в условиях ограниченных ресурсов (телефоны). Сразу приходит в голову несколько вариантов:

1. Генерить полные фонетические коды для всех контактов и записывать в кастом поле в адресной книге. В принципе, при наличии кучи API для популярных адресных книг, это можно реализовать как отдельный сервис, если их генерация на телефоне будет заметно отнимать ресурсы. Или просто в виде скрипта

2. Расширить адресную книгу, чтобы генерировать только те части фонетических кодов, которые нижны для сортировки. Например, для списка в статье достаточно первых пары букв, а для «Иванченко» и «Иванченков» — генерить полностью, и эта генерация будет работать при добавлении новых контактов, что происходит не так часто. В-общем, из расплывчато-теоретической задача _внезапно_ превратилась в «да возьми и сделай».

Еще раз спасибо.
UFO just landed and posted this here
Хорошая идея. Если всё-таки реализую стартап, позаимствую её. Можно?)
Естественно, а если соответствующая библиотека будет выложена в open-source, то вообще замечательно будет!

Хмм… а если б я сказал «нет»? ;-)
Чуть выше в комментариях упоминали разные вариации на темк soundex. Их реализации есть в открытом коде на самых разных языках.

Если бы сказали «нет», всё равно постарался бы договориться. Ибо, если бы идею очень хотели скрыть, не стали бы публиковать на центральном профильном ресурсе.)
Тут же главный интерес в том, чтобы такое появилось вообще, поэтому и написал в блог «Интерфейсы»
Отреплейсить буквы фонетически в дополнительном поле (нужно учесть сочетания). Дальше обычная сортировка по тому полю и вывод данных по этому. Но есть сильный нюанс. Тот же William скорее читается как Уильям, но бывает что читают и как Вильям.
А я мечтаю о телефоне, в котором помимо всего прочего будет возможность создавать папки для контактов.
Нет, не эти конченные группы, которые спрятаны за 5 меню по опциям, а прямо в списке чтоб можно было как дерево проводника раскрывать и закрывать. Задолбало в названии контакта метку писать.
Зато вон презентуют новые ОС для телефонов, кучу всякой херни, а папки уже второй десяток лет сделать никто не может.
Дерево — это скучно, и не очень хорошо отражает реальные связи между объектами (в данном случае — людьми). Вот тут (http://blog.cornelius-schumacher.de/2011/03/its-not-address-book.html) один КДЕ-шник предложил другой способ группировки контактов, мне кажется, интересно. Я себе поставил, поигрался. Пока программа сырая, но имеет потенциал.

Дело в том, что буквы в принципе почти никогда не отражают произношение. Следовательно, возможны варианты, когда одно и то же произношение можно передать различными буквами. Но вот алфавит, как упорядоченная последовательность, существует только для букв, но не для звуков (у IPA, насколько я знаю, нет стандартного порядка возрастания/убывания). Поэтому идея, при всей своей простоте, кажется несколько странной. Почему, например, William оказался рядом с «В», а Яков — с «Y»? Ведь можно и William — «У», Яков — «I»? Тем более что существует для некоторых имён ещё традиция (Хаксли—Гексли, например). При переходе от одного языка к другому меняется произношение одного и того же имени (вот у Вас John идёт на «Д», хотя у англофона он никаким образом с «D» не ассоциируется, потому что там другой звук, не связанный с буквой «D» никак).

На мой взгляд, принципиальная неразрешимость этой задачи, связанная с тем, что очень мало в мире языков, записываемых с точным соответствием букв и фонем, сводит на нет всю потенциальную пользу.
>вот у Вас John идёт на «Д», хотя у англофона он никаким образом с «D» не ассоциируется, потому что там другой звук, не связанный с буквой «D» никак

Вы упустили один момент — John у меня на букву «Д», когда включена _русская_ локаль.

В английской локали он будет на букву «J», как и положено.

С Яковом — да, действительно неоднозначно, так же как и с Вильямом/Уильямом.

А насчет Хаксли/Гексли — мне не кажется, что это имеет отношение к данной задаче. Так же как и то, что возможны варианты, когда одно и то же произношение можно передать разными буквами — в первом приближении мне было бы достаточно, чтобы во всех случаях выбирался один и тот же вариант. Я не собираюсь переводит имена и фамилии на другой язык. (оффтоп) я обалдел, когда узнал, что по правилам польского (блин, или чешского?!) языка Маргарет Тэтчер пишется как Малгожата Тэтчерова. И во всех газетах так и писалась.(/оффтоп)
Попробую немного переформулировать: Вы пытаетесь свести два списка-алфавита в один, используя «общий знаменатель» — произношение. Но так как связь между написанием и произношением неоднозначная, однозначного сопоставления у Вас, к сожалению, не получится. В лучшем случае Вы сможете использовать сопоставление, к которому привыкли лично Вы и которое не вызывает у Вас отторжения.

Особенность алгоритмов soundex и им подобных в том, что они не используются для сортировки при выводе списка, а только для поиска. В соответствии с soundex многие сходно произносимые, но совершенно разно пишущиеся слова окажутся на одной позиции, что несколько противоречит идее упорядочивания по алфавиту.
Ага, это я уже понял, поразбиравшись с soundex и русским Metaphone. Поэтому сейчас начал думать в сторону транслитерации в нужный алфавит. Точнее, транслитерации преферансом и поэтессами. Ни один из фонтетических алгоритмов, на которые я смотрел, не дает мне то, что мне нужно, и именно по указанной вами причине.
А по поводу того, что в лучшем случае это будет сопоставление, к которому привык лично я — меня это не пугает, потому что а) я не один, всегда найдется куча людей со схожими привычками, а кому не нравится, то б) он может модифицировать мое решение под себя, ну или в) расхождений не должно быть очень уж много, эта часть может быть настраиваемой
Sign up to leave a comment.

Articles