உளியருவி – Tamil tools for AI/ML


In 2022 we are reaching a point where more Tamil datasets are available than Tamil tools – arunthamizh அருந்தமிழ். However the accessibility of fully-trained models and capability of providing pre-trained models are much harder and still require domain expertise in hardware and software. Personally I have published some small Jupyter notebooks (see here), and some simple articles, but they still remain inadequate to scale the breadth of Tamil computing needs in AI world among:

  1. NLP – Text Classification, Recommendation, Spell Checking, Correction tasks
  2. TTS – speech synthesis tasks
  3. ASR – speech recognition

While sufficient data exist for 1, the private corpora for speech tasks (அருந்தமிழ் பட்டியல்), the public corpora of a 300hr voice dataset recently published from Mozilla Common Voice (University of Toronto, Scarborough, Canada leading Tamil effort here) have enabled data completion to a large degree for tasks 2 and 3.

Ultimately the tooling provides capability to quickly compose AI services based on open-source tools and existing compute environment to host services and devices in Tamil space.


My proposal is the following:

  1. Develop a open-source toolbox for pre-training and task training specialization
  2. Identify good components to base effort
  3. Contribute engineering effort, testing, and validation
    1. R&D – DataScience, Infra, AI framework
    2. Engineering Validation – DataScience, Tamil language expertise
    3. Engineering – packaging, documentation, distribution
    4. Project management
  4. Library to be liberally licensed MIT/BSD
  5. Open-Source license for developed models
  6. Find hardware resources for AI model pre-training etc.
  7. Managed by a steering committee / nominated BDFL
  8. Scope – decade time frame
  9. TBD – மேலும் பல.


Let’s build a pytorch-lightning like API for Tamil tasks across NLP, TTS, ASR via AI.

Leave your thoughts by email ezhillang -at- gmail -dot- com, or in comments section.

Year in Review 2021

2021 was a difficult year for everyone surviving into second year of global pandemic; however for Tamil computing community had much progress; here is my take on it.

1Rust language supportTokenizer for REST rust_v0.1Jan 17th ’21
2open-tamil v1.0Release v1.0 : bug-fix pypi Apr 18th ’21
3tamilinayavaani v0.14Release v0.14 : pypiDec 5th ’21
4Book Translation of ‘Practical
Algorithms and Data Structures’
pending – typeset + copy-edit; 220 page bookNov ’21
5Relaunch Min Madurai Tamil appGoogle Play Store : linkSep 8 ’21
6Tutorial for TIC 20th – Keras AIBeginning AI applications: linkDec 4th ’21
Ezhil Language Foundation related activities in 2021

This year has been tough but we keep our head above the water for another challenging year 2022. I’m also happy to share I’ve volunteered to serve in the steering committee at INFITT organization to share some of open-source view points from my experience and some AI/ML strategies for developing our ecosystem.

Some of the major events by INFITT in 2021 are successful organization of Hackathon for college students at KCT in Kovai; 20th TIC organized virtually with good turnout and contributions from industry and academics.

Hope you are vaccinated, stay healthy, and in positive frame of mind to have a successful year and share some of your contributions to Tamil community.



அனிமா – ♀ – தமிழ் கணிமைக்கு மகளிர் பங்களிப்புகள்

அமெரிக்காவில் மார்ச்சு மாதம் மகளிர் வரலாறு மற்றும் பாரம்பரியம் அடைந்த வெற்றிகளையும் முன்னேற்றங்களையும் கொண்டாடும்/நினைவூட்டும் வகையில் அமைக்கப்பட நிகழ்வுகள் கொண்ட மாதம்.

பொதுவாக கணிமையில் பெண்கள் பல கண்டுபிடிப்புகளை கொண்டுசேர்த்து கணினி உலகை இன்று நாம் காணும் வகையில் சிறப்பித்துள்ளனர்; முக்கியமாக,

  1. அடா லவ்லேஸ் – முதல் கணினி நிரலர் – சார்ல்ஸ் பாபேஜுடன் பணியாற்றினார். காண்க
  2. கிரேஸ் ஹொப்பர் – முதல் கணினி கம்பைலரை (தொகுப்பான்) – உருவாக்கினார். காண்க
  3. பிரான்சஸ் அலன் – கணினி கம்பைலர்களில் SSA, CFG போன்ற பல சாதனை கண்டுபிடிப்புகளையும் நடைமுறை செயலிகளையும் உருவாக்கியவர். காண்க
  4. பார்பரா லிஸ்காவ் – கணினி மொழிகள் / நிரலாக்கத்தில் SOLID என்ற தத்துவார்த்த அடிப்படை கட்டமைப்புகளை கண்டெடுத்து இன்றும் அனைவரும் பயன்படுத்தும் கோட்பாடுகளை உருவாக்கியவர். காண்க
  5. ஷாபி கோல்டுவாஸ்ஸர் – கணினி ரகசிய தகவல் பரிமாற்றம், தகவல் தொடர்பாடல் போன்ற துறைகளில் சாதனையாளர். காண்க
கணிமை எனும் பூந்தோட்டம்; (C) 2021, முத்து அண்ணாமலை. இடம்: வட கலிபோர்னியா, மார்ச்சு 2021.

தமிழ் கணிமையில் ஆய்வு நிலையிலும் களப்பணிகள் அளவிலும் யார் என்னவான பணிகளை செய்து வருகிறார்கள்? எனக்குத்தெறிதளவு ஒரு சிறிய பட்டியல் ஆனால் சீறிய படைப்பாளர்கள்; இவர்கள் அனைவருமே சிறந்த பொறியியலாளர்கள்!

பெயர்முக்கிய பணிகள்நிறுவனம்ஆய்வுகட்டுரைகள், களப்பணிகள் தொடுப்பு
வி எஸ் ராஜம்தமிழ் மொழியியலில் தொல்காப்பியம் மற்றும் வடமொழி இலக்கண மரபுகளை ஒப்பிட்டு ஆய்வுகள் செய்தார். தமிழின் சிறப்பை மேற்கத்திய பல்கலைகளில் வெளிக்கொனற செய்தவர்ஓய்வு பெற்றவர்.
A Reference Grammar of Tamil Classical Poetry
டிவி கீதாதமிழ் கணினி ஆய்வுக்கூடம் (TACOLA) என்ற அமைப்பை அண்ணா பல்கலைக்கழகத்தில் தொடங்கி பல சிறந்த ஆய்வுகளை மேற்கொண்டார்; முக்கிய பங்களிப்புகளாக விளங்குவது சொல்திருத்தி, தமிழ் வேர்ச்சொல் பகுப்பாய்வு என்பதன் ஆய்வுகளை நடத்தியும் வெளியிட்டார்.அண்ணா
TACOLA ஆய்வு கூடம் நிறுவனர் – முக்கிய பங்களிப்புகளாக விளங்குவது சொல்திருத்தி, தமிழ் வேர்ச்சொல் பகுப்பாய்வு என்பதன் ஆய்வுகளை நடத்தியும் வெளியிட்டார். தொடர்ந்து ஒரு பெரிய ஆய்வு பரம்பரையையும் உருவாக்கியவர்.அண்ணா
சோபா லலிதா தேவிAU-KBC. உரை பெயர்/வினை சொல் பாகுபாட்டிற்கு பொன்னியின் செல்வன் காப்பியத்தை POS tagger ஆக உருவாக்கியவர். தமிழ், இந்தி, மலயாளம் கணிமையில் வல்லமை பெற்றவர். மேலும் தொடர்ந்து ஒரு பெரிய ஆய்வு பரம்பரையையும் உருவாக்கியவர்.AU-KBCகாண்க
நித்யா துரைசாமிதமிழ் சந்திப்பிழைதிருத்தியை உருவாக்கியவர். கணியம் நிறுவனர். திறமூல தமிழ்க்கணிமை பங்களிப்பாளர், தொழில் நுட்ப நூலாசிரியர் “எளிய தமிழில் .. ” என்ற நூல்வரிசையின் ஆசிரியர்.தனியார் நிறுவனம்காண்க
சுபலலிதா சி என்தமிழ் இலக்கணம் நன்னூல் வழி இயந்திர உரை ஆய்வுகள், செயற்கையறிவு வழி (AI/ML) சொல்-பொருட்பெயர் தரவகம் (NER) மற்றம் பல ஆய்வுகளை தமிழில் தொடர்ந்து நடத்தி வரும் ஆய்வாளர். TACOLA, KaReFo நிறுவனங்களுடன் இணைந்து ஆய்வுகள் நடத்துபவர்.SRM பல்கலைக்கழகம்காண்க

பத்மாவதி எஸ்
Pattern Recognition; பிரெயிலில் இருந்து தமிழ், ஆங்கிலம், இந்தி மொழிகளுக்கு தானியங்கி மாற்றி.ஆமிர்தா விஸ்வபீடம் பல்கலைக்கழகம்காண்க
மலர்கொடிகணினிவழி மொழியில் ஆய்வாளர். NER. பேரா. சோபா அவருடன் இணைந்து செயல்படுபவர்.AU-KBCகாண்க
தனலெஷ்மி விதமிழ் இலக்கணம், தமிழ் கணிமை, எந்திரவழி கற்றல், சங்க இலக்கியம் உரை ஆய்வுகள்கிருஷ்ணகிரி மகளிர் கலைக்கல்லூரி காண்க
அனிதா இரா.தமிழ் கணினிவழி மொழியியல், சொல்தேடல், சொல்பின்னல், செயற்கையறிவு கொண்டு சொற்றொடர் உணர்ச்சி கண்கானிப்பு,SRM பல்கலைக்கழகம்காண்க
தமிழ் கணிமைக்கு பங்காற்றிய பெண்களில் ஒரு பட்டியல்.

தமிழ் கணிமை எதிர்கொள்ளும் சிக்கல்கள் மட்டும் நமது செயல்பாட்டுத்திறன் போன்றவை குறைபாடாக உள்ளதால், தொடர்ந்து தமிழ்க்கணிமையில் நாம் அனைவரும் சிகரம் தொட்டிட அனைவரின் உதவியும் தேவை; ஆகையால், பொது இடங்களில், வலைபதிவுகளிலும், கருத்தரங்குகளிலும், மடல் பதிவுகளிளும் நாகரிகமாக, கருத்துவேறுபாடுகளை சமரசமாக கையாளும் நயத்துடன் ஒன்றுகூடி தேர் இழுக்கும் முறையில் செயல்படுதல் அவசியம். இடம் குடுப்போம், வளம் பெருவோம்!


கீழ்குறிப்பு: இந்த கட்டுரை எழுத உதவிய பேரா. சுபலலிதா அவர்களுக்கு நன்றி.

மென்பொருளுடன் உறவாட

2004-05 வாக்கில் திருச்சியில் படித்த காலம்; 2004-இல் எங்கள் திருச்சி GLUG என்பதை வழிநடத்திவந்த திரு. பி. விஜயகுமார் அவர்கள் பட்டம் பெற்று வேறு பணிகளுக்கு சென்றார். எங்களது கூட்டாளிகள் ஒரு நிரலாக்கம் போட்டியில் சேரலாம் என்று எண்ணி, பொறியியல் கல்லூரி படிப்பில் நெருக்கமான ஒரு மென்பொருளை தேர்வு செய்தோம்; அதாவது கனு-ஆக்டேவ் GNU Octave – இது MATLAB என்ற மென்பொருளுக்கு தோராயமான மாற்றாக விளங்கும் என்று எண்ணினோம். திட்டம் தொடங்க, அச்சமயத்தில் Octave-இக்கு ஒரு நல்ல திரை இடைமுகம் கிடையாத காலம் – அதில் வந்து GTK என்ற GUI Toolkitஐ இணைக்கலாம் என்பது திட்டம்; எங்கள் குழுவில் யாருமே கணினி பொறியியலில் வல்லுநர் கிடையாது – ஏதோ தட்டுத்தடுமாரி எப்படியோ படிப்படியாக மென்பொருளை “language bindings” என்ற தொழில் நுட்பம் கொண்டு செயல்படுத்திவிட்டோம்.

Octave-GTK, Octave-libglade bindings

அன்று திருச்சியில் மிகப் பெரிய பொறியியல் கல்லூரி என்றாலும், சிற்றுந்தில் ஏரி நெட்கபேயில் அருகிலுள்ள திருவெரும்பூரில் சென்று மட்டும் தான் SSH பொர்ட் 22 firewall தாண்டிய அனுமதி பெற்று இந்த திறமூல மென்பொருளை இணையத்தில், sourceforge-இல் தரவேற்றம் செய்ய வாய்ப்பு இருந்தது. இளங்கலை முடிந்த வாக்கில் இந்த போட்டியில் இரண்டாவது இடம் கொடுத்து அதில் கணிசமான (ஒன்றறை இலட்சம்) பரிசு தொகை குழுவிற்கு கொடுத்தார்கள்! நான் அன்றே அடுத்த விமானத்தில் அமெரிக்கா கிளம்பி ஒடியாந்துட்டேன். இன்றும் இதை நினைத்தால் வேடிக்கையாக இருக்கிறது.

ஓப்பன் தமிழ் என்று தொடங்கும் சமயம், அப்படி ஒரு சேவை இல்லையே என்று என்னால் நம்ப முடியவில்லை. சென்ற பத்தாண்டில் open-tamil, தமிழ்பேசு வலைதளம் என்றும் செயல்படுவதில் ஒரு மகிழ்ச்சி; இந்த தளத்தை Python3 என்றும் Django 3 என்றும் மேம்பாடு செய்தமையால் பல நவீன செயலிகள் – தமிழ் சந்திப்பிழைதிருத்தி, தமிழ் இணையவாணி சொல்திருத்தி, GNU Aspell சொல்திருத்தி போன்றவற்றை செயல்படுத்த முடிந்தது. கணியம் சயத் அபூதாகிர், சீனீ அவர்கள் தொடக்கிவைத்த இந்த வலைதளம் சிந்தனை மற்றும் கட்டமைப்பு, மற்ற மென்பொருள்களையும் பொது பயன்பாட்டிற்கு வழங்க உதவிகர்மாக இருக்கிறது. இந்த சமீபத்திய பதிப்பை வழங்க சூரேன் அவர்களும் குறிப்பிடத்தக்க பங்களிப்புகளை வழங்கியுள்ளார்.

இதனை செயல்படுத்தியவகையில் ஒரே கல்லில் இரண்டு மாங்காய் என்ற கதையாக இருக்கிறது; ஒரே{Tamil Sandhi Checker [சீனீ, நித்யா]} x {Spell Checker(s)} அதனை இரண்டு சொல்திருத்திகளுடன் (வாணி மேசைபதிப்பு/பைத்தான் வழி [ நீச்சல்காரன், சீனீ கணியம் குழு]) மற்றும் ஏஸ்பெல் [GNU ASpell, இளஞ்செழியன் தமிழா/மலேசியா குழுவினர்] இவற்றுடன் remix செய்து ஒரு புதிய சேவயை. http://tamilpesu.us அளிக்கமுடிகிறது என்பதுதான் திறமூல சூழலின் ஒரு பெரும்பலமாக இருக்கிறது.

எழில்-open-tamil contributors meetup (2018)

திறமூல மென்பொருள்களின் தொடக்கம் ஏதோ ஒரு உந்துதலினால் ஒரு இச்சையினால் தொடங்குகிறது. திறமூல மென்பொருட்களை அடிப்படை கட்டமைப்புகளில் பலரும் பொதுவாக அனுகி பயன்படுத்தும் வகைசெய்தால் மட்டும் “இனி மெல்ல தமிழ் வாழும், தமிழர் இணையத்தில் தழைக்கலாம், தமிழர்தொழில் நுட்பத்தின் வாயிலாக வல்லமை பெறலாம்” என்ற நிலை உறுதியாக வர வாய்ப்பு உண்டு. இந்த விஷயத்தில் தனியார் நிறுவனங்களும், அறக்கட்டளைகளும், தனியார்களும் தமிழக அரசைவிட, மற்ற நாடு அரசுகளைவிட, கண்டிப்பாக இந்திய அரசைவிட, ஊக்கம் அளிக்கக் கூடும். ஆனால் நாம் தொடர்ந்து தமிழ் கணினி /கலை ஆக்கங்களை ஊக்குவிவ்க வேண்டும். பண/அதிகார பலம் உள்ளவர்களிடத்தும் இதனை முறையிடுதலும் வேண்டும்.

மொழி வளர்க்க பாரதி சொன்னதுபோலும், “அச்சமில்லை …,”, அதை செயல்படுத்தல் திறமூல மென்பொருளில் எவருடைய தயவுதாட்சண்யையின்றி செயல்படும் நல்ல நிலை உருவாக்கும் என்ற எண்ணம்/நம்பிக்கை இருக்கிறது. கிட்டத்திட்ட மொழியின் வளர்ச்சி மாதிரிதான் மொழியியல் மென்பொருளும் வளர்கிறது.

பொது வீட்டின் முற்றத்தில் வேரேடுக்கும் ஆலமரத்தை, ஊக்குவிப்போம்! ஊர் ஒன்றுபட்டால் உண்டுவாழ்வு.

An Introduction to Tamil Computing

இன்று கொரொனா காலத்தில் ஒரு இணையவழி நேரலையில் தமிழ்க்கணிமையில் எப்படி செயல்படுவது என்பதைப்பற்றிய ஒரு அறிமுகப்படுத்தி பேச வாய்ப்பு கிடைத்தது. அழைப்புவிடுத்த பேரா. சுபலலிதா அவர்களுக்கு நன்றி.

காட்சிக்கோப்புகள் இங்கு.


2020 – Tamil Open Source conference

இன்று தமிழ் மாநாட்டில் “Open-Tamil – திறமூல தமிழ் நிரல் தொகுப்பு,” என்ற தலைப்பில் பேசுவேன்.

Open-Tamil – திறமூல தமிழ் நிரல் தொகுப்பு

    அருளாளன், சையது அபுதாகிர், பரதன் தியாகலிங்கம், சீனிவாசன், சத்தியா மகாதேவன், அருண்ராம், மற்றும் முத்து அண்ணாமலை.

அனுகும் மின்னஞ்சல்: ezhillang@gmail.com, நாள்: ஜீலை 1, 2020.

1. அறிமுகம்

ஒப்பன் தமிழ் என்பது ஒரு திற்மூல் நிரல் தொகுப்பு திட்டம். இது எழில் கணினி மொழியில் ஆக்கத்தை தொடர்ந்து தமிழில் பலரும் எளிதாக கணினி செயலிகளை பைத்தான் மொழியில் உருவாகவேண்டும் என்ற நோக்கில் எழிலின் ஒரு கீற்றாகப் பிறப்பெருத்தது. இந்த நிரல் திட்டம் முதலில் பைத்தான் மொழியில் வெளிவந்தது – பின்னர் சில சேவைகள் மட்டும் ஜாவா, ரூபி மொழிகளில் வழ்ங்கப்பட்டன் – எனினும் பெரும்பாலான வசதிகள் பைத்தான் மொழியின் வாயிலாகவே பெறமுடியும்.

படம். 1: தமிழ் பேசு திட்டத்தின் சின்னம்.

2. கட்டமைப்புகள்

இந்த நிரல்தொகுப்பிலுள்ள மொட்யூல்களாவன கீழோ. இவற்றின் முழு விவரங்களையும் காண http://tamilpesu.us/static/sphinx_doc/_build/html/sphinx_doc/ இங்கு செல்லலாம்.

1tamilTamil tokenization, word ordering, encoding converters, numerals, text summarizer.
2ngramcorpus modeling classes
3solthiruthiTamil spelling checker algorithms
4spellTamil spelling checker application
5tamilmorseMorse code generation, decoding for Tamil
6tamilsandhiTamil sandhi-checker – packaged with Open-Tamil but developed independently by Nithya and Shrinivasan.
7transliterateTamil transliteration tools
8tamilstemmerThis module is new in version 0.96 and provides access to simple stemmer functions originally created by Damodharan Rajalingam
9tabrailleTamil Braille generation following Barathia Braille standard
10kuralThirukkural source text and English translation


Open-Tamil source code examples like numeral to audio generation, ngram generation, corpus analysis etc. see link here.

3. வெளியீடு, உரிமம், நிறுவுதல்

2015-இல் முதல் வெளியீடு (வரிசை எண் 0.4) கண்டு பின்னர் இந்த ஆண்டு ஜூன் 12-இல் சமீபத்திய (ஒன்பதாம்) வெளியீடு (வரிசை எண் 0.97) கண்டது. இந்த நிரல் தொகுப்பு MIT உரிமம் வழியாக நீட்சி செய்தும், பகிர்ந்து மறுசெயல்பாட்டிலும் உபயோகிக்கலாம்.

சமீபத்திய வரிசை எண் 0.97-இல் வெளிவந்த புதிய அம்சங்களானவையாவன:

  1. மாத்திரை கணித்தல் – தமிழ் உரையில் உள்ள சொற்களின் மாத்திரை அளவை கணிக்க புதியசார்பு ‘tamil.utf8.total_maaththirai()’ என்று திரு. பரதன் தியாகலிங்கம் அவரால் பங்களிக்கப்பட்டது.
  2. வடமொழி சொல்பட்டியல் மோனியர்-வில்லியம்ஸ் அவரது அகராதியில் இருந்து திரிக்கப்பட்டு இங்கு சேர்க்கப்பட்டது
  3. ‘tabraille’ என்ற module-இல் கண்பார்வை குறை உள்ளவர்களினால் தமிழ் பாரத பிரெயில் என்ற தரத்தை கையாளும் வகை சில உத்திகள் உள்ளன.
  4. ‘kural’ என்ற module-இல் திருக்குறளை நேரடியாக கையாள சில உத்திகள் உள்ளன. இது 2013-இல் வெளிவந்த ‘libkural’ என்பதன் மீள்பதிவாகும்.

இதனை நிறுவ இப்படி கட்டளை கொடுக்கலாம்,

$ pip install open-tamil

ஏற்கனவே நிறுவியிருப்பின் புதிய அத்யாயத்தில் நிறுவ, என்றும் கொடுக்கலாம்.

$ pip install –upgrade open-tamil

4. வளர்ச்சி

ஓப்பன்-தமிழ் திட்டம் இதனைக்கொண்டு பல மென்பொருடகள் இன்று இயங்கிவருகின்றன – இவற்றில் முக்கியமானவை http://tamilpesu.us என்ற வலைத்தளம். இந்த நிரல்தொகுப்பில் இருந்து செயல்பாடுகளை மொத்தமாக வலைவழியாக தமிழ் ஆர்வலர்கள் கணிமை செய்யாமல் பயன்படுத்த இது உதவும்.

       படம் 2: ஒப்பன்-தமிழ் வழி உருவாக்கப்பட்ட தமிழ்பேசு வலைதளத்தில் உள்ள பெருக்கல் அட்டவனை செயலி.

ஒப்பன் தமிழ் கொண்டு பல தமிழ்இயல்மொழி ஆய்வுகள் (உதாரணமாக Tamil NLP, PyTamil) என்ற திட்டங்களும் செயல்படுகின்றன. இது எங்களுக்கு தெறித்தவை மட்டுமே!

5. பங்களிப்பாளார்கள்

மற்ற திற மூல மென்பொருட்களைப்போலவே ஒப்பன்-தமிழ் இதன் உருவாக்கம், மற்றும் வளர்ச்சி கிட் வலைத்தளத்தில் வழியாக நிர்வாகிக்கப்படுகிறது. இதன் சுட்டி – 


எழில் மொழி அறக்கட்டளையின் பார்வையில் இது மேம்படுத்தப்பட்டாலும், இதன்வழியாக பத்துக்கும் மேற்பட்ட பங்களிப்பாளர்கள் உள்ளனர்.இந்த திட்டம் ஏரக்குறைய 800 பங்களிப்புகளை பெற்றும், 114 வழு/திறணாம்சங்களையும் முடிவுபடித்தியும், மேலும் 82 திறணாம்சங்களை ஒழுங்கு செய்தும் வடிவமைப்புக்காக குறிக்கப்பட்டுள்ளன. 

இந்த திட்டத்தை அனைவரும் தொடர்ந்து பயன்படுத்தியும், ஆதரிக்குமாரும் கேட்டுககொள்கிறோம்.

சிந்திக்கவைக்கும் ஆய்வுகள்

தமிழ் கணிமையில் பல கட்டுரைகள் வருகின்றன – அவற்றில் சில கட்டுரைகள் ஒரு முற்றிலும் வேறுபட்ட சிந்தனைகளை முன்வைக்கும்; பல கட்டுரைகள் முன்னோர் சென்றவழியில் எளிதாகவும், சிறப்பாகவும், சிக்கனமாகவும் (கணினியளவில்) மற்றும் பொருளாதார, நுகர்வோர் அணுகுமுறை என்றபடியாக உள்ள புதுமைகளை விளக்கும்.

இந்த சில கட்டுரைகள் செல்லாத இடத்திற்கு, முற்றிலும் வேறுபட்ட சிந்தனைகளை முன்வைப்பவைகளில் சிலவற்றைப்பற்றி இன்று பார்க்கலாம்.

படம் 1: எழில் மொழி திருத்தியில் உள்ள தமிழ்-99 விசைப்பலகை. 

தமிழ்-99 விசைபலகைக்கு ஒரு மேம்பாடு என்ற படியாக 2004-இல் நடந்த தமிழ் கணிமை மாநாட்டில் இந்த (clj-thamil படைத்த இளங்கோ சேரன் குழுவினரால்) கட்டுரை “Optimization of Thamil Phonetic Keyboard.” இதில் ஆசிரியர்கள் கூறியதாவது, தமிழ்-99 விசையில் மெய்களுக்கு பதில் அகர-மெய்களை விசைப்பலகையில் பொருத்தினால் சிக்கனமாக (விசை தட்டச்சு செய்யும் எண்ணிக்கையில் குறைவாக) ஒரு குறிப்பிட்ட உரையை இந்த மாற்று விசைப்பலகையில் உள்ளீடு செய்யலாம் என்று கண்டெடுத்தார்கள். ஆனால் இதை உள்வாங்கி எதுவும் செய்யவில்லை.

new vistas:The iTamil project aims to make the Tamil script easy to learn, print and display, among other things —Photo: Special Arrangement
படம் 2: iTamil – என்ற தமிழ் எழுத்துரு மாற்றம் பற்றிய  தடைசெய்யப்பட்ட 2016 கட்டுரை. படம்: இந்து நாளிதழ்

அடுத்த கட்டுரைக்கு மேர்கோள் என்க்கு கிடைக்கவில்லை, KaReFo-குழுவினரால் “iTamil,” (2016) ; ஆனால் அதன் சாராம்சமாவது தமிழின் உயிமெய் எழுத்து வடிவத்தை முற்றிலுமாக மாற்றியமைக்க ஒரு ஆய்வு பரிந்துரை சமர்ப்பிக்கப்பட்டது. ஆனால் இந்த கட்டுரை 2016-ஆம் ஆண்டு நடந்த தமிழ் கணிமை மா நாட்டில் வாசிப்பு பெற்றாலும் அது பின்னர் நீக்கம் ஆயிற்று – காரணம் இதனை ஆய்வளவில் கூட தமிழ் சமுகம் ஏற்கக்கூடாது என்றோரு தரப்பின் வாதம் வெற்றி பெற்றதன் காரணம். இந்த சர்ச்சைக்கும் அப்பால் அவர்கள் சொன்ன கோரிக்கை, ஆய்வுகளை பார்க்க இந்த செய்தி உபயோகரமாக வரலாற்று சின்னமாக அமைகிறது.

ஆய்வுக்களத்தில் சிந்திக்கலாம்தானே! அதை நடைமுறைப்படுத்தவேண்டுமானால்தானே மேலும்/கூடுதல் விவாதங்கள் தேவை? சிந்தனையே தடைசெய்யப்படவேண்டுமெனில் தமிழருக்கும் தலிபனார்களுக்கும் வித்தியசமென்ன?

சில ஆய்வுகள்

“Tamil Vowel Recognition With Augmented MNIST-like Data Set,” https://arxiv.org/abs/2006.08367

சமிபத்தில், கவிஞர் சல்மா வரிகள் போல, எல்லாரும் வௌவால்களா இந்த கொரொனாவினால் நிலைகுலைந்தனர். அவர்களின் நீண்ட பட்டியலில் நானும் ஒருவன் – ஆனால் அதிகளவு பாதிப்பு ஏதுமில்லை – வீடு, வாசல், சோறு, தண்ணி இதுக்கெல்லாம் திண்டாட்டம் இல்லை என்றாலும், இங்கு அமெரிக்க மண்ணில் 20% வேலையிழந்த பலரையும் போல் வேலைக்கு மட்டும் காவுவாங்கிட்டேன்.

சரி. இந்த நேரத்தில் மற்ற சிலபல செயல்கள் முடிவில்லாமல் தொடங்கியதை முடித்துவைக்க சில படிகள் எடுக்க நேரம் கிடைத்தது. மேலோகத்தில் இருப்பவன், என்றும் அதை நப்புபவர்கள், ஒரு கதவை மூடினால் மற்றொரு கதவை திறப்பார் என்றபடியாக இது தமிழ் வெளியில் எப்போதும் நம்மளை கொண்டு சேர்த்தது.

மொத்தம் 3-ஆய்வுகள், பெரும்பாலும், முடிவு பெற்ற நிலையில் இருந்தன; அவையாவன,

கட்டுரை தலைப்பு – PDF கோப்புகள்
1Tamil Vowel Recognition With Augmented MNIST-like Data Set
2Generation and Parsing of Number to Words in Tamil
3Algorithm to Correct Missing ​Pulli​-Signs in Printed Tamil Text
கொரோனா காலத்தில் உண்டாக்கிய ஆய்வுக்கட்டுரைகள்
  1. தமிழ் உயிரெழுத்துக்கள் செயற்கைப்பின்னல் வழியாக திறன்கண்டுகொள்வது. இதை, ஜூன் 2019-இல் தொடங்கிய ஒரு ஆய்வு என்றாலும் இந்த மூன்று கால இடைவெளியில் தான் இன்று முடிவடைந்தது. இதனை ArXiV-இல் கற்பூரம் மீது சத்தியமிட்டாமல் ஏழு நாள் தாமதத்துடன் வெளியானது. தலைப்பு: “Tamil Vowel Recognition With Augmented MNIST-like Data Set,” https://arxiv.org/abs/2006.08367
  2. அடுத்த கட்டுரை “Generation and Parsing of Number to Words in Tamil”, இதை ArXiV ஏற்க மறுத்தது – காரணம் எங்கள் வாசகர்களுக்கு இது சுவாரசியமானதல்ல என்ற சாக்கைச்சொல்லி மழுப்பினார்கள். இதை நான் மற்றொறு மொழியியல் மாநாட்டிற்கு அனுப்பியுள்ளேன் – என்ன விளைவு என்று பார்க்கலாம்.
  3. அடுத்த கட்டுரை “Algorithm to correct missing pulli signs in printed Tamil text,” என்பது [2] போல் அதே கதி. பார்க்கலாம்.
  4. கடைசியாக எழுத நினைத்தது ஆனால் நேரம் கிடைக்கவில்லாமல் போனது என்றால் “தமிழில் சொற்களை ஒலி எண்களாக பிரிப்பது” (Syllable identification) என்பதை bigram/unigram என்ற எழுத்தளவான புள்ளியியல் வடிவில் கொண்டு இவற்றை செயல்படுத்துவது. இதற்கு உங்களுக்கு ஆர்வம் இருந்தால் என்னுடன் இணைந்து செயல்படலாம் வாங்க.

இந்த பேரிடர் காலகட்டத்தில் என்னை அடைக்கலம் கொடுப்பதில் ஒன்று மொழி, மொழியியல் அதில் வசிக்கும், செயல்படும் அஞ்சா நெஞ்சர்கள். இதையும் காலம் கடந்து செல்வோம். உருதுணையாக இருந்தவர்கள் அனைவருக்கும் நன்றி.


தமிழ் உரை சம்பந்தமான சில புதிர்கள் (4) – எண்கள்

1. மொழியின் போக்கு

சில தலைப்புகளில் தமிழ் உரை சிக்கல்கள் அதனைக் கையாளும் ஒரு யுகிப்புகளையும் ஏற்கணவே கண்டோம். தமிழ் அறிவாளிகளிலும், எழுத்தாளர்களிலும் ஒரு தனியிடம் வகிக்கும் ஐயா திரு. நாஞ்சில் நாடன் (அவர் முதுகலை புள்ளியியளாளர் என்பதால் எண்களில்/பொறியாளர்களுக்கு நெருக்கமானவராகவும் சற்று அவரை காணத்தோன்றுகிறது) சில ஆண்டுகளுக்கு முன்பு தமிழில் புழக்கப்படும் சொல்வளம் வெரும் முன்னூரு சொற்கள் மட்டும் தான் என்று திடுக்கிடும்படி சொன்னார். இதனை, ஒரு கம்பராமாயண படித்து உரை எழுதிய அறிஞர்/வித்தகரிடம் இருந்து வருவது மிக முக்கியமான ஒரு மொழியின் போக்கைப்பற்றிய விமர்சனம்.

அதாவது தற்காலிக தமிழில் சுமார் மூன்று இலட்சம் சொற்கள் இருக்கு என்றால் அதில் 1/10 சதவிகிதம், அதாவது 0.1% சொற்களை மட்டும் தான் நாம் புழக்கப்படுத்துகிறோம் அவ்வை எப்படி போர்கிடங்கில் உள்ள ஆயுதங்களை பற்றி விமர்சித்தாள் என்றது போல் நாஞ்சில் அவரது கூற்றை நாம் எடுத்துக்கொள்ளலாம். தமிழில் யாரும் ஒரு சொல்லாடல் கணக்கொடுப்பு அல்லது இயல்மொழி பகுப்பாய்வு கணக்கெடுப்பு மென்பொருளை உருவாக்கினால் அதற்கு நாஞ்சில் என்று பெயருடிங்கள்.

இந்த வாரம் கொரோனாவினால் உலகெங்கும் ஊரடங்கில் இருக்கின்றோம். சில தமிழ் கணினியாளர்கள் நங்கள் இணையம் வழி சந்திப்பு நடத்தினோம் அதன் வீடியோ இங்கு பதிவில் காணலாம். இந்த சந்திப்பின் படம் இந்த கட்டுரையின் தலைப்பில் காணலாம்.

2. இடைவெளி எண்கள்

இந்த வாரம் எனக்குப் புலப்படும் சிக்கல் இதோ: இடைவெளி எண்கள் – அதாவது ஒரு மதிப்பினை தோராயமாக நாம் குறிக்கும் போது – “எவ்வளது நாள் ஆகும் இந்த பொருள் வீடுசேர?” “சுமார் பத்துப்பதினைந்து நாட்களில் வரும்” – என்றபடி நாள்தோரும் நாம் கேட்கின்றோம். இதனை கணினியில் எப்படி இயல்மொழி உணரலாம் ?

  1. நூறு-இருனூறு கொடுத்து அனுப்புங்க” (வணிகம்)
  2. பத்து-ஐஞ்சு ஆகலாம் – ஆனால் ஒன்னும் தேராது.” (வணிகம்)

மேலும், இவற்றில் எப்போதும் கீழ்வரிசையில் மட்டுமா வரும் ? (வெக்கை நாவலில் பூமணி, பத்து-ஐஞ்சு  என்ற சொலவம் பயன்படுத்துகிறார்). இவை இரண்டிற்கும் ஒரே மாதிரியான அல்கோரிதம்

3. எண்கள்

இதில் திறித்துப் பார்த்தால் மற்றுமொரு கேள்வி இருக்கின்றது: தமிழில் சில எண்களை அதிகம் பேசப்படுகின்றன:

  1. ஆயிரத்தெட்டு காரணம் சொல்லாம் – ஆனால் ஒப்புக்கொள்ளமுடியாது” (பொதுவெளி)
  2. நூற்றிஎட்டு தேங்காய் உடைக்கனும்,” “வாரணம் ஆயிரம்” … (ஆன்மீக வெளிப்பேச்சு)

இடம் சூட்டும் எண்கள் (ordinals) என்பவையும் உள்ளன – அதாவது,

  1.  “இந்தக்குதிரை டெர்பி போட்டியில் முதல் இடத்தை பிட்காமல் மூன்றாம் இடத்தில் வந்தது; அனைத்து சூதாட்டக்காரர்களும் தங்களது முதலீட்டை முழுசாக இழந்தனர்.”
  2. “நீ முதலாவதா தேர்தலின் வராட்டியும் பத்தாவதிற்குள் வந்து வாக்குப்பிளவிக்கனும்; இல்லாவிட்டால் கட்சியில் இருந்து நீக்கம் செய்வோம்.”

4. சொல்வழி கணிதம்

உதாரணமாக எங்கு நாம் இந்த எண்களை உரைவடிவில் இருந்து புரிந்து கொள்ள வேண்டும் என்றால் ஒலிவழி உணரியின் வழியாக கணிதம் செய்தல் என்றபடி இது தேவைப்படுகிறது. இதனை automatic speech recognition (ASR) என்றும் சொல்லலாம்.

உராணம், எப்படிஇந்த ஒலிவழி சொல்லப்பட்ட கூற்றை கணித்து ஒலிவழி விடைஅளிப்பது?

ஓர் ஆயிரம் கழித்தல் ஐந்து பெருக்கல் (ஒன்பது கூட்டல் ஒன்று)

முதலில் தமிழ் எண்களை கணினியில் உணரவேண்டும் – இதனை ஓப்பன்-தமிழ் வழி செய்யலாம். பின் இரும-நிலை மரம் (binary tree parsing and post-order traversal) அல்லது பைத்தான் மொழி eval என்ற கட்டமைப்பின் வழியாக எளிதில் கணக்கிடலாம். முழு நிரல்

# This Python file uses the following encoding: utf-8
#!/bin/env python3
# (C) 2020, எழில் மொழி அறக்கட்டளை
# இந்த நிரல் ஓப்பன்-தமிழ் நிரல் தொகுப்பில் சேர்ந்ததாகும்.
# உரைவழி தமிழ் எண்களினை கொண்ட கணிதவியல்
# உள்ளீடை கணக்கிடும் ஒரு கருவி.
import operator
import re
import tamil
def அச்சிடு(_): print(_)
def கணி(_): return eval(_)
செயல்சார்புகள் = {"கூட்டல்"😦'+',operator.add),"கழித்தல்"😦'-',operator.sub),
"பெருக்கல்"😦'*',operator.mul), "வகுத்தல்"😦'/',operator.truediv)}
அதிக_பட்சம் = 1001
இலகுவான_எண்கள் = {}
for எண் in range(அதிக_பட்சம்):
இலகுவான_எண்கள்[ tamil.numeral.num2tamilstr(எண்) ] = எண்
வழுநீகால்_இயக்கம் = True
def கணக்கிடு( _தொடர் ):
தமிழ்_உரை_தொடர் = re.sub('\s+',' ',_தொடர்)
# செயல்சார்புகளை குறியீடுகளாக மாற்றவும்
for பெயர்,எண் in செயல்சார்புகள்.items():
தமிழ்_உரை_தொடர் = தமிழ்_உரை_தொடர்.replace(பெயர்,எண்[0])
for பெயர்,எண் in இலகுவான_எண்கள்.items():
தமிழ்_உரை_தொடர் = தமிழ்_உரை_தொடர்.replace(பெயர்,'%g'%எண்)
if வழுநீகால்_இயக்கம்:
விடை = கணி(தமிழ்_உரை_தொடர்)
அச்சிடு(tamil.numeral.num2tamilstr( விடை ) )
return விடை
if __name__ == "__main__":
assert 2 == கணக்கிடு("ஒன்று கூட்டல் ஒன்று")
assert 21 == கணக்கிடு("ஒன்று கூட்டல் இரண்டு பெருக்கல் பத்து")
assert 950 == கணக்கிடு("ஓர் ஆயிரம் கழித்தல் ஐந்து பெருக்கல் (ஒன்பது கூட்டல் ஒன்று)")
© 2020 GitHub, Inc.
view raw olini.py hosted with ❤ by GitHub

5. முடிவு

சமிபத்தில், ஊரடங்கின் உச்சியான சமயத்தில் உடற்பயிற்சி செய்து கொண்டிருக்கும் சமயம் ஒரு சிந்த்தனை – அதனை நினைத்துப் பார்க்கவே வியப்பாய் இருந்த்தது -“{உங்கள் நாட்டின்/மாநில} அரசு தமிழ் மொழியின் வளர்ச்சியை ஆதரிக்கிறதா?” என்ற கேள்வி. நான் பருகியிருந்த காப்பியை முழுங்கமுடியவில்லை – விடை என்னிடம் இல்லை. மொழி என்பது நாம் பயன்பாட்டில் – அரசு உத்தரவில் கிடையாது. சிந்தைவெளியில் வளர்ச்சியை மந்தைவெளியின் ஊக்கத்தில் பார்ப்பது தவறு என்றும், அரசின் பொருப்பு பதவியை தக்கவைத்துக்கொள்வது என்பதும்தான் தினசர் நிஜமாக உலகெங்கும் உள்ளது. தனி நபர் முயற்சியால் சில செயல்பாடுகளை எதிர்கொள்ளலாம் ஆனால் தமிழ் என்றும் சீன மொழிமாதிரி ஆகும் என்றேல்லாம் பகல்கணவுகள் காண எனக்கு உடன்படாது.

தமிழ் உரை சம்பந்தமான சில புதிர்கள் (3) – மறைந்த மெய் புள்ளிகள்

இந்த வார பகுதியில் ஒரு வித்தியாசமான சிக்கலைப்பற்றி பேசலாம், முன்னரே எழுதிய பகுதிகளை இங்கு காண்க; அதாவது ஒரு எழுத்துணரியின் வழியாக தயாரிக்கப்பட்ட தமிழ் சொற்றொடரில் சில சமயம் மெய் புள்ளிகள் மறைந்துவிடுகின்றன. இது சற்றி இயந்திர கால சிக்கல் என்றால் அப்போது கல்வெட்டுக்களிலும் நூற்றாண்டின் நாளடைவில் இப்படிப்பட்ட சிக்கல்கள் தோன்றுகின்றன; ஆகவே இது தனிப்பட்ட ஒரு சிக்கல் இல்லை என்பதும் புலப்படுகின்றது. இந்த வலைப்பதிவில் உள்ள அல்கோரிதத்தை இங்கு ஓப்பன் தமிழ் நிரலாக காணலாம்.

1. அறிமுகம்

எனக்கு இந்த சிக்கல் இருப்பதன் காரணம், 1910-இல் ஆர்டன் பாதரியார் இயற்றிய “A progressive grammar of common Tamil,” என்ற நூலின் மறுபதிப்பு பிரதியில் சில/பல சொற்கள் விட்டுப்போயிருந்தன. மறுபதிப்பு செய்யும் நிறுவனமோ, கலிபோர்னியா லாசு ஏஞ்சலஸ் பல்கலைக்கழகத்தில் உள்ள பிரதியினில் இருந்து எப்படியோ (கூகிள் புத்தகங்கள் வழியாகவா?) ஒரு புத்தகத்தின் மின்வடிவத்தை சரிபார்க்காமல் அப்படியே அச்சு செய்து அமேசான் சந்தையில் விற்று அதுவும் என் கைக்கு கிடைத்தது. பல இடங்களில் மெய் புள்ளிகளின் மறைவு – சொற்பிழைப்போல் பாவிக்கும் இந்த பிழைகள் இந்திர வழி செயல்திருத்தத்தால் நுழைக்கப்பட்டவை. நுழககபபடடவை!

மெய் புள்ளிகளின்றி செம்புலப்பொயல்நீரார் கூற்றி சங்க இலக்கியத்தில் இருந்து இப்படியே தோன்றும்,

யாயும ஞாயும யாராகியரோ

எநதையும நுநதையும எமமுறைக கேளிர

இதனை எப்படி நாம் சீர் செய்வது? இதுதான் நமது இன்றைய சிக்கல்.

2. அல்கோரிதம்


  • சொல் என்பதை எழுத்துச் சரமாக தறப்படுகிறது. இதனை சொ என்ற மாறியில் குறிக்கின்றோம்.


  • மறைந்த மெய்கள் இருந்தால் அவற்றை மற்றும் திருத்தி புதிய சொல் வெளியீடு செய்வதற்கு.

அல்கோரிதம்  முன்-நிபந்தனைகள்

  1. உள்ளீட்டு சரம் என்பதில் வேறு எந்த சொற்பிழைகளும் இல்லை
  2. சரம் என்பதின் இடம் ‘‘ என்பதில், சரம் எழுத்து சொ[இ] என்ற நிரலாக்கல் குறியீட்டில் சொல்கின்றோம்.
  3. சரம் எழுத்து சொ[இ], தமிழ் எழுத்தாக இல்லாவிட்டால் அதனை நாம் பொருட்படுத்துவதில்லை
  4. சரம் எழுத்து சொ[இ], உயிர், மெய், உயிர்மெய் (அகர வரிசை தவிர்த்து), ஆய்த எழுத்து என்றாலும் அவற்றில் எவ்வித செயல்பாடுகளையும் செய்யப்போவதில்லை
  5. ஆகவே, சரம் எழுத்து சொ[இ] என்பது உயிர்மெய் எழுத்தாக அதுவும் அகரவரிசையில் {க, ச, ட, த, ப, ர, .. } இருந்தால் மட்டும் இதனை செயல்படுத்துகின்றோம்.

அல்கோரிதம்  செயல்பாடு

  1. மேல் சொன்னபடி, நாம் கண்டெடுக்க வேண்டியது உள்ளீட்டு சரத்தில் அகரவரிசை உயிர்மெய்களில்  சரியான உயிர்மெய் எழுத்து வருகிறதா அல்லது மெய் புள்ளி மறைந்து வருகிறதா என்பது மட்டுமே!
  2. இதனை சறியாக செய்தால் அடுத்த கட்டமாக பிழைஉள்ள இடங்களில் புள்ளிகளை சேற்றுக்கொள்ளலாம்
  3. மேல் உள்ள 1-2 படிகளை அனைத்து சொல்லின் அகரவரிசை உயிமெய்களிலும் சயல்படுத்தினால் நமது தீர்வு கிடைக்கின்றது.

இதன் மேலோட்டமான ஒரு முதற்கண் தீற்வை பார்க்கலாம் (இதனை மேலும் சீர்மை செய்ய வேண்டும்),

அல்கோரிதம் இதற்கு ஒத்தாசை செய்ய மேலும் கூடிய அல்கோரித செயல்முறைகளான “அகரவரிசை_மெய்”, “புள்ளிகள்_தேவையா” மற்றும் “புள்ளிகள்_சேர்” என்றவற்றையும் நாம் சேரக்க்வேண்டும்.

நிரல்பாகம் மறைந்த_மெய்_புள்ளியிடல்( சொல் )

திருத்தம்_சொல் = ""

@(சொல் இல் எழுத்து) ஒவ்வொன்றாக
   விடை = 0
   @( அகரவரிசை_உயிர்மெய்( எழுத்து ) ) ஆனால்  
      விடை = புள்ளிகள்_தேவையா( சொல், எழுத்து )
   @( விடை ) ஆனால்
      திருத்தம்_சொல் += புள்ளிகள்_சேர்( எழுத்து )
      திருத்தம்_சொல் += எழுத்து
பின்கொடு திருத்தம்_சொல்

நிரல்பாகம் அகரவரிசை_உயிர்மெய்( எழுத்து )
   அகரவரிசை_உயிர்மெய்கள் = 'கசடதபறயரலவழளஞஙனநமண'
   பின்கொடு அகரவரிசை_உயிர்மெய்கள்.இடம்(எழுத்து) != -1

நிரல்பாகம் புள்ளிகள்_சேர் ( எழுத்து )
   அகரவரிசை_உயிர்மெய்கள் = 'கசடதபறயரலவழளஞஙனநமண'
   அகரவரிசைக்குள்ள_மெய் = ['க்','ச்','ட்','த்','ப்','ற்',
                         'ய்', 'ர்','ல்','வ்','ழ்','ள்',
                         'ஞ்', 'ங்', 'ன்','ந்','ம்','ண்']
   இடம் = அகரவரிசை_உயிர்மெய்கள்.இடம்( எழுத்து )
   பின்க்கொடு அகரவரிசைக்குள்ள_மெய்[ இடம் ]

பொதுவாக நம்மால் புள்ளிகள்_தேவையா என்ற செயல்பாட்டை சரிவர முழு விவரங்களுடன் எழுதமுடயாது. இது கணினிவழி உரைபகுப்பாய்வுக்கு ஒரு தனி கேடு. அதனால் நாம் புள்ளியியல் வழி செயல்படுவது சிறப்பானது/சராசரியாக சரிவர விடையளிக்கக்கூடிய செயல்முறை.

3. மாற்று அல்கோரிதம்

மேல் சொன்னபடி உள்ள கட்டமைப்பில் புள்ளிகள் தேவையா என்பதன் ஓட்ட நேரம் (runtime), கணிமை சிக்கலளவு (computational complexity) பற்றி பார்க்கலாம்.

உதாரணமாக, “கண்னன்” என்று எடுத்துக்கொண்டால் அது அச்சாகுமபொழுது “கணனன” என்று அச்சாகிறது என்றும் கொள்ளலாம். நமது அல்கோரிதத்தின்படி இதில் நான்று இடங்களில், அதாவது அத்துனை எழுத்துக்களுமே அகரவரிசை உயிமெயகளாக அமைகின்றன. இவற்றில் எந்த ஒது எழுத்தும் உயிர்மெய்யாக இருக்கலாம் (அச்சிட்டபடியே), அல்லது மாறியும் புள்ளி மறைந்த மெய்யாகவும் இருக்கலாம்.

அதாவது, “கணனன” என்ற சொல்லை மொத்தம் உள்ள வழிகளாவது இவற்றின் பெருக்கல்:

என்ற எழுத்தில் இரண்டு வழிகள்

என்ற எழுத்தில் இரண்டு வழிகள்

என்ற எழுத்தில் இரண்டு வழிகள்

என்ற எழுத்தில் இரண்டு வழிகள்

மொத்தம் 2 x 2 x 2 x 2 = 24 = 16 வழிகள் உள்ளன.

இதனை பொதுப்படுத்தி சொன்னால்,

  • நீ என்ற எண் நீளம் உள்ள சொல்லில் (அதாவது, நீ = |சொல்|) என்ன நடக்கின்றது என்றால்,
  • நீ1 என்ற எண் சொல்லின் உள்ள அகரவரிசை உயிர்மெய்களை குறிக்கும் என்றால், 
  • நீ1 ⩽  நீ,
  • மொத்தம் நாம் பரிசோதிக்க வேண்டிய வழிகள், 2நீ1

இது விரைவில் பொறிய அளவு வளரும் ஒரு தொகை, இதனை exponentially fast, அதிவேகமாக வளரும் கணிமை என்றும் சொல்லாம். இதற்கு என்ன செய்ய வேண்டும் என்றால் இதனை எளிதாக வழிகள் தோன்றும் படி மட்டும் விடைகள் தேடினால் நமது செயல்பாடு விரைவில் முடியவே முடியாது – இதற்காக branch and bound என்ற செயல்முறைகளை பயன்படுத்தவேண்டும்.

#இந்த நிரல்பாகம், 2நீ1 என்ற ஓட்ட நேரத்தில் இயங்கும்
நிரல்பாகம் புள்ளிகள்_தேவையா_உதவியாளர்( முதல்_ஒட்டு, சந்தித்காதவை )
   @( நீளம்( சந்தித்காதவை ) == 0 )
         பின்கொடு [முதல்_ஒட்டு]
   விடைகள் = []
   எழுத்து = சந்தித்காதவை[0]
   @( அகரவரிசை_உயிர்மெய்( எழுத்து ) ) ஆனால்
         #உள்ளபடியே இந்த இடத்தில் மெய் இல்லை என்றவழியில் யுகிக்க
         விடைகள்1 = புள்ளிகள்_தேவையா_உதவியாளர்(முதல்_ஒட்டு + எழுத்து, சந்தித்காதவை[1:])
         விடைகள்.நீட்டிக்க( விடைகள்1 )

         #உள்ளபடியே இந்த இடத்தில் மெய் வந்தால் எப்படி இருக்கும் என்ற்வழியில் யுகிக்க
         மெய்எழுத்து = புள்ளிகள்_சேர்( எழுத்து )
         விடைகள்2 = புள்ளிகள்_தேவையா_உதவியாளர்(முதல்_ஒட்டு + மெய்எழுத்து, சந்தித்காதவை[1:])
         விடைகள்.நீட்டிக்க( விடைகள்2 )
         விடைகள்3 = புள்ளிகள்_தேவையா_உதவியாளர்(முதல்_ஒட்டு + எழுத்து, சந்தித்காதவை[1:])
         விடைகள்.நீட்டிக்க( விடைகள்3 )
   பின்கொடு விடைகள் 

நிரல்பாகம் மறைந்த_மெய்_புள்ளியிடல்(சொல்)
    #யுகிப்பு சார்பு என்பது n-gram புள்ளியியல் கொண்டு 
    #சொல்லின் புள்ளிகள் சோர்க்கப்பட்ட மாற்றங்களை மதிப்பிடும்.
    மாற்று_சொற்கள் = புள்ளிகள்_தேவையா_உதவியாளர்( '', list(சொல்) )
    மதிப்பீடுகள் = யுகிப்பு_சார்பு( மாற்று_சொற்கள் )
    இடம் = அதிக_மதிப்பெண்_இடம்( மதிப்பீடுகள் )
    சரியான_மாற்று_சொல் = மாற்று_சொற்கள்[ இடம் ]
    பின்கொடு சரியான_மாற்று_சொல்

மேல் சொல்லப்பட்டபடி கணினி அல்கோரிதப்படுத்திப்பார்த்தால் ‘கணனன’ என்ற சொல்லிற்கு, 16 மாற்றுகள் கிடைக்கும். அவையாவன,


இந்த விடையின் மாற்று சொற்களை unigram அல்லது bigram யுகிப்பு சார்புகளின்படி மதிப்பிட்டால் கீழ்கண்டவாறு கிடைக்கின்றது,

[(‘க்ண்ன்ன்‘, 28.0),
(‘க்ணன்ன்’, 24.83912971793407),
(‘க்ண்னன்’, 24.39197168659185),
(‘க்ண்ன்ன’, 24.0),
(‘கண்ன்ன்’, 23.60384297446045),
(‘க்ணனன்’, 21.231101404525926),
(‘க்ணன்ன’, 20.83912971793407),
(‘கணன்ன்’, 20.44297269239452),
(‘க்ண்னன’, 20.39197168659185),
(‘கண்னன்‘, 19.9958146610523),
(‘கண்ன்ன’, 19.60384297446045),
(‘க்ணனன’, 17.231101404525926),
(‘கணனன்’, 16.834944378986375),
(‘கணன்ன’, 16.44297269239452),
(‘கண்னன’, 15.995814661052302),
(‘கணனன’, 12.834944378986375)]
(‘க்ண்ன்ன்’, -11.553147747485053)]

இந்த சமயம் நமக்கு சரியான விடைகிடைக்கவில்லை; இதனுடன் அகராதிபெயர்கள் அல்லது classification செயற்கைப்பின்னல்களை பயன்படுத்திப்பார்க்கலாம் என்றும் தோன்றுகிறது.

இந்த அல்கோரிதத்தை ஓப்பன்-தமிழ் பைத்தான் நிரலாக எழுதினால் இப்படி:

# -*- coding: utf-8 -*-
# (C) 2020, முத்து அண்ணாமலை.
# இந்த நிரல் துண்டு MIT உரிமத்தில் வெளியிடப்பட்டது
import tamil
from pprint import pprint
import operator
from solthiruthi.scoring import bigram_scores, unigram_score
chol = tamil.utf8.get_letters("கணனன")
def mean(x):
return sum(x)/float(len(x))
def pulligal_helper(prefix,letters):
if len(letters) == 0: return [prefix]
letter = letters[0]
result = []
if letter in tamil.utf8.agaram_letters:
result1 = pulligal_helper( prefix + letter, letters[1:])
mei_letter = letter + tamil.utf8.pulli_symbols[0]
result2 = pulligal_helper( prefix + mei_letter, letters[1:])
result1 = pulligal_helper( prefix + letter, letters[1:])
return result
def pulligal_branch_bound(prefix,letters,அகராதி):
""" we restrict options if its not a prefix in dictionary """
if len(letters) == 0: return [prefix]
letter = letters[0]
result = []
prefer = அகராதி.starts_with(prefix)
if letter in tamil.utf8.agaram_letters:
alternate2 = prefix + mei_letter
if அகராதி.starts_with(alternate2) or prefer:
mei_letter = letter + tamil.utf8.pulli_symbols[0]
result2 = pulligal_branch_bound( alternate2, letters[1:])
alternate1 = prefix + letter
if அகராதி.starts_with(alternate1) or prefer:
result1 = pulligal_branch_bound( alternate1, letters[1:])
return result
#sort in descending order
result_tpl = [("".join(sol),(-1.0*unigram_score(sol))) for sol in pulligal_helper("",chol)]
result_tpl = sorted(result_tpl,key=operator.itemgetter(1),reverse=True)
#bigram score
[('கணனன', -12.834944378986375),
('கணனன்', -16.834944378986375),
('கணன்ன', -16.44297269239452),
('கணன்ன்', -20.44297269239452),
('கண்னன', -15.995814661052302),
('கண்னன்', -19.9958146610523),
('கண்ன்ன', -19.60384297446045),
('கண்ன்ன்', -23.60384297446045),
('க்ணனன', -17.231101404525926),
('க்ணனன்', -21.231101404525926),
('க்ணன்ன', -20.83912971793407),
('க்ணன்ன்', -24.83912971793407),
('க்ண்னன', -20.39197168659185),
('க்ண்னன்', -24.39197168659185),
('க்ண்ன்ன', -24.0),
('க்ண்ன்ன்', -28.0)]
# unigram score
[('கணனன', -7.5531477474850535),
('கணனன்', -8.553147747485053),
('கணன்ன', -8.553147747485053),
('கணன்ன்', -9.553147747485053),
('கண்னன', -8.553147747485053),
('கண்னன்', -9.553147747485053),
('கண்ன்ன', -9.553147747485053),
('கண்ன்ன்', -10.553147747485053),
('க்ணனன', -8.553147747485053),
('க்ணனன்', -9.553147747485053),
('க்ணன்ன', -9.553147747485053),
('க்ணன்ன்', -10.553147747485053),
('க்ண்னன', -9.553147747485053),
('க்ண்னன்', -10.553147747485053),
('க்ண்ன்ன', -10.553147747485053),
('க்ண்ன்ன்', -11.553147747485053)]

மேலும், செம்புலப்பெயல்நீரார் கூற்றை மெய்கள் சேர்த்தால், இப்படி வருகின்றது. இதில் 7-இல் ஆறு சொற்கள் சரியாவருகிறது.

  1. [(‘யாயும்‘, 20.0), (‘யாயும’, 16.0)]
  2. [(‘ஞாயும்‘, 20.0), (‘ஞாயும’, 16.0)]
  3. [(‘யாராகிய்ரோ‘, 36.0), (‘யாராகியரோ‘, 31.94703511524359)]
  4. [(‘எந்தையும்‘, 32.0),(‘எநதையும்’, 28.83912971793407),(‘எந்தையும’, 28.0),(‘எநதையும’, 24.83912971793407)]
  5. [(‘நுந்தையும்‘, 36.0),
    (‘நுநதையும்’, 32.83912971793407),
    (‘நுந்தையும’, 32.0),
    (‘நுநதையும’, 28.83912971793407)]
  6. [(‘எம்முறைக்‘, 32.181004231607204),
    (‘எமமுறைக்’, 28.543012694821613),
    (‘எம்முறைக’, 28.181004231607204),
    (‘எமமுறைக’, 24.543012694821613)]
  7. [(‘கேளிர்‘, 20.0), (‘கேளிர’, 16.0)]

மேலும் தொடர்புக்கு உங்கள் விவரங்களை இங்கு சேர்க்கவும்.