पुर्तगाली में अक्षर-विभाजन, बल का स्थान, और वर्तनी-से-ध्वनि मैपिंग उन नियमों का पालन करते हैं जिन्हें भाषाविदों ने किसी न्यूरल नेटवर्क को प्रशिक्षित करने से बहुत पहले प्रलेखित कर दिया था। जब वे नियम स्पष्ट होते हैं, तो सही उपकरण एक छोटी, नियतात्मक, पूरी तरह से ऑफ़लाइन लाइब्रेरी है जिसे आप पढ़, ऑडिट, और कहीं भी चला सकते हैं। यही हमारे क्लासिकल पुर्तगाली NLP स्टैक के पीछे का दर्शन है: अक्षर-विभाजन के लिए silabificador और ग्रैफ़ीम-टू-फ़ोनीम (G2P) के लिए TugaPhone।
क्लासिकल क्यों, और अभी क्यों
ध्वन्यात्मकता उन क्षेत्रों में से एक है जहाँ नियतात्मक नियम वास्तव में चमकते हैं। पुर्तगाली अक्षर-विभाजन के सीमा नियम और उसकी वर्तनी की नियमितताएँ अच्छी तरह प्रलेखित हैं, इसलिए एक हस्तनिर्मित नियम इंजन ऐसी ट्रांसक्रिप्शन उत्पन्न करता है जिन्हें आप पंक्ति दर पंक्ति निरीक्षण कर सकते हैं। कोई GPU नहीं, कोई मॉडल डाउनलोड नहीं, कोई नेटवर्क कॉल नहीं। यह डेटा संप्रभुता के लिए मायने रखता है: एक लुसोफ़ोन आवाज़ पाइपलाइन को केवल यह जानने के लिए कि किसी शब्द का उच्चारण कैसे करें, अपना टेक्स्ट किसी रिमोट API को भेजने की आवश्यकता नहीं होनी चाहिए। यह गति और फ़ुटप्रिंट के लिए भी मायने रखता है — ये लाइब्रेरियाँ निर्भरता-हल्की हैं और एक लैपटॉप, एक सर्वर, या एक एम्बेडेड डिवाइस पर समान सहजता से चलती हैं।
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 साझा 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
यह मापन सम्मेलनों का भी सम्मान करता है — pt-PT के लिए लॉन्ग-स्केल biliões, pt-BR के लिए शॉर्ट-स्केल trilhões। समानाक्षर असंदिग्धीकरण bifonia लाइब्रेरी को सौंपा गया है, जो यह अर्थ-आधारित ज्ञान रखती है कि कौन-से समध्वनि समानाक्षर (heterophonic homographs) मौजूद हैं और वे कौन-सा पठन वहन करते हैं — इसलिए एक पूर्वसर्ग के रूप में para को एक क्रिया के रूप में para से भिन्न रूप से व्यवहार किया जाता है — और लैटिस के वाक्य देखने से पहले ही चुने गए पठन को अतिरिक्त डायक्रिटिक्स से चिह्नित कर देती है।
TugaPhone साझा orthography2ipa कैंडिडेट लैटिस को चलाकर फ़ोनीमाइज़ करता है: बोली का चयन ही orthography2ipa लेक्ट स्पेक का चयन है, इसलिए बोली की परिघटनाएँ — betacism, Porto की उठती हुई द्विस्वर, Madeiran /l/ palatalisation, Azorean /u/ fronting, कोडा-सिबिलेंट सन्धि, और अन्य — पोस्ट-हॉक स्ट्रिंग एडिट के बजाय लैटिस से ही आती हैं। TugaPhone केवल वही जोड़ता है जिसे orthography2ipa जानबूझकर कॉलर पर छोड़ देता है, उसके अपने विस्तार बिंदुओं के माध्यम से जुड़ा हुआ: लिंग-जागरूक संख्या/क्रमसूचक विस्तार और bifonia की समानाक्षर चिह्नकारी इंजन के सामान्यीकरण चरण के रूप में लैटिस के टेक्स्ट देखने से पहले चलते हैं; Tugalex से क्यूरेटेड उच्चारण शब्दकोश orthography2ipa.register_lexicon के माध्यम से प्रति लेक्ट पंजीकृत होता है, इसलिए एक कवर किया गया शब्द स्पेक के अपने अपवादों के समान ओवरराइड पथ में समा जाता है, और लैटिस केवल उन शब्दों के लिए उम्मीदवार उत्पन्न करता है जिन्हें शब्दकोश कवर नहीं करता; अक्षर-विभाजन orthography2ipa के अपने silabificador-समर्थित प्लगइन से आता है, इसलिए बल उसी अक्षर पर पड़ता है जो TugaPhone अन्यथा चुनता। छोटे, संयोजनीय टुकड़े जो एक साझा इंजन को फ़ीड करते हैं — प्रत्येक अपने आप में उपयोगी।
TugaPhone अपने किनारों के बारे में ईमानदार है: अफ़्रीकी और तिमोरी बोलियों के लिए शब्दकोश कवरेज विरल है, उप-क्षेत्रीय उच्चारण (Porto, Minho, Braga, और अन्य) प्रलेखित विशेषताओं के प्रायोगिक सन्निकटन हैं, और वाक्य-स्तरीय छंद सरलीकृत है। ये खुले तौर पर प्रलेखित सीमाएँ हैं, छिपे हुए विफलता मोड नहीं।
व्यापक तस्वीर: orthography2ipa
पुर्तगाली अनेक में से एक विभिन्नता है, और वही इंजीनियरिंग पैटर्न सामान्यीकृत होता है। orthography2ipa भाषाई रूप से प्रेरित ग्रैफ़ीम→IPA और एलोफ़ोन मैपिंग का एक शुद्ध-डेटा Python पैकेज है जो 20+ भाषा परिवारों में 820 भाषाओं में फैला है। यह एक तीखा भेद खींचता है जो किसी भी गंभीर G2P प्रणाली को चाहिए: एक ग्रैफ़ीम मैप कहता है कि एक वर्तनी किन फ़ोनीम्स का प्रतिनिधित्व कर सकती है, जबकि एक एलोफ़ोन मैप कहता है कि एक फ़ोनीम एक दिए गए संदर्भ में वास्तव में कैसे सतह पर आता है। क्षेत्रीय विभिन्नताओं को भारित बहु-पूर्वज वंशावली के माध्यम से जुड़े हुए अपने स्वयं के विनिर्देशों के रूप में मॉडल किया जाता है, इसलिए बोली वृक्ष डेटा दोहराने के बजाय अपने माता-पिता से इनहेरिट करते हैं।
यही वही प्रवृत्ति है जो TugaPhone में pt-PT, pt-BR, pt-AO, pt-MZ, और pt-TL के पीछे है: प्रत्येक लुसोफ़ोन विभिन्नता को एक एकल विहित उच्चारण से विचलन के बजाय अपने स्वयं के नियमों के साथ एक प्रथम-श्रेणी नागरिक के रूप में मानें। डेटा घोषणात्मक है और लॉजिक पतला और प्लगेबल है — आप नियम पढ़ सकते हैं, उनके स्रोत उद्धृत कर सकते हैं, और आउटपुट पर भरोसा कर सकते हैं।
इसे आज़माएँ
यहाँ सब कुछ ओपन सोर्स और आज इंस्टॉल करने योग्य है:
pip install tugaphone
pip install git+https://github.com/TigreGotico/silabificador
व्यापक बहुभाषी मैपिंग के लिए, orthography2ipa देखें। नियतात्मक, तेज़, ऑफ़लाइन, और पुर्तगाली-भाषी दुनिया की पूरी व्यापकता के लिए निर्मित।
यह पुर्तगाली ध्वन्यात्मकता स्टैक हमारे 820 भाषाओं के लिए ग्रैफ़ीम-टू-IPA कार्य पर बनता है, जो TTS जो आलू पर चलता है और Miro और Dii बहुभाषी आवाज़ें के लिए ध्वन्यात्मक रीढ़ बनाता है।