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


13

Уявіть, що ви даруєте комусь картку з кодом "5SBDO0".

У деяких шрифтах букву "S" важко візуально відрізнити від числа п'ять, (як при цифрі нуль та літери "O").

Читаючи код вголос, може бути важко відрізнити "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 - це стандартне кодування, що обмежує подібність символів.
barjak

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

Відповіді:


15

Ви повинні розділити набір буквено-цифрових значень на групи за візуальною схожістю і вибрати "найбільш знакових" представника від кожної групи. Це дещо суб'єктивно, хоча ви можете запускати на ньому тести користувачів. Вибір, який ви зробите, також залежить від того, чи будуть малюнки надруковані чи написані від руки. Наприклад:

  • { O , 0 , Q , D }

  • { I , L , 1 }

  • { B , 8 }

  • { Z , 2 }

  • { S , 5 }

  • { 7 , T }

  • { 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:]}
    = fricative / affricate (кластер) + [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. Наприклад, 5 і 9 легко змішати, тому вони говорять як "п'ять" і "дев'ять а"
mattnz

@mattnz: Дякую, я забув 5 і 9. Якість звуку також є важливим фактором: радіо, телефони, студійні записи та особисті комунікації створюють свої унікальні проблеми.
Джон Перді,

1
Технічно це "дев'ять", чотири - "підошви".
Патрік Х'юз

3

Ви можете використовувати Механічний турк, щоб справжні люди оцінили всі 26 ^ 2 пари букв для слухової та візуальної подібності. Перевага полягає в тому, що ви навіть можете отримати дані для різних рідних мов таким чином.


1

Для англійської мови алгоритми soundex та Metaphone кодують звуки неоднозначно. Soundex, мабуть, занадто простий, але метафон містить деякі хороші моменти. Ви хочете послідовність "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.