Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 09:27
Оценка:
Какой смысл имеет независимая от регистра сортировка в лексикографическом порядке определенного языка? Если в русском языке принято, что строчные буквы предшествуют прописным, зачем менять этот порядок? Я еще понимаю причины появления скажем функции _stricmp в C, которая в случае английского языка является неким подобием функции strcoll, но зачем кому-то понадобилась _stricoll?
Re: Смысл of case insensitive collation
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.11.08 10:07
Оценка: +3
Здравствуйте, igna, Вы писали:

I>Какой смысл имеет независимая от регистра сортировка в лексикографическом порядке определенного языка? Если в русском языке принято, что строчные буквы предшествуют прописным, зачем менять этот порядок?

Совершенно непонятно, что где принято, и почему это должно влиять на библиотечные функции. Помимо case sensitivity есть еще и accent sensitivity. Вопросы применения зависят исключительно от приложения.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 10:34
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Совершенно непонятно, что где принято, и почему это должно влиять на библиотечные функции. Помимо case sensitivity есть еще и accent sensitivity. Вопросы применения зависят исключительно от приложения.


Принято это например в словарях. Для некоторых языков существуют несколько способов сортировки, так соотвественно и locale существует для каждого из способов сортировки свой. Про accent sensitivity говорят обычно имея ввиду, что в одном языке она есть, в другом нет. Если вдруг обнаружится язык, где приняты два способа сортировки, accent sensitive и accent insensitive, значит нужны соответственно два locales, что тут непонятного?
Re[3]: Смысл of case insensitive collation
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.11.08 12:10
Оценка: +2
Здравствуйте, igna, Вы писали:
I>Принято это например в словарях.
Что именно "это"?
I>Для некоторых языков существуют несколько способов сортировки, так соотвественно и locale существует для каждого из способов сортировки свой.
Только не locale, а collation.
I>Про accent sensitivity говорят обычно имея ввиду, что в одном языке она есть, в другом нет.
Про нее обычно говорят, что в одном приложении она есть, а в другом — нет.
I>Если вдруг обнаружится язык, где приняты два способа сортировки, accent sensitive и accent insensitive, значит нужны соответственно два locales, что тут непонятного?
Два collation. Locale ничего не говорит про сравнение строк.
В большинстве языков нет четких правил сравнения строк. Считать ли "ёлка" и "Елка" равными — личное дело проектировщика приложения.

Я вообще твою претензию не понимаю. Я бы понял, если бы чего-то не было, что тебе нужно. А зачем требовать, чтобы что-то убрали ?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 13:49
Оценка: -2
Здравствуйте, Sinclair, Вы писали:

S>Что именно "это"?

Что строчные буквы предшествуют прописным, тут всего-то три сосны.
S>В большинстве языков нет четких правил сравнения строк. Считать ли "ёлка" и "Елка" равными — личное дело проектировщика приложения.
Не передергивай, речь не о сравнении на равенство, а о сортировке. И если в приложении "Елка" в отсортированном списке идет после "ёлка", то это не по-человечески.
Re[5]: Смысл of case insensitive collation
От: Aikin Беларусь kavaleu.ru
Дата: 07.11.08 14:02
Оценка: -1
Здравствуйте, igna, Вы писали:

S>>В большинстве языков нет четких правил сравнения строк. Считать ли "ёлка" и "Елка" равными — личное дело проектировщика приложения.

I>Не передергивай, речь не о сравнении на равенство, а о сортировке. И если в приложении "Елка" в отсортированном списке идет после "ёлка", то это не по-человечески.
Берем "елка, ёлка,епископ", сортируем:
Стандартное сравнение: "елка, епископ, ёлка"
е и ё -- одна буква: "елка, ёлка, епископ" или "ёлка, елка, епископ" // не важно какой вариант, так как е и ё совпадают

Какой вариант "правильный"?

Правильные варианты ответа:
1) первый
2) второй
3) ни один из них //например для компарера определяющего близость слова к данному (он используется при проверке орфографии для предсказания замены неправильно написанного слова)
4) оба // не уверен, что есть такие задачи, но компарер придумать можно

Так что все зависит от задачи

СУВ, Aikin
Re[6]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 14:22
Оценка:
Здравствуйте, Aikin, Вы писали:

A>Какой вариант "правильный"?


Первый: "елка, епископ, ёлка".

В каком-таком случае этот вариант кого-то может не устроить, а вариант "елка, ёлка, епископ" устроить?
Re[5]: Смысл of case insensitive collation
От: Юрий Жмеренецкий ICQ 380412032
Дата: 07.11.08 14:24
Оценка: 2 (1)
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Sinclair, Вы писали:


S>>Что именно "это"?

I>Что строчные буквы предшествуют прописным, тут всего-то три сосны.
S>>В большинстве языков нет четких правил сравнения строк. Считать ли "ёлка" и "Елка" равными — личное дело проектировщика приложения.
I>Не передергивай, речь не о сравнении на равенство, а о сортировке.

Сравнение на равенство — это намного проще чем сортировка. Читать здесь(желательно все) — Unicode Collation Algorithm.
Re[7]: Смысл of case insensitive collation
От: Aikin Беларусь kavaleu.ru
Дата: 07.11.08 14:28
Оценка: 1 (1)
Здравствуйте, igna, Вы писали:

I>Первый.

С чего ты взял?

I>Собственно мой изначальный вопрос был о том, в каком-таком случае кого-то этот вариант может не устроить.

Вернемся к тому же самому примеру про "компарера определяющего близость слова к данному (он используется при проверке орфографии для предсказания замены неправильно написанного слова".

Ты написал "елкр", программа проверки орфографии подсветила слово, нажимаешь правой кнопкой и видишь...
Что ты видишь? Ты видишь десяток слов которые возможно ты имел ввиду.
Как составить этот десяток? Почему именно эти слова попали в этот десяток а не другие? Этот десяток чем-то лучше чем остальные 10 тыс слов в словаре. Значит нужно отсортировать словарь используя критерий "лучшести" для данного конкретного случая.
Если формализовать этот критерий, каков он будет? Слово будет "лучше" если количество изменений которые преобразуют это слово в "елкр" будет "меньше".
Как это влияет на нашу ситуацию? "елка" имеет "вес" 1, "ёлка" -- 2, "епископ" -- 6.
Отсортировать по возрастания 1, 2 и 6 не составляет труда.


P.S. Я отвечал на старое сообщение, на него и отвечу.
Re: Смысл of case insensitive collation
От: Aikin Беларусь kavaleu.ru
Дата: 07.11.08 14:40
Оценка:
Здравствуйте, igna, Вы писали:

I>Какой смысл имеет независимая от регистра сортировка в лексикографическом порядке определенного языка?

Задача:
Есть список пользователей. Ники они себе заводили "как попало": Aikin, aIkIn, AIKIN, aikIN.
Ты примерно помнишь ник, но совершенно не помнишь регистр его написания.
Решение:
Сортировка без учета регистра.
Re[8]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 14:48
Оценка:
Здравствуйте, Aikin, Вы писали:

A>Если формализовать этот критерий, каков он будет? Слово будет "лучше" если количество изменений которые преобразуют это слово в "елкр" будет "меньше".

A>Как это влияет на нашу ситуацию? "елка" имеет "вес" 1, "ёлка" -- 2, "епископ" -- 6.
A>Отсортировать по возрастания 1, 2 и 6 не составляет труда.

Какое отношение все это имеет к collation?
Re[6]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 14:51
Оценка:
Здравствуйте, Юрий Жмеренецкий, Вы писали:

I>>Здравствуйте, Sinclair, Вы писали:


S>>>Что именно "это"?

I>>Что строчные буквы предшествуют прописным, тут всего-то три сосны.
S>>>В большинстве языков нет четких правил сравнения строк. Считать ли "ёлка" и "Елка" равными — личное дело проектировщика приложения.
I>>Не передергивай, речь не о сравнении на равенство, а о сортировке.

ЮЖ>Сравнение на равенство — это намного проще чем сортировка.


Знаю, это Sinclair зачем-то равенство за уши притянул.
Re[2]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 14:55
Оценка:
Здравствуйте, Aikin, Вы писали:

A>Есть список пользователей. Ники они себе заводили "как попало": Aikin, aIkIn, AIKIN, aikIN.

A>Ты примерно помнишь ник, но совершенно не помнишь регистр его написания.
A>Решение:
A>Сортировка без учета регистра.

strcoll: aikIN, aIkIn, Aikin, AIKIN
stricoll: Aikin, aIkIn, AIKIN, aikIN

И каким же образом поиск в втором списке для твоей задачи подходит лучше?
Re[9]: Смысл of case insensitive collation
От: Aikin Беларусь kavaleu.ru
Дата: 07.11.08 14:59
Оценка:
Здравствуйте, igna, Вы писали:

I>Какое отношение все это имеет к collation?

Не передергивай, речь не о сравнении на равенство, а о сортировке. И если в приложении "Елка" в отсортированном списке идет после "ёлка", то это не по-человечески.

1) Именно на эту цитату я отвечал
2) Если ты имел ввиду "отсортированном по алфавиту списке", то а) так бы и писал, б) для некоторых задач е и ё могут быть одной и той же буквой.
Re[3]: Смысл of case insensitive collation
От: Aikin Беларусь kavaleu.ru
Дата: 07.11.08 15:01
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Aikin, Вы писали:


A>>Есть список пользователей. Ники они себе заводили "как попало": Aikin, aIkIn, AIKIN, aikIN.

A>>Ты примерно помнишь ник, но совершенно не помнишь регистр его написания.
A>>Решение:
A>>Сортировка без учета регистра.

I>strcoll: aikIN, aIkIn, Aikin, AIKIN

I>stricoll: Aikin, aIkIn, AIKIN, aikIN

I>И каким же образом поиск в втором списке для твоей задачи подходит лучше?

Для списка в 4 элемента сортировка не нужна вообще!
Re[10]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 15:05
Оценка: -1
Здравствуйте, Aikin, Вы писали:

A>Не передергивай, речь не о сравнении на равенство, а о сортировке. И если в приложении "Елка" в отсортированном списке идет после "ёлка", то это не по-человечески.

A>1) Именно на эту цитату я отвечал



-Мальчик, как тебя зовут?
(молчит)
-Мальчик, ты что, тормоз?
-Меня Вася зовут...
-А где ты живешь?
-Я не тормоз...
Re[4]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 15:07
Оценка:
Здравствуйте, Aikin, Вы писали:

I>>strcoll: aikIN, aIkIn, Aikin, AIKIN

I>>stricoll: Aikin, aIkIn, AIKIN, aikIN

I>>И каким же образом поиск в втором списке для твоей задачи подходит лучше?

A>Для списка в 4 элемента сортировка не нужна вообще!

Ну понятно, что до и после этих четырех еще немерянные тыщи, и что? Каким образом поиск в втором списке для твоей задачи подходит лучше?
Re[11]: Смысл of case insensitive collation
От: Aikin Беларусь kavaleu.ru
Дата: 07.11.08 15:13
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Aikin, Вы писали:


I>

A>>Не передергивай, речь не о сравнении на равенство, а о сортировке. И если в приложении "Елка" в отсортированном списке идет после "ёлка", то это не по-человечески.

A>>1) Именно на эту цитату я отвечал

I>


Ок.

Именно на эту цитату я отвечал изначально в сообщении Re[5]: Смысл of case insensitive collation
Автор: Aikin
Дата: 07.11.08

После чего ты спросил "В каком-таком случае этот вариант кого-то может не устроить, а вариант "елка, ёлка, епископ" устроить?".
Я привел пример.
Ты сослался на то, что имел ввиду совсем другое.
Я ответил что обсуждение идет в контексте поста Re[4]: Смысл of case insensitive collation
Автор: igna
Дата: 07.11.08



Что тебя не устраивает?


P.S. Переход на личности не засчитан
Re[5]: Смысл of case insensitive collation
От: Aikin Беларусь kavaleu.ru
Дата: 07.11.08 15:18
Оценка: :)
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Aikin, Вы писали:


I>>>strcoll: aikIN, aIkIn, Aikin, AIKIN

I>>>stricoll: Aikin, aIkIn, AIKIN, aikIN

I>>>И каким же образом поиск в втором списке для твоей задачи подходит лучше?

A>>Для списка в 4 элемента сортировка не нужна вообще!

I>Ну понятно, что до и после этих четырех еще немерянные тыщи, и что? Каким образом поиск в втором списке для твоей задачи подходит лучше?

Ты случаем не издеваешься?

... , Aikin, aIkIn, AIKIN, aikIN, ..., igna, Igna, IGNA, ignA, ...

Без учета регистра: ... , Aikin, aIkIn, AIKIN, aikIN, ..., igna, Igna, IGNA, ignA, ...
С учетом: ... ,aikIN, aIkIn, ..., igna, ignA, ..., Aikin, AIKIN, ..., Igna, IGNA, ...
Re[12]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 15:24
Оценка:
Здравствуйте, Aikin, Вы писали:

A>Что тебя не устраивает?


Твой пример имеет отношение к сортировке, но к collation — вряд ли. Все-таки согласись, странно постоянно и в каждом предложении напоминать о том, что речь идет о сортировке в смысле collation, когда collation эта появилась в названии темы с самого начала и не девается оттуда никуда.

A>P.S. Переход на личности не засчитан


Прошу прощения, если что...
Re[6]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 15:28
Оценка:
Здравствуйте, Aikin, Вы писали:

A>Без учета регистра: ... , Aikin, aIkIn, AIKIN, aikIN, ..., igna, Igna, IGNA, ignA, ...

A>С учетом: ... ,aikIN, aIkIn, ..., igna, ignA, ..., Aikin, AIKIN, ..., Igna, IGNA, ...

Это ты чем сравнивал, strcmp-ом и stricmp-ом?

strcoll: aikIN, aIkIn, Aikin, AIKIN, igna, ignA, Igna, IGNA
stricoll: Aikin, aIkIn, AIKIN, aikIN, igna, Igna, IGNA, ignA
Re[13]: Смысл of case insensitive collation
От: Aikin Беларусь kavaleu.ru
Дата: 07.11.08 15:37
Оценка:
Здравствуйте, igna, Вы писали:

I>Твой пример имеет отношение к сортировке, но к collation — вряд ли. Все-таки согласись, странно постоянно и в каждом предложении напоминать о том, что речь идет о сортировке в смысле collation, когда collation эта появилась в названии темы с самого начала и не девается оттуда никуда.

Я если честно, знать не знал что такое "collation" (кроме его перевода который указывает на сортировку, но не на ее вид) пока не заглянул в вики после твоего вопроса
Автор: igna
Дата: 07.11.08
Поэтому считал, что ты не уверен зачем нужно вообще сортировать слова не в алфавитном, а каком-то другом порядке.


По поводу равенства букв ё и Е в сообщении Синклера и фразы: "Не передергивай, речь не о сравнении на равенство, а о сортировке."
Сравнение на равенство имеет непосредственное отношение к сравнению на больше/меньше/равно (частичный порядок), так как равные элементы имеют одинаковые "веса" и идут вместе (как в примере "елка, ёлка, епископ").


По поводу изначального сообщения пример задачи (да отталкиваться нужно именно от задачи) приведен здесь
Автор: Aikin
Дата: 07.11.08


СУВ, Aikin
Re[7]: Смысл of case insensitive collation
От: Aikin Беларусь kavaleu.ru
Дата: 07.11.08 15:40
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Aikin, Вы писали:


A>>Без учета регистра: ... , Aikin, aIkIn, AIKIN, aikIN, ..., igna, Igna, IGNA, ignA, ...

A>>С учетом: ... ,aikIN, aIkIn, ..., igna, ignA, ..., Aikin, AIKIN, ..., Igna, IGNA, ...

I>Это ты чем сравнивал, strcmp-ом и stricmp-ом?

"Руками", исползуя стнадартный подход: любая большая буква "больше" маленькой.

I>strcoll: aikIN, aIkIn, Aikin, AIKIN, igna, ignA, Igna, IGNA

I>stricoll: Aikin, aIkIn, AIKIN, aikIN, igna, Igna, IGNA, ignA
Хмм, интересно... Нужно почитать про этот strcoll. Почему именно так...
Re[8]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 15:44
Оценка:
Здравствуйте, Aikin, Вы писали:

I>>strcoll: aikIN, aIkIn, Aikin, AIKIN, igna, ignA, Igna, IGNA

I>>stricoll: Aikin, aIkIn, AIKIN, aikIN, igna, Igna, IGNA, ignA
A>Хмм, интересно... Нужно почитать про этот strcoll. Почему именно так...

Вот, верно. У меня, пока я про strcoll не читал, тоже вопросов не возникало. Просто думал, что раз есть strcmp, _stricmp и strcoll, то почему бы не быть и _stricoll-у.
Re[4]: Смысл of case insensitive collation
От: igna Россия  
Дата: 07.11.08 15:52
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Только не locale, а collation.


Согласен, просто в C и C++ collation является частью locale, но конечно точнее говорить collation.

S>Я вообще твою претензию не понимаю. Я бы понял, если бы чего-то не было, что тебе нужно. А зачем требовать, чтобы что-то убрали ?


Чтобы это что-то не использовали сами не понимая зачем, и мне не приходилось его потом отрывать и выбрасывать со скрежетом.
Re: Смысл of case insensitive collation
От: Aikin Беларусь kavaleu.ru
Дата: 08.11.08 15:04
Оценка: 1 (1)
Здравствуйте, igna, Вы писали:

I>Какой смысл имеет независимая от регистра сортировка в лексикографическом порядке определенного языка? Если в русском языке принято, что строчные буквы предшествуют прописным, зачем менять этот порядок? Я еще понимаю причины появления скажем функции _stricmp в C, которая в случае английского языка является неким подобием функции strcoll, но зачем кому-то понадобилась _stricoll?


Интересный пример нашел в википедии:

There has historically been some variation in the application of these rules. For instance, the prefixes Mc and M' in Irish and Scottish surnames were taken to be abbreviations for Mac, and alphabetized as if they were spelled out as Mac in full. Thus one might find in a catalog the sequence:

McKinley
Mackintosh

with McKinley preceding Mackintosh, as if it had been spelled "MacKinley". Since the advent of computer-sorted lists, this type of alphabetization is less frequently encountered, though it is still used in British phone books.


И еще пример про пробелы:

A variation in alphabetical principles applies to names consisting of two words. In some cases, names with identical first words are all alphabetized together under the first word, e.g., grouping together all names beginning with San, all those beginning with Santa, and those beginning with Santo:

San
San Cristobal
San Juan
San Teodoro
San Tomas
Santa Barbara
Santa Clara
Santa Cruz
Santo Domingo

But in another system, the names are alphabetized as if they had no spaces, e.g. as follows:

San
San Cristobal
San Juan
Santa Barbara
Santa Clara
Santa Cruz
San Teodoro
Santo Domingo
San Tomas

Вот так вот

В общем рекомендую ознакомиться со статьей в Вики.

СУВ, Aikin
Re[2]: Смысл of case insensitive collation
От: igna Россия  
Дата: 09.11.08 07:03
Оценка:
Здравствуйте, Aikin, Вы писали:

A>with McKinley preceding Mackintosh, as if it had been spelled "MacKinley". Since the advent of computer-sorted lists, this type of alphabetization is less frequently encountered, though it is still used in British phone books.


Какое отношение это имеет к case insensitive collation?

A>В общем рекомендую ознакомиться со статьей в Вики.


Слушай, ... кхм ..., это не ты ли два дня тому назад впервые про то, как strcoll сортирует, узнал?: здесь
Автор: Aikin
Дата: 07.11.08
Re[3]: Смысл of case insensitive collation
От: Aikin Беларусь kavaleu.ru
Дата: 10.11.08 07:17
Оценка:
Здравствуйте, igna, Вы писали:

I>

A>>with McKinley preceding Mackintosh, as if it had been spelled "MacKinley". Since the advent of computer-sorted lists, this type of alphabetization is less frequently encountered, though it is still used in British phone books.


I>Какое отношение это имеет к case insensitive collation?

К case insensitive collation никак, а вот к collation очень даже.
Я запостил интересный (на мой взгляд) факт про исключения в сортировке по алфавиту (в частности отвечая на твой вопрос: "И если в приложении "Елка" в отсортированном списке идет после "ёлка", то это не по-человечески").

Не хочешь -- не читай. А тем более не отвечай.

I>Слушай, ... кхм ..., это не ты ли два дня тому назад впервые про то, как strcoll сортирует, узнал?: здесь
Автор: Aikin
Дата: 07.11.08

Да это я. И ты прекрасно это знаешь.
strcoll -- какая-то (одна из тысяч-миллионов) функций С++ который меня никогда не интересовал. Меня же интересуют общие знания, не привязанные ни к какой конкретной платформе.
Статья в википедии это все что мне хотелось бы знать про collation. Так что твой strcoll идут в сад.


На будущее: захочешь так же ответить -- лучше промолчи

СУВ, Aikin
Re[4]: Смысл of case insensitive collation
От: igna Россия  
Дата: 10.11.08 09:05
Оценка:
Здравствуйте, Aikin, Вы писали:

A>Статья в википедии это все что мне хотелось бы знать про collation.


Основываясь только на почерпнутых из статьи знаниях попробуй предсказать, каким будет результат case sensitive упорядочения последовательности abx, aBy, abz, aBx, aby, aBz. А case insensitive?
Re[5]: Смысл of case insensitive collation
От: Mamut Швеция http://dmitriid.com
Дата: 11.11.08 10:11
Оценка:
A>>Статья в википедии это все что мне хотелось бы знать про collation.

I>Основываясь только на почерпнутых из статьи знаниях попробуй предсказать, каким будет результат case sensitive упорядочения последовательности abx, aBy, abz, aBx, aby, aBz. А case insensitive?


Зависит от collation. Читать здесь: http://icu-project.org/userguide/Collate_Intro.html

Например:

— The letters A-Z can be sorted in a different order than in English. For example, in Lithuanian, "y" is sorted between "i" and "k".

— Combinations of letters can be treated as if they were one letter. For example, in traditional Spanish "ch" is treated as a single letter, and sorted between "c" and "d".

...

— Even in the same language, different applications might require different sorting orders. For example, in German dictionaries, "öf" would come before "of". In phone books the situation is the exact opposite.


и т.п.

Продолжение здесь: http://icu-project.org/userguide/Collate_Concepts.html и таблицу там же (там есть примеры, как колляция и локаль влияет на сортировку): http://icu-project.org/userguide/Collate_Concepts.html#Naming_Collators:


dmitriid.comGitHubLinkedIn
Re[6]: Смысл of case insensitive collation
От: igna Россия  
Дата: 11.11.08 13:40
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Зависит от collation.


Выбери любую по твоему желанию и отсортируй.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.