Migrating TamilPesu to Cloud based Deployment

Authors: Surendhar Ravichandran <surendhar.r@proton.me>, Arunmozhi, T. Shrinivasan <tshrinivasan@gmail.com>, Muthiah Annamalaiezhillang@gmail.com


Open-Tamil project has expanded to provide its API as a web-service via https://tamilpesu.us   website since 2018 [1]. In this article we share the process of migrating the deployment of this API server through cloud based app-platform with a service provider thereby providing significant advantages to users of site like: secure https access, quick time from code commit to deployment, and ease of maintenance for the project developers. We propose these identifications as easier tools for maintenance and growth of Tamil web applications and cause for wider adoption in our community.

1 Introduction

Open-Tamil is a Python library, used to develop Tamil NLP applications in Python. It provides all the basic functionalities to parse the unicode Tamil Text, easily, in Python among other text processing, and simple NLP functionalities [1a,b]. 

The way python handling the unicode tamil is not readable, by default. It operates on the low level unicode parsing. But, to achieve high level unicode handling parsing, we need an abstraction layer, so that any new developer can handle the tamil text as regular text using open-tamil library [1d].

1.1 TamilPesu.us

TamilPesu.us [1c] is the demonstrative web application for the features of the open-tamil python library. It has a the following features/components; the entire code of this application has been open-sourced for a few years now:

1.2 Architecture

The architecture of Tamilpesu.us web application follows that of all sample Django applications – a model-view-template (MVT) as showin in Fig. 1 (Ref: 2[a])

Fig 1.1 Model-view-template of Django (figure courtesy of ref: 2[a])

The busines logic portion will provide the access to the various functionalities specified in sec. 1.1 via calls to the Open-Tamil library, Tamilsandhi library and Tamilinayavaani library.

1.3 API

The API capability of the Tamilpesu.us is useful for 3rd party sites to use the NLP and other functionalities in sec 1.1. Agrisakthi magazine and CloudsIndia [2b] developers use the text summarizer features of Tamilpesu.us.

Fig 1.2 API access for Tamil Text Summarizer at https://www.tamilpesu.us/en/summarizer/ 

2 Deployment Process Legacy Way

Figure 2(a): Deployment process of the code changes before adopting the app platform; 2(b) Present Deployment

The legacy deployment phase is a fully disconnected process from the development phase. The lifecycle of code change can be summarised into the following three stages.

  1. Developers make code changes (Henceforth called simply, ‘Changes’) to fulfil feature additions, bug fixes and configuration changes for the TamilPesu app through a common repository hosted in Github. They propose Changes to the application in the form of Pull Requests. 
  2. When developers submit Pull Requests, the changes are sanity checked through GitHub Actions. GitHub Actions is a feature that can be used to implement automation tasks such as continuous integration, continuous testing and automated deployments. TamilPesu repository uses GitHub Actions to perform sanity checks against the Changes. For each of such Pull Requests, a sanity check is performed to eliminate errors before the Change is accepted and merged to the TamilPesu code base.
  3. The Changes are made available to the application in the form of deployment. In order to perform a deployment, an administrator needs to log in to the Virtual Machine (VM) and obtain the latest code from Github. Once the new code is available, they need to perform certain manual operational tasks including Application server restarts, web server restarts, and database migrations that are required for the application. Administrators perform these deployments typically once a week.

3 Problems with the legacy deployment

Stages 1 and as a result Stage 2 are random events. Developers across the globe introduce Changes whenever they have time to contribute to the TamilPesu App. However, the deployment stage (Stage 3) is a periodic, less frequent event compared to the development events. Over a period of time, these changes accumulate and cause a drift between the server deployment and the application repository. When an error occurs during the deployment, it is difficult to find the root cause because we deploy multiple code changes simultaneously. Even though we perform sanity checks in the repository, they are lower-level checks for specific functionality. They don’t identify the cause of a deployment failure for the application as a whole.

When an administrator fixes the deployment, they usually make fixes in the form of code changes, directly in the server. These fixes should be backported to the repository. But since the deployment is manual and the changes must be made twice – once in the server and once in the repository, the backporting often gets neglected. This in turn causes another drift between the code in the server and the repository. Over a long period, the drift makes it impossible for the developers to fix the app and the administrators to do deployments consistently and reliably.

4 Deployment Process – Fully automated on Cloud

In the current architecture, we moved from deploying on top of the infrastructure as a service model to the platform as a service model. We replaced the Virtual machine which acted as a Web server and the application server, with a container-based platform service. There are two components that constitute the TamilPesu deployment. See figure 2.(b).

  1. The application server component handles the server-side logic such as computing, API and networking.
  2. Static file server which serves static assets such as CSS, javascript and images.

5 Continuous Deployment

From the legacy deployment model, stages 1 and 2 stay as they are. But the key difference is that now the deployment from the code base – stage 3 is automatic. We configured the digital ocean app to look for changes in the production branch of the TamilPesu repository. As soon as the code is merged into the production branch, Digital ocean triggers a deployment. 

The manual steps required to deploy the code in the application server are automated using a Dockerfile. Dockerfile is a specification of how to build and run the application from the code. The app platform takes advantage of the existing Dockerfile from the repository and uses it to build and deploy the application.

5.1 Zero Configuration Drifts

As a result of continuous deployment, the drift between the deployment and the repository is fully eradicated. There is a one-to-one relationship between an app deployment and a commit in the production branch of the TamilPesu repository.

5.2 Quick Deployment

Since there are no manual works, the deployment time is reduced significantly. Typically it take about 3 minutes for the deployment to be complete and the new version of website available for public use.

5.3 High Uptime

In case of deployment errors, the previous version of the website is kept functional serving the website traffic. This ensures the application to be available even in case of build failures. The app platform also supports a manual rollback feature to previous versions.

5.4 Monitoring and Alerting on Failures

The app platform provides basic resource usage monitoring such as CPU, Memory and network utilization. In addition, any build or deployment failure can be configured to trigger an alert email or Slack message.


The app deployment provides a TLS certificates for the domain name and enable them without any additonal configurations or costs.

5.6 CDN

The advantage of adding a separate static component is that these resources are served using a Content delivery network (CDN). A content delivery network is a caching service used to distribute static content across geographical regions and serve them at a high speed for the users local to that region. This significantly reduced the app loading time for users across the globe.

5.7 Scaling

In order to respond to increased app usage, we might need to scale the application horizontally. In app platform, we can increase the application containers to meet the demands of the application usage easily. The scaling completes typically within a minute.

5.8 Other Deployment Options

Digital Ocean’s app platfom is one of the platform as a services provider. There are the following alternate services where we can deploy a similar architecture.

  1. Kubernetes
  2. AWS fargate
  3. AWS EKS
  4. Heroku
  5. pythonhosted

5.9 Applications

In our case we were able to deploy the Open-Tamil code functionality to show Date-time in Tamil words as a Tamilpesu web-app in few hours of coding to enable the change.

Figure 5: Tamil Date-Time function integrated from open-tamil and published to https://tamilpesu.us  using app-platform auto-deploy.

6. Summary and Conclusions

In summary we have migrated Tamilpesu from manual deployment to git-action push-to-deploy methodology using the Digital Ocean app-platform where code changes are seamlessly and effectively deployed to customer. We think this is a good technology suitable for adoption by the wide Tamil developer community.


  1. (a) Syed Abuthahir et-al,”Growth and Evolution of Open-Tamil,” Tamil Internet Conference (2018). 

(b) Tamilpesu code repository, https://github.com/Ezhil-Language-Foundation/tamilpesu_us (code change May, 30, 2022)

(c) Tamilpesu site https://www.tamilpesu.us  live website (accessed Nov, 2022)

(d) Open-Tamil code repository, https://github.com/Ezhil-Language-Foundation/open-tamil (accessed Nov, 2022).

  1. (a) Mastering Django Structure, https://masteringdjango.com/django-tutorials/mastering-django-structure/ (accessed Nov, 2022)

(b) Selvamurali, founder https://cloudsindia.in (private communication 2019)

  1. Udhayakumar, S. P., and M. Sivasubramanian. “Shift Left: Strengthening the Requirements Elicitation Process for Improving Quality Software in Software Development Projects.” (2022).

Mulerikkal, Jaison Paul, and Ibrahim Khalil. “An architecture for distributed content delivery network.” 2007 15th IEEE International Conference on Networks. IEEE, 2007.

உளியருவி – 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. முடிவு

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