
الإنجليزية: a أم an — القاعدة تعتمد على الصوت لا على أول حرف
تدوينة قصيرة من Red Blob Games تحلّل مشكلة تبدو تافهة في توليد النصوص: كيف تختار بين a و an. العامل الحاسم ليس أول حرف بل أول صوت في الكلمة المنطوقة، ولهذا يلزم هنا قاموس نطق لا فحص نصي.
نشرت مدوّنة البرمجة Red Blob Games تدوينة قصيرة عن مسألة تبدو تافهة حتى تحاول أتمتتها: كيف تختار بين a و an في نص مُولَّد.
القاعدة تخصّ الصوت لا الكتابة
النهج البديهي هو فحص ما إذا كان الحرف الأول صوتياً، لكن هذا ينتج an unicorn. القاعدة الحقيقية تُطبَّق على الكلمة المنطوقة: تبدأ unicorn بحرف صوتي لكن بصوت ساكن — Y في cmudict و /j/ في الأبجدية الصوتية الدولية — لذا تأخذ a. والعكس هو hour: تبدأ بحرف ساكن لكن بصوت صوتي (cmudict AW، وIPA /aʊ/)، ولذلك تُكتب an hour.
لذلك يحتاج تطبيق القاعدة بشكل صحيح إلى قاموس نطق لا إلى فحص نصي، ومن هنا بدأ المشروع.
يوم واحد مع 32,455 كلمة
نزّل المؤلف قاموس cmudict وقارن قاعدة الصوت الأول بقاعدة الحرف الأول الساذجة. أسفرت المحاولة الأولى عن كمّ كبير من عدم التوافق، فقُلّصت القائمة عن قصد: الأسماء الخاصة (3,133)، والحروف المفردة (26)، والنطق الثانوي (9,114، ومنه النطق الأمريكي والبريطاني لكلمة herb)، وعلامات الترقيم مثل الإضافة والاختصارات (8,574)، والأحرف الأولى المختصرة (10)، وحالتان استُبعدتا يدوياً. كما استُبعد 81,852 مدخلاً آخر.
تبقّى 32,455 كلمة، ولم يحتج منها، على ما فاجأ المؤلف، سوى 129 كلمة إلى استثناءات. يسهل تمييزها: كلمات تبدأ بـ eu و ew مثل eucalyptus و ewe، وعائلة heir، ومعظم مجموعة honor و honest، و hour و once و one، إضافة إلى سلسلة طويلة من كلمات u مثل unicorn و uniform و unique و union و university و urine و useful و usual و uranium و utensil و uterus و utility و utopia وحتى yttrium.
يرافق صفحة المشروع رسمان بيانيان بـ d3: أحدهما يوضح ما إذا كان أول حرفين يكفيان للقرار، والآخر كم حرفاً يجب فحصه. جواب السؤال الأول واضح: لا، والرسم مليء بفروع حمراء يتقلّب فيها النطق بين صوتي وساكن.
قواعد مكتوبة يدوياً بدل شجرة قرار
أراد المؤلف اختصار الاستثناءات إلى شجرة قرار دنيا، وافترض أن المسألة مرتبطة بتصغير DFA، لكنه لم ينجح في ذلك فكتب القواعد يدوياً: تُعامل eu و ew كأصوات ساكنة، و heir و homage و hones و hono كأصوات صوتية، مع حالات خاصة لـ herb ومشتقاته.
تضم التدوينة أيضاً ملاحظة صريحة عن طريقة كتابة الشفرة. لم يُستخدم أي نموذج لغوي، وإن كان الأجدر، بحسب المؤلف، استخدامه: الشفرة لمرة واحدة، المكتوبة للإجابة عن سؤال واحد، لا تحتاج إلى نظافة أو قابلية صيانة، بل إلى الصحة فقط. ويرى أن نموذجاً كان يستطيع تحليل cmudict وبناء مخططات d3.js، ما يوفّر وقتاً لخوارزمية تحليل trie أفضل.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.