Bayangkan Anda memberi seseorang kartu dengan kode "5SBDO0" di atasnya.
Dalam beberapa font, huruf "S" sulit dibedakan secara visual dari angka lima, (seperti dengan angka nol dan huruf "O").
Membaca kode dengan keras, mungkin sulit untuk membedakan "B" dari "D", mengharuskan mengatakan "B seperti pada anak laki-laki," "D seperti pada anjing," atau menggunakan " alfabet fonetik " sebagai gantinya.
Apa subset huruf dan angka terbesar yang, dalam kebanyakan kasus, keduanya terlihat tidak ambigu secara visual dan terdengar tidak ambigu ketika dibaca dengan keras?
Latar Belakang:
Kami ingin membuat string pendek yang dapat menyandikan nilai sebanyak mungkin sambil tetap mudah untuk berkomunikasi.
Bayangkan Anda memiliki string 6 karakter, "123456". Dalam basis 10 ini dapat mengkodekan nilai 10 ^ 6.
Dalam hex "1B23DF" Anda dapat menyandikan 16 ^ 6 nilai dalam jumlah karakter yang sama, tetapi ini bisa terdengar ambigu ketika dibaca dengan keras. ("B" vs. "D")
Demikian juga untuk string N karakter apa pun, Anda mendapatkan (ukuran alfabet) ^ N nilai.
String terbatas pada panjang sekitar enam karakter, karena ingin mudah masuk dalam kapasitas kapasitas memori kerja manusia .
Jadi untuk menemukan jumlah maksimum nilai yang dapat kita enkode, kita perlu menemukan set huruf / angka yang tidak ambigu terbesar. Tidak ada alasan kita tidak dapat mempertimbangkan huruf GZ, dan beberapa tanda baca umum, tetapi saya tidak ingin harus secara manual berpasangan membandingkan "apakah G terdengar seperti A?", "Apakah G terdengar seperti B?", "Apakah G terdengar seperti C "sendiri. Seperti yang kita tahu ini akan menjadi O (n ^ 2) pekerjaan linguistik untuk dilakukan =) ...
Jawaban:
Anda harus mempartisi himpunan alfanumerik ke dalam grup berdasarkan kesamaan visual, dan memilih perwakilan "paling ikonik" dari setiap grup. Ini agak subyektif, meskipun Anda bisa menjalankan tes pengguna di atasnya. Pilihan yang Anda buat juga tergantung pada apakah angka akan dicetak atau tulisan tangan. Sebagai contoh:
{ O , 0 , Q , D }
{ I , L , 1 }
{ B , 8 }
{ Z , 2 }
{ S , 5 }
{ 7 , T }
{ U , V , Y }
Demikian pula, partisi karakter dengan kemiripan fonetik dari pengucapan nama mereka:
{ A [ʔeɪ], 8 [ʔeɪ (ʔ / t)]}
= dimulai dengan [ʔeɪ]
{ P [pi:], B [bi:], V [vi:], D [di:], T [ti:], E [ʔi:]}
= stop / frikatif + [i:]
{ G [ʤi:], C [si:], Z [zi:], 3 [θɹi:]}
= fricative / affricate (cluster) + [i:]
{ M [ɛm], N [ɛn]}
= [ɛ] + nasal
{ S [ɛs], F [ɛf], X [ɛks]}
= [ɛ] + fricative / affricate
{ I [ʔaɪ], Y [waɪ], 5 [faɪv], 9 [naɪn]}
= konsonan + [aɪ] + (konsonan)
{ Q [kjʉ:], U [jʉ:], 2 [t (j) ʉ:]}
= konsonan + [(j) ʉ:]
Ini, tentu saja, bukan satu-satunya partisi yang mungkin, hanya apa yang terlintas dalam pikiran saat ini. Bagaimanapun, itu harus cukup untuk membantu Anda memulai pengujian lebih lanjut. Juga, ini tidak didukung oleh sumber-sumber profesional — saya hanya mengutip latar belakang hobiis saya dalam tipografi dan fonetik.
sumber
Anda bisa menggunakan Mechanical Turk untuk membuat orang menilai semua 26 ^ 2 pasang huruf untuk kesamaan aural dan visual. Keuntungannya adalah Anda bahkan bisa mendapatkan data untuk berbagai bahasa asli dengan cara ini.
sumber
Untuk bahasa Inggris, soundex dan algoritma Metaphone mengkodekan suara-suara yang ambigu. Soundex mungkin terlalu sederhana, tetapi Metaphone menggabungkan beberapa poin bagus. Anda ingin urutan "OU"? Itu bisa diucapkan dalam banyak cara, karena kalimat ini mengalami demontrasi;)
sumber
Jawaban Jon Purdy di atas tampaknya paling benar. Untuk tujuan praktis, saya mencoba
z-base-32
, pengkodean base32 non-standar yang dirancang dengan kemampuan berkomunikasi dalam pikiran. Tampaknya fungsional, meskipun tidak ideal - misalnya mereka secara eksplisit tidak fokus pada disambiguasi lisan.http://philzimmermann.com/docs/human-oriented-base-32-encoding.txt
http://pypi.python.org/pypi/zbase32/
sumber