Визуально и слышно однозначное подмножество латинского алфавита?


13

Представьте, что вы даете кому-то карточку с кодом «5SBDO0».

В некоторых шрифтах букву «S» сложно визуально отличить от цифры пять (как с цифрой ноль и буквой «О»).

Читая код вслух, может быть трудно отличить «B» от «D», требуя сказать «B как у мальчика», «D как у собаки» или использовать вместо этого « фонетический алфавит ».

Какое наибольшее подмножество букв и цифр в большинстве случаев будет выглядеть однозначно визуально и звучать однозначно при чтении вслух?


Фон:

Мы хотим создать короткую строку, которая может закодировать столько значений, сколько возможно, но при этом легко общаться.

Представьте, что у вас есть 6-символьная строка «123456». В базе 10 это может закодировать 10 ^ 6 значений.

В шестнадцатеричном формате «1B23DF» вы можете закодировать 16 ^ 6 значений в том же количестве символов, но это может звучать неоднозначно при чтении вслух. («B» против «D»)

Аналогично для любой строки из N символов вы получаете (размер алфавита) ^ N значений.

Длина строки ограничена примерно шестью символами из-за желания легко помещаться в пределах емкости рабочей памяти человека .

Таким образом, чтобы найти максимальное количество значений, которые мы можем закодировать, нам нужно найти самый большой однозначный набор букв / цифр. Нет причин, по которым мы не можем рассматривать буквы GZ и некоторые обычные знаки пунктуации, но я не хочу вручную выполнять попарно сравнение «G звучит как A?», «G звучит как B?», «Делает G звучит как C "сам. Как мы знаем, это будет O (N ^ 2) лингвистическая работа, чтобы сделать =) ...


6
Обратите внимание, что то, что буквы произносятся одинаково, может сильно различаться в разных языках ...
Майкл Боргвардт

Кроме того, что именно латинский алфавит?
MSalters

Смотрите также мой ответ в связанном вопросе StackOverflow.
MSalters

Для визуального различия Base 32 - это стандартное кодирование, которое ограничивает сходство символов.
Барджак

@MSalters «Латинский алфавит» - это лингвистическая идея, для наших целей я действительно имею в виду «выбрать из подмножества латинского алфавита, кодифицированного в Юникод», например, en.wikipedia.org/wiki/ISO/IEC_8859-1
elliot42

Ответы:


15

Вы должны разбить набор буквенно-цифровых символов на группы по визуальному сходству и выбрать «наиболее значимого» представителя из каждой группы. Это несколько субъективно, хотя вы можете запустить пользовательские тесты на нем. Выбор, который вы делаете, также зависит от того, будут ли рисунки напечатаны или написаны от руки. Например:

  • { O , 0 , Q , D }

  • { I , L , 1 }

  • { B , 8 }

  • { Z , 2 }

  • { S , 5 }

  • { 7 , Т }

  • { U , V , Y }

Аналогично, разделите символы по фонетическому сходству произношения их имен:

  • { A [ʔeɪ], 8 [ʔeɪ (ʔ / t)]}
    = начинается с [ʔeɪ]

  • { P [pi:], B [bi:], V [vi:], D [di:], T [ti:], E [ʔi:]}
    = стоп / фрикативный + [i:]

  • { G [ʤi:], C [si:], Z [zi:], 3 [θɹi:]}
    = фрикативный / аффрикатный (кластер) + [i:]

  • { M [ɛm], N [ɛn]}
    = [ɛ] + носовой

  • { S [ɛs], F [ɛf], X [ɛks]}
    = [ɛ] + фрикатив / аффрикат

  • { I [ʔaɪ], Y [waɪ], 5 [faɪv], 9 [naɪn]}
    = согласный + [aɪ] + (согласный)

  • { Q [kjʉ:], U [jʉ:], 2 [t (j) ʉ:]}
    = согласный + [(j) ʉ:]

Это, конечно, не единственные возможные разделы, как раз то, что приходит на ум в данный момент. В любом случае, их должно быть достаточно, чтобы вы начали дальнейшее тестирование. Кроме того, они не подкреплены никакими профессиональными источниками - я цитирую только свои увлечения в области типографики и фонетики.


3
Для начала с похожим на слух сходством взгляните на радиосвязь, такую ​​как руководства по управлению воздушным движением (где устная коммуникация должна быть правильно истолкована, или люди умрут) и Ham Radio. Например, 5 и 9 легко смешать, поэтому их называют «пять» и «девять-а»
mattnz

@mattnz: Спасибо, я забыл 5 и 9. Качество звука также имеет большое значение: радио, телефоны, студийные записи и личное общение создают свои собственные уникальные проблемы.
Джон Пурди,

1
Технически это «девятка», четверка - «болтун».
Патрик Хьюз

3

Вы можете использовать Mechanical Turk, чтобы реальные люди оценили все 26 ^ 2 пар букв на слуховое и визуальное сходство. Преимущество состоит в том, что вы можете получить данные для различных родных языков таким образом.


1

Для английского языка алгоритмы soundex и Metaphone кодируют, какие звуки неоднозначны. Soundex, вероятно, слишком прост, но в Metaphone есть несколько положительных моментов. Вы хотите последовательность "OU"? Это можно произнести во многих отношениях, как показывает это предложение;)


0

Ответ Джона Перди выше кажется наиболее правильным. Для практических целей я пытаюсь z-base-32использовать нестандартную кодировку base32, разработанную с учетом коммуникабельности. Это выглядит функционально, хотя и не идеально - например, они явно не фокусировались на устранении неоднозначности.

http://philzimmermann.com/docs/human-oriented-base-32-encoding.txt

http://pypi.python.org/pypi/zbase32/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.