The Google-Docs typeset version of the book “Practical Data Structures and Algorithms,” in English is released here; this book is still under preparation – so once the proofs are completed a PDF will be released. People interested to collaborate can drop me a email at ezhillang@gmail.com
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.
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.
இரண்டு பைத்தான் சொற்பிழை திருத்திகளை சமிபத்தில் எளிதாக பயன்படுத்தும் வண்ணம் “பொட்டலம்” போட்டேன். அதாவது மளிகைக்கடைகளில் அரிசி பருப்பு வகைகள் சாக்குகளில் இருந்தாலும் மொத்தவிலை கடைகளில்லாமல் தனியார் செல்லும் நகர கடைகளில் இவை பொட்டலங்களாக “பாக்கேட்” செய்து, நமது நேர நெருக்கடிக்காக, விற்கப்படும். அதே போல பல நல்ல நிரல்கள் பொதுவிலும், கிட் ஹபிலும் இருந்தாலும், இவற்றை பொதுவில் நிரலர்கள் பயன்படுத்த நாம் இதனை பொட்டலம் செய்தும், அரிசியில் கற்களை பொறக்கியெடுத்தும் சீர்செய்து மளிகைக்கடைக்காரர் செய்வார் இல்லையா, பரிசோதித்தும் வெளியிட்டுள்ளேன்.
வணக்கம் தமிழ் கணிமை ஆர்வலர்களே, இன்று ஓப்பன்-தமிழ் நிரல் தொகுப்பு வரிசை எண் 0.97 வெளியீடு அறிவிக்கிறோம். இதில் புதியன, சென்ற 2019-நவம்பர் மாதம் கழித்து வந்த மேம்பாடுகளாகியன, கீழ்வருமாறு.இதனை பெற
$ pip install –upgrade open-tamil==0.97
என்று கட்டளை கொடுக்கலாம்.
1 புதிய மேம்பாடுகள்:
மாத்திரை கணித்தல் – தமிழ் உரையில் உள்ள சொற்களின் மாத்திரை அளவை கணிக்க புதியசார்பு ‘tamil.utf8.total_maaththirai()’ என்று திரு. பரதன் தியாகலிங்கம் அவரால் பங்களிக்கப்பட்டது.
வடமொழி சொல்பட்டியல் மோனியர்-வில்லியம்ஸ் அவரது அகராதியில் இருந்து திரிக்கப்பட்டு இங்கு சேர்க்கப்பட்டது
‘tabraille’ என்ற module-இல் கண்பார்வை குறை உள்ளவர்களினால் தமிழ் பாரத பிரெயில் என்ற தரத்தை கையாளும் வகை சில உத்திகள் உள்ளன.
‘kural’ என்ற module-இல் திருக்குறளை நேரடியாக கையாள சில உத்திகள் உள்ளன. இது 2013-இல் வெளிவந்த ‘libkural’ என்பதன் மீள்பதிவாகும்.
‘solthiruthi’ என்ற module-இல் எளிதான சில மேம்பாடுகள் செய்யப்பட்டுள்ளன – இவற்றினால் வரும் மாற்றுச்சொற்கள் சற்று மேன்மை அடையும்.6. தமிழ் எழுத்துவழி எண்களை பகுப்பாய்வு செய்து எண்களாக மாற்ற ஒரு சார்பு #221
olini.py supports natual language arithmetic evaluation in Tamil for
all numbers based on this work.7. ‘tamiltts’ என்ற ஒரு module-இல் normalize numbers to numeral text என்றும் வேறு பல சொல்/உரை நெறிப்படுத்தும் பயன்பாடுகள் உள்ளன. இதுவும் ஒரு பழைய நிரலில் மீள் பதிப்பு.
‘tamil.tace16’ – என்ற நிரல் தொகுப்பில் தமிழ் TACE16 என்ற குறியீட்டிற்க்கு உதவும்வழி சில நிரல் சார்புகள் உண்டு.
‘transliterate.ITRANS’ – என்ற நிரல் தொகுப்பில் ITRANS transliteration – ஒலிவழி தட்டச்சு செய்தல் உருவாக்கப்பட்டது
2 வழு நீக்கம்:
பாமிணி எழுத்துருவில் இருந்து ஒறுங்குறியில் மாற்றத்தில் வழு நீக்கம் சரிபார்க்கப்பட்டது
நெடில் பட்டியலை சரிபார்த்தல்
Python3-இல் உகந்தவாறு sorting, ‘tamil.utf8.tamil_sorted’ என்ற சார்பு சேர்க்கப்பட்டது
நாள், நேரம் – tamil.date நிரல் தொகுப்பில் உள்ள சில வழு நீக்கம் செய்யப்பட்டது
3 புரவலர்களுக்கு நன்றி தெறிவித்தல்
We thank @pycharm for donation of 1 seat professional license towards Open-Tamil development. __/|\__. Thanks to @infitt and Prof. @crselvakumar1 for their support toward 1-way airfare cost of attending 2017-Tamil Internet Conference in Toronto, Canada. https://github.com/Ezhil-Language
வாய்ப்பிற்கு நன்றி.
-முத்து (கலிபோர்னியா).
மேற்கோள் – இந்த வலைப்பதிவு முதலில் ஒரு மின்னஞ்சல் அறிக்கையாக, திறமூலதமிழ் கணிமை அளவலாவள் குழுவில் இங்கு வெளியானது.
“”ஓர் ஆயிரம் கழித்தல் ஐந்து பெருக்கல் (ஒன்பது கூட்டல் ஒன்று)” என்பதை எப்படி 950 என்று கணினி புரிந்து கொள்ளும் ? Open-Tamil வழியாகத்தான் – வாங்க இதை பார்க்கலாம்.
Open-Tamil is a free and open-source Tamil Text / Natural Language Processing library (NLP) written in Python, and developed since early 2010s. This blog post is cover our gaps in marketing (on our part, ofcourse) Open-Tamil regarding the capabilities and features presented by Open-Tamil python library. Open-Tamil Python package is distributed under MIT license.
Documentation
Open-Tamil project is currently in the release v0.96 – the Python package can be found here. Documentation from Sphinx for Open-Tamil package can be found on Tamilpesu.us site at this URL.
Installation
Open-Tamil can be installed by running the following command from your terminal with root privileges on Python3. You cannot use current/later versions of Open-Tamil with v2.x – please refer to older releases on pypi page which are still available to you.
$ pip install –upgrade open-tamil>=0.96
If you want to install locally, you can run this command instead,
$ pip install –upgrade open-tamil>=0.96 –user
Python Modules
Open-Tamil provides the following Python modules with various classess and functionalities. You can learn more about them from browsing our documentation.
In summary we can list them as follows,
Module
Functionality
1
tamil
Tamil tokenization, word ordering, encoding converters, numerals, text summarizer
Various examples and utilities in Open-Tamil package; nifty code tips and tricks
Open-Tamil source code examples like numeral to audio generation, ngram generation, corpus analysis etc. see link here.
Calculator Example
One fun use of the API is to build interactive websites like tamilpesu.us but a more interesting use is to build a text based calculator taking inputs in form of Tamil numerals with Tamil words for arithmetic operations like add, subtract, multiply and divide.
“”ஓர் ஆயிரம் கழித்தல் ஐந்து பெருக்கல் (ஒன்பது கூட்டல் ஒன்று)” என்பதை எப்படி 950 என்று கணினி புரிந்து கொள்ளும் ?
Using Open-Tamil we can parse the numerals back to numbers and form a simple mathematical infix expression;
1000 – 5 * ( 9 + 1 )
then use Python eval() we can use Python parser and evaluator to build the expression tree and compute the post-order traversal and execute the expression to receive the result, which in our case is not surprisingly,
950.
Well, all this can be done in less than 30 lines of code using Open-Tamil; if you don’t believe me check-out the code here.
Credits
A large number of individuals have contributed their time and effort over the years in many capacities to the project; should you wish to acknowledge this project in your research, products you can choose to cite any of our published works of relevance to you; our publications are listed here.
As always if you wish to report bugs, or share your comments please write an email to me ezhillang AT gmail DOT com or file an issue at github.
Over the course of this year, since translating Ruby Kin, and preparing a summary of 3 years work on spell-checker for Tamil Internet Conference – 2019, I’ve been thinking of next level of interesting projects.
The following have come to mind, expressed in Twitter @ezhillang in various forms. Here they are in simply chronological order,
Translating “Data Structures and Algorithms” book in Tamil
Previously my work with open-tamil collaborators involved generating useful practical Tamil words for commonly used data structures in a survey. ‘கணினி தரவமைப்புகளும் செயல்முறைகளும்‘
Useful candidate books for translation are:
‘Algorithms,’ by Prof. Jeff Erickson at UIUC
Problem Solving with Algorithms and Data Structures Using Python, Creative Commons licensed by its authors Brad Miller and David Ranum; same book (from above) adapted at Bradfield CS https://bradfieldcs.com/algos/
Translating/Writing a “Debugging Techniques” book in Tamil: ‘கணினி செயல்முறை நிரகளில் வழுநீக்கம்‘ – பயிற்சி, நூல்
Debugging techniques are important learning milestone for any professional software/hardware developer which are usually learnt on the job and essentially skipped in academia (perhaps for practical purposes).
(Research/Proof-of-concept) Viterbi algorithm based spelling correction algorithm for Tamil
(Research/Proof-of-concept) Concordance based context ambiguity resolution for Tamil spelling correction.
Contingent on our levels and degrees of success we can share our work in forums like Tamil Internet Conference, ACL or ACM, etc.
நிவாடா மாகனத்தில் மலையேரும் சமயம் மொட்டை வெயிலில் எடுத்த தம்படம் 🙂
As always collaborators are welcome: email: ezhillang -AT- gmail -DOT- com
உங்களது தமிழ் உரைகளை ஒலி வடிவாக்க கணியம் அறக்கட்டளைஒரு புதிய சேவைஉருவாக்கியுள்ளது. பயன்படுத்த சுட்டி http://tts.kaniyam.com
அழகின் சிறிப்பு. தமிழ் தோட்டத்தில் ஒரு ரோஜா.
இந்த செயலியின் வெளியீடு அறிக்கையை இங்கு காணலாம்: வாழ்துக்கள் கணியம் அறக்கட்டளை, குழு நபர்கள்! ‘ஊரே கூடி தேர் இழுத்ததாக’ சுவையான http://tts.kaniyam.comஉரையொலி மாற்றியைவெளியீட்டு செய்தியில் குறிப்பிடதும் ஒரு திறமூல உறவுகளின் சிறப்பு!. அடுத்ததா எப்போதிருவிழா? 🎇🎠✨
செயல்படுத்துதல்
சரி இந்த சேவையை எப்படி செயல்படுத்தலாம் ? இதோ இதனை படிப்படியாக புட்டு வைக்க முயற்சி கீழே. இதில் உங்களது உரைவடிவ கோப்புக்களை [file] தளத்தில் ஏற்ற வேண்டும் – பின்பு தளம் உங்களது .
கணக்கை உருவக்குங்கள்; இதில் பயனர் பெயர், கடவுச்சொல் குடுக்கவேண்டும்.
இரண்டாவது, தளத்தில் இருந்து ஒரு மினஞ்சல் வரும் – அந்த சுட்டியை திறக்கவும்.
தற்போது நீங்கள் உள்நூழயலாம்; [இதற்கு எற்கணவே படி 1-இல் குடுக்கப்பட்டுள்ள திரையில் செல்லலாம்]. உங்களது உரையை சாதா கோப்பாக இதில் இடவும். PDF போன்ற கோப்புகளை நிங்கள் இந்த செயலியில் இடும்முன் மாற்றவேண்டும்.
ஏற்றுமதி செய்தபின் தளம் உங்களது உரையை ஒலியாக மாற்ற சில நேரம் ஆகும். இதனால் உங்களது வோலை முடிந்த பின் அதற்க்கான் மின் அஞ்சலை பெரும் வரை காத்திருக்கவும். தற்ச்சமையம் உடனுக்குடன் பெரும்வகை இதனை செயல் படுத்த இயலாது.
மின் அஞ்சல் வந்தபின் அதனில் உள்ள சுட்டியில் உங்கள் உரை மின் ஒலிவடிவில்! முற்றிலும் இலவசம்!
ஒலிமாற்றியின் தரம்!
நீங்களே கேட்டு முடிவு செய்யுங்கள்! எனது மூல கோப்பு இங்கு – இதன் வெளியீடு ஒலி இங்கு கேட்கவும்.
தொழில்நூட்பங்கள்
ஒரு மூத்த கணினி நிரலாளரின் கூற்றின் படி ‘கணினித்துரையின் கோட்பாடுகள் கண்டறிந்து சில பத்தாண்டுகளே ஆனது. இதில் உள்ள கோட்பாடுகள் இயற்க்கை அறிவியலால் கட்டுப்பட்டதல்ல’ என்ற பொருளில் இந்த படைப்பை நான் பாற்க்கிரேன்.
உரை-ஒலி மாற்றியில் பல digitial signal processing சவால்கள் உள்ளன. இவற்றை படிப்படியாக கடந்த பெருமை, உழைப்பு, பாராட்டுக்கள் பேரா. திரு. தி. நாகராஜன் [SSN பொறியியல் கல்லூரி] -யை சேரும். இவரது தலைமையில் unit-selection-synthesis என்ற முறையில் Festival என்ற எடின்புரூ பல்கலைக்கழகத்தின் ஆராய்ச்சி தளத்தின்வாயில் இவரது தமிழ் மொழி ஆராய்ச்சிகள் இருந்திருக்கின்றன.
ஆனால் இந்த இவரது ஆராய்ச்சிகள், இந்திய அரசின் வரி பணத்தில் ஒரு பங்கில் இருந்து வந்தாலும், இது எளிதில் பொது வளியில் இந்த மென்பொருள் வெளிவரவில்லை; இதற்கு தகவல் தொழில் நூட்பம் சட்டத்தின் கீழ் [RTI] திரு. சீனிவாசன் சென்ற ஆண்டு முயற்சிகள் எடுத்தும் வழி நடத்தியும், தனது பணிகளினால் இந்த மென்பொருளை பொது வெளியில் பயன்படுத்தும் அளவில் கொண்டுவந்தார்.
இது இரண்டு மட்டுமே நமக்கு இன்ரு கணியத்தில் இந்த சேவை கிடைக்க மூல காரணமாக இருக்கிரது. கணியம் ஆசிரியர் அவரது வெளியீட்டில் வலை சர்வர் மென்பொருள் கட்டமைப்பு அதனை உருவாக்கியவர்கள் பற்றியும் குறிப்பிட்டுள்ளார்.
கணியம் அறக்கட்டளை, IIT-SSN கூட்டனி, மேலும் அயராமல் உழைத்து பொது மக்கள் பயன்பாட்டிற்கு இந்த தொழில் நூட்பங்களை வழங்கிய அனைவருக்கும் இதயம்கனிந்த நன்றி! வாழ்க, வளமுடன்.
Today, I had a chance to go to the Apple store. Trying the Apple stylus is a great tool for graphic artist.
iPhone XS [or XR?] with beautiful rendering of tamilpesu.usTangram game with App-based and interactive setup
I think Apple has elevated engineering to a high water-mark. Wow. Engineers can make magic when we all work together driving other professional designers, artists, marketers, manufacturers to synthesize beautiful experience. Technology, is magic.
Please note table was updated to show letters in most-frequent to least-frequent alphabets and their code-words used. Updated after publishing on Aug 16th, 2018.
Source coding theory
Information theory provides us with tools to calculate the information content of symbols in a language, i.e. alphabets in our case. Average codeword length was 6.45652 bits, which is rounded to 7bits.
According to 230+ symbols of encoded in binary without attention to letter frequency we would be using ceil[ log2[230] ] ~ 8bits per symbol, so the usage of Morse code provides a related data compression of 12.5%!
Previously, I had written about Morse code for Tamil in this blog here, and relationship with Unigram, Bigram and Trigram models and word-structure in Tamil language.
ம் -> --..
த -> -...
க -> ...-.
ல் -> ..---
த் -> ----.
க் -> -.---
ன் -> -.--.
ர -> .....-
ப -> ....--
வ -> ..--.-
தி -> ..-..-
ச -> ..-.-.
கு -> .----.
ம -> .---.-
ப் -> .--..-
ட் -> .--.-.
டு -> .-...-
ர் -> .-..-.
ய -> .-.-.-
அ -> ---..-
ட -> ---.--
ரு -> ---.-.
பு -> -..---
கா -> -..--.
து -> -..-.-
ல -> -.-..-
வி -> .......
டி -> ....-..
ண் -> ....-.-
சி -> ...---.
ன -> ..--...
ரி -> ..-....
ங் -> ..-...-
ந் -> ..-.---
ற் -> .-----.
இ -> .--...-
று -> .-..---
ச் -> .-....-
சு -> .-..--.
பா -> .-.----
கி -> .-.--..
பி -> .-.--.-
வா -> .-.-...
மு -> -----..
ள் -> ---....
லை -> --.--..
உ -> --.--.-
டை -> --.-..-
தா -> --.-.--
ண -> -..-...
கை -> -..-..-
ஆ -> -.-...-
மா -> -.-.---
ய் -> -.-.-.-
ள -> ......-.
சா -> ...--..-
ற -> ...--.--
லி -> ..--..--
வு -> .---...-
கொ -> .---..-.
ந -> .--.....
நி -> .--....-
ஞ் -> .--.----
ரா -> .--.---.
ணி -> .--.--..
ளி -> .--.--.-
யா -> .-......
நா -> .-.-..--
றி -> .-.-..-.
கோ -> -------.
செ -> ------..
ழி -> ------.-
னி -> -----.-.
ழு -> --.-----
மி -> --.----.
யி -> --.-....
பொ -> --.-.-..
ரை -> --.-.-.-
வெ -> -.-.....
எ -> -.-.--..
மை -> -.-.--.-
றை -> -.-.-..-
பூ -> ......--.
ழ -> ...-----.
னை -> ...----..
லா -> ...--.-..
சை -> ..--..-.-
வை -> ..-.--...
போ -> ..-.--..-
கூ -> ..-.--.-.
வே -> .--------
டா -> .-------.
தை -> .------..
பெ -> .---....-
ளை -> .---..---
தே -> .-.---...
ஒ -> .-.---.--
ழ் -> -----.---
லு -> ---...---
நீ -> ---...-..
சீ -> ---...-.-
தீ -> --.---...
மூ -> --.---..-
தொ -> --.---.--
ணை -> --.---.-.
ஏ -> --.-...-.
நெ -> -.-....-.
ளு -> -.-.-....
னா -> ......----
சூ -> ......---.
மே -> ...-------
தோ -> ...------.
தெ -> ...----.-.
சொ -> ...--.....
சே -> ...--....-
தூ -> ...--...--
யு -> ...--...-.
பே -> ...--.-.--
வீ -> ..--..-..-
ஊ -> .------.--
னு -> .---......
யோ -> .---.....-
சோ -> .---..--..
கே -> .-.....---
ழை -> .-.....--.
ணு -> .-.---..--
ஓ -> .-.---.-..
கெ -> ----------
கீ -> --------..
றா -> --------.-
பை -> -----.--..
ணா -> -----.--.-
ரோ -> ---...--.-
மொ -> -.-....--.
மெ -> -.-.-...--
லோ -> ...----.---
பீ -> ...----.--.
ளா -> ...--.-.-.-
ஈ -> ..--..-....
ஞா -> ..--..-...-
மீ -> ..-.--.----
வ் -> ..-.--.--..
மோ -> ..-.--.--.-
நு -> .---..--.-.
ஐ -> .-.....-..-
ரே -> .-.....-.-.
நோ -> .-.---..-.-
நே -> .-.---.-.--
நூ -> ---------..
யெ -> --.-...----
லே -> --.-...--..
ரீ -> -.-....----
நொ -> -.-....---.
யை -> -.-.-...-..
ழா -> ...--.-.-...
ரூ -> ...--.-.-..-
னோ -> .------.-.--
ஞ -> .---..--.---
யூ -> .---..--.--.
வோ -> .-.....-....
யே -> .-.....-.---
லெ -> .-.---..-...
ரெ -> .-.---.-.-.-
ணீ -> ---...--....
டோ -> ---...--..--
டெ -> ---...--...-
கௌ -> ---...--..-.
ணெ -> --.-...---..
சௌ -> --.-...---.-
றெ -> ..-.--.---...
லூ -> ..-.--.---..-
றோ -> .------.-....
னே -> ..-.--.---.--
னீ -> .------.-..-.
நை -> .------.-..--
டூ -> .------.-.-..
னெ -> .-.....-.--..
டே -> .-.....-.--.-
ஞெ -> .-.---..-..--
ளெ -> .-.---.-.-...
டீ -> ---------.---
யொ -> ---------.--.
பௌ -> ---------.-..
ஃ -> --.-...--.---
ஔ -> --.-...--.-..
ஞை -> -.-.-...-.---
யீ -> -.-.-...-.--.
றொ -> -.-.-...-.-.-
வொ -> .------.-...--
வூ -> ..-.--.---.-..
னூ -> .------.-.-.--
ளோ -> .-.....-...---
ணோ -> .------.-.-.-.
றே -> .-.....-...--.
மௌ -> .-.....-...-..
தௌ -> .-.---..-..-..
ளே -> .-.---.-.-..-.
லொ -> .-.---.-.-..--
றூ -> ---------.-.--
ரொ -> --.-...--.--..
டொ -> --.-...--.-.-.
ங -> -.-.-...-.-...
ணே -> ..-.--.---.-.--
ளீ -> .------.-...-..
ழூ -> .-.....-...-.-.
ளொ -> .-.---..-..-.-.
ரௌ -> .-.---..-..-.--
யௌ -> ---------.-.-..
னொ -> ---------.-.-.-
ழோ -> --.-...--.-.--.
ளூ -> --.-...--.-.---
ஞி -> -.-.-...-.-..--
ணொ -> .-.....-...-.---
ணூ -> .------.-...-.--
ழீ -> .-.....-...-.--.
ஸ் -> --.-...--.--.--.
வௌ -> -.-.-...-.-..-..
ஞீ -> --.-...--.--.---
ஷ் -> ..-.--.---.-.-...
ஷி -> ..-.--.---.-.-..-
ழெ -> ..-.--.---.-.-.-.
றீ -> .------.-...-.-.-
நௌ -> ..-.--.---.-.-.--
ஞே -> .------.-...-.-..
லௌ -> --.-...--.--.-..-
ஞொ -> -.-.-...-.-..-.--
ஙு -> --.-...--.--.-...
ஷ -> --.-...--.--.-.---
ழொ -> --.-...--.--.-.--.
ழே -> -.-.-...-.-..-.-.
டௌ -> --.-...--.--.-.-.-
ஞூ -> --.-...--.--.-.-..
Caveats and Closing Comments
Of course 15 of 247 letters are perhaps not received any codeword in this codebook. Further with inclusion of Grantha letters, 323 letters exist in Tamil some of which we don’t have code words.
Further, a large text corpus like Project Madurai’s [PM] unigram frequency distribution maybe useful to develop a widely representative Morse code table. Once you have this PM unigram data, you know how to get this Tamil Morse codebook regenerated!
This is collective work of our team underlying the website (written in Django+Python) highlighting various aspects of open-tamil like transliteration, numeral generation, encoding converters, spell checker among other things. At this time I hope to keep the website running through most of this year, and add features as git-repo https://github.com/Ezhil-Language-Foundation/open-tamil gets updated.
Thanks to Mr. Syed Abuthahir, many months ago, in winter of 2017, he has developed an interface for open-tamil on the web and shared with us under GNU Affero GPL terms. Later, we is added as part of main open-tamil as well.