كل المقالات

· Casimiro Ferreira· 5 دقيقة قراءة

معالجة اللغة الطبيعية الكلاسيكية للبرتغالية: التقطيع المقطعي وتحويل الحروف إلى فونيمات

  • NLP
  • Portuguese
  • Phonemization
  • Grapheme-to-Phoneme
  • Lusophone
  • FOSS

حدود المقاطع، ومواضع النبر، وتعيينات التهجّي إلى الصوت في البرتغالية تخضع لقواعد وثّقها اللغويون قبل أن يدرّب أحد شبكة عصبية بزمن طويل. عندما تكون تلك القواعد صريحة، فإن الأداة المناسبة هي مكتبة صغيرة وحتمية وتعمل دون اتصال بالكامل يمكنك قراءتها وتدقيقها وتشغيلها في أي مكان. هذه هي الفلسفة الكامنة وراء حزمتنا الكلاسيكية لمعالجة اللغة الطبيعية البرتغالية: silabificador للتقطيع المقطعي و TugaPhone لتحويل الحروف إلى فونيمات (G2P).

لماذا الكلاسيكية، ولماذا الآن

الصوتيات من المجالات التي تتألق فيها القواعد الحتمية بحق. إن قواعد حدود التقطيع المقطعي في البرتغالية وانتظامات إملائها موثّقة توثيقًا جيدًا، ولذلك ينتج محرك قواعد مصنوع يدويًا نسخًا صوتية يمكنك فحصها سطرًا بسطر. لا وحدة معالجة رسومية، ولا تنزيل نماذج، ولا استدعاء عبر الشبكة. وهذا مهم لسيادة البيانات: لا ينبغي لخط معالجة صوتي ناطق بالبرتغالية أن يُرسل نصه إلى واجهة برمجية بعيدة لمجرد أن يعرف كيف يُنطق كلمة. وهو مهم أيضًا للسرعة والبصمة — فهذه المكتبات قليلة الاعتماديات وتعمل على حاسوب محمول أو خادم أو جهاز مدمج بالسهولة نفسها.

silabificador: حدود المقاطع

silabificador هو مقطِّع مقاطع برتغالي خفيف مبني بالكامل من قواعد مصنوعة يدويًا، دون أي اعتماديات. الواجهة صغيرة بقدر ما تبدو:

from silabificador import syllabify

syllabify("computador")
# ['com', 'pu', 'ta', 'dor']

جرى ضبطه واختباره على بيانات نظيفة من Portal da Língua Portuguesa، وقياس أدائه على Portuguese Phonetic Lexicon — وهو مجموعة بيانات مفتوحة تضم أكثر من 100,000 مدخل مستمدة من المصدر نفسه. التقطيع المقطعي خطوة أساسية لإسناد النبر، والتقطيع بالشرطات، والنسخ الفونيمي، ولذلك فإن أداءه بدقة وسرعة يؤتي ثماره في كل ما يأتي لاحقًا في المسار.

TugaPhone: تحويل الحروف إلى فونيمات بما يراعي اللهجة

TugaPhone يحوّل أي نص برتغالي إلى IPA، ويفعل ذلك عبر اللهجات الناطقة بالبرتغالية الرئيسية: الأوروبية (pt-PT)، والبرازيلية (pt-BR)، والأنغولية (pt-AO)، والموزمبيقية (pt-MZ)، والتيمورية (pt-TL). والأهم أنه يحافظ على التنوع اللهجي بدلًا من تسوية كل شيء إلى “معيار” واحد. فالجملة نفسها تخرج بصورة مختلفة تبعًا للمكان الذي تُنطق فيه:

Choveu muito ontem à noite.
pt-PT → ʃuˈvew ˈmũjtu ˈõtɐ̃j a ˈnojt
pt-BR → ʃoˈvew ˈmwĩtʊ ˈõtẽj a ˈnojtʃɪ
pt-AO → ʃoˈvew ˈmũjntʊ ˈõntẽj a ˈnojtɨ
pt-MZ → ʃoˈvew ˈmũjtu ˈõtẽj a ˈnɔjtɨ
pt-TL → ʃoˈvew ˈmujtʊ ˈõntɐ̃j a ˈnojtʰ

خلف الكواليس، يشغّل TugaPhone محرك شبكة المرشّحين (candidate lattice) المشترك orthography2ipa، ويضيف فوقه اهتمامات خاصة بالبرتغالية عبر نقاط التوسّع الخاصة بذلك المحرك نفسه. يستشير معجمًا صوتيًا منتقى (نفس Portuguese Phonetic Lexicon أعلاه) للكلمات المعروفة؛ وأما كل ما ليس في المعجم — الأسماء، والألفاظ المستحدثة، والاقتراضات الأجنبية — فتولّد الشبكة مرشّحاتها من قواعد الحروف الكتابية والتنويعات الصوتية الخاصة باللهجة.

يستحق تفصيلان الإشارة إليهما. إن تطبيع الأرقام يحوّل الأرقام إلى صورها المنطوقة بالبرتغالية مع مطابقة صحيحة للجنس والعدد:

from tugaphone.number_utils import normalize_numbers

normalize_numbers("vou comprar 1 casa")    # uma casa
normalize_numbers("vou adotar 2 cães")     # dois cães

بل إنه يراعي اصطلاحات المقياس — المقياس الطويل biliões لـ pt-PT، والمقياس القصير trilhões لـ pt-BR. أما إزالة اللبس بين المتشابهات الخطية فمُفوَّضة إلى مكتبة bifonia، التي تمتلك المعرفة الدلالية بأيّ متشابهات خطية غير متجانسة صوتيًا موجودة وأيّ قراءة تحملها — فتُعامَل para بوصفها حرف جر معاملة مختلفة عن para بوصفها فعلًا — وتضع علامة على القراءة المختارة بحركات إضافية قبل أن تصل الجملة أصلًا إلى الشبكة.

يقوم TugaPhone بتحويل الحروف إلى فونيمات عبر تشغيل شبكة المرشّحين المشتركة orthography2ipa: اختيار اللهجة هو اختيار مواصفة لهجة orthography2ipa نفسها، لذا فإن ظواهر اللهجة — كالبيتاسية، وصوائت بورتو الصاعدة المركّبة، وتحنيك اللام المديري، وتقديم الـ /u/ الأزوري، وسندهي الصفير في نهاية المقطع، وغيرها — تأتي من الشبكة نفسها لا من تعديلات نصية لاحقة. يضيف TugaPhone فقط ما يترك orthography2ipa عمدًا للمستدعي، موصولًا عبر نقاط التوسّع الخاصة به: توسيع الأرقام/الأعداد الترتيبية المراعي للجنس ووسم bifonia للمتشابهات غير المتجانسة يعملان كمرحلة تطبيع في المحرك قبل أن تصل الشبكة إلى النص؛ والمعجم النطقي المنتقى من Tugalex مُسجَّل لكل لهجة عبر orthography2ipa.register_lexicon، بحيث تسلك الكلمة المغطاة نفس مسار التجاوز الذي تسلكه استثناءات المواصفة نفسها، ولا تولّد الشبكة مرشّحات إلا للكلمات التي لا يغطيها المعجم؛ والتقطيع المقطعي يأتي من الإضافة المعتمِدة على silabificador الخاصة بـ orthography2ipa نفسها، بحيث يقع النبر على المقطع نفسه الذي كان TugaPhone سيختاره بخلاف ذلك. قطع صغيرة قابلة للتركيب تغذّي محركًا مشتركًا — كل منها مفيدة بذاتها.

TugaPhone صادق بشأن حدوده: تغطية المعجم أكثر ندرة للهجات الأفريقية والتيمورية، واللهجات دون الإقليمية (بورتو، ومينيو، وبراغا، وغيرها) تقريبات تجريبية لخصائص موثّقة، والتنغيم على مستوى الجملة مبسَّط. هذه قيود موثّقة علنًا، لا أنماط إخفاق مخفية.

الصورة الأوسع: orthography2ipa

البرتغالية تنوّع واحد بين تنوعات كثيرة، وينسحب نمط الهندسة نفسه على غيرها. إن orthography2ipa حزمة بايثون من بيانات صرفة تضم تعيينات حرف كتابي←IPA وتنويعات صوتية ذات دوافع لغوية، تغطي 820 لغة عبر أكثر من 20 عائلة لغوية. وهي ترسم تمييزًا حادًا يحتاجه أي نظام G2P جاد: خريطة الحروف الكتابية تقول ما الفونيمات التي يمكن أن يمثلها تهجٍّ ما، بينما خريطة التنويعات الصوتية تقول كيف يظهر الفونيم فعليًا في سياق معين. تُنمذَج التنوعات الإقليمية بوصفها مواصفاتها الخاصة المرتبطة عبر نسب مرجّح متعدد الأسلاف، فترث الأشجار اللهجية من أسلافها بدلًا من تكرار البيانات.

هذا هو الحدس نفسه وراء pt-PT و pt-BR و pt-AO و pt-MZ و pt-TL في TugaPhone: معاملة كل تنوع ناطق بالبرتغالية بوصفه مواطنًا من الدرجة الأولى بقواعده الخاصة، لا انحرافًا عن لهجة قانونية واحدة. البيانات تصريحية والمنطق رفيع وقابل للتوصيل — يمكنك قراءة القواعد، والاستشهاد بمصادرها، والوثوق بالمخرَجات.

جرّبه

كل ما هنا مفتوح المصدر وقابل للتثبيت اليوم:

pip install tugaphone
pip install git+https://github.com/TigreGotico/silabificador

وللاطلاع على التعيينات متعددة اللغات الأوسع، انظر orthography2ipa. حتمية وسريعة وتعمل دون اتصال ومبنية لتشمل كامل اتساع العالم الناطق بالبرتغالية.

تستند حزمة الصوتيات البرتغالية هذه إلى عملنا في تحويل الحروف الكتابية إلى IPA لـ 820 لغة، مشكّلةً العمود الفقري الصوتي لـ TTS الذي يعمل على بطاطا و صوتَي Miro و Dii متعددَي اللغات.