Migrating TamilPesu to Cloud based Deployment

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

Abstract:

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.

5.5 HTTPS

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.

References:

  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.

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.

EventCommentsDate
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.

Sincerely

-Muthu

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

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)

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

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

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

ஓப்பன் தமிழ் வரிசைஎண்0.98 வெளியீடு

open-tamil v0.9 release.
ஓப்பன் தமிழ் வரிசை எண்: 0.98

வணக்கம் நண்பர்களே!

சென்ற வாரம் நவம்பர் மாதம் 13ஆம் நாள் அன்று open-tamil வரிசை எண் 0.98 வெளியீடு ஆனது; இந்த நிரல் தொகுப்பை பைத்தான் மொழியில் பெற,

$ pip install –upgrade open-tamil >=0.98

என்ற கட்டளைகள கொடுக்கலாம்.

இதில் புதிதாக சிறு வழு நீக்கங்கள் உள்ளன,

  1. தமிழ் மாத்திரை கணக்கிடும் சேவை திருத்தம் செய்யப்பட்டது; (tamil.utf8.total_maaththirai)
  2. tamil.regexp மோட்யூல் சீர்செய்து வழு நீக்கம் செய்யப்பட்டது; (வழு 228)

அன்புடன்,

(ஓப்பன் தமிழ் குழுவிற்காக) முத்து

கலிபோர்னியா

ஓப்பன்-தமிழ் வெளியீடு – வரிசை எண் 0.97

ஒப்பன்-தமிழ் வரிசை எண் v0.97

வணக்கம் தமிழ் கணிமை ஆர்வலர்களே,
இன்று ஓப்பன்-தமிழ் நிரல் தொகுப்பு வரிசை எண் 0.97 வெளியீடு அறிவிக்கிறோம். இதில் புதியன, சென்ற 2019-நவம்பர் மாதம் கழித்து வந்த மேம்பாடுகளாகியன, கீழ்வருமாறு.இதனை பெற

$ pip install –upgrade open-tamil==0.97

என்று கட்டளை கொடுக்கலாம்.

1 புதிய மேம்பாடுகள்:

  1. மாத்திரை கணித்தல் – தமிழ் உரையில் உள்ள சொற்களின் மாத்திரை அளவை கணிக்க புதியசார்பு ‘tamil.utf8.total_maaththirai()’ என்று திரு. பரதன் தியாகலிங்கம் அவரால் பங்களிக்கப்பட்டது.
  2. வடமொழி சொல்பட்டியல் மோனியர்-வில்லியம்ஸ் அவரது அகராதியில் இருந்து திரிக்கப்பட்டு இங்கு சேர்க்கப்பட்டது
  3. ‘tabraille’ என்ற module-இல் கண்பார்வை குறை உள்ளவர்களினால் தமிழ் பாரத பிரெயில் என்ற தரத்தை கையாளும் வகை சில உத்திகள் உள்ளன.
  4. ‘kural’ என்ற module-இல் திருக்குறளை நேரடியாக கையாள சில உத்திகள் உள்ளன. இது 2013-இல் வெளிவந்த ‘libkural’ என்பதன் மீள்பதிவாகும்.
  5. ‘solthiruthi’ என்ற module-இல் எளிதான சில மேம்பாடுகள் செய்யப்பட்டுள்ளன – இவற்றினால் வரும் மாற்றுச்சொற்கள் சற்று மேன்மை அடையும்.6.  தமிழ் எழுத்துவழி எண்களை பகுப்பாய்வு செய்து எண்களாக மாற்ற ஒரு சார்பு #221
  6. olini.py supports natual language arithmetic evaluation in Tamil for
  7.        all numbers based on this work.7. ‘tamiltts’ என்ற ஒரு module-இல்  normalize numbers to numeral text என்றும் வேறு பல சொல்/உரை நெறிப்படுத்தும் பயன்பாடுகள் உள்ளன.   இதுவும் ஒரு பழைய நிரலில் மீள் பதிப்பு.
  8. ‘tamil.tace16’ – என்ற நிரல் தொகுப்பில் தமிழ் TACE16 என்ற குறியீட்டிற்க்கு உதவும்வழி சில நிரல் சார்புகள் உண்டு.
  9. ‘transliterate.ITRANS’ – என்ற நிரல் தொகுப்பில் ITRANS transliteration – ஒலிவழி தட்டச்சு செய்தல் உருவாக்கப்பட்டது

2 வழு நீக்கம்:

  1. பாமிணி எழுத்துருவில் இருந்து ஒறுங்குறியில் மாற்றத்தில் வழு நீக்கம் சரிபார்க்கப்பட்டது
  2. நெடில் பட்டியலை சரிபார்த்தல்
  3. Python3-இல் உகந்தவாறு sorting, ‘tamil.utf8.tamil_sorted’ என்ற சார்பு சேர்க்கப்பட்டது
  4. நாள், நேரம் – 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

வாய்ப்பிற்கு நன்றி.

-முத்து (கலிபோர்னியா).

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

குட்டி story … ஒரு அலசல்

Screen Shot 2020-04-18 at 12.23.13 PM

சமிபத்திய வெளியாகவுள்ள, லோக்கோஷ் கனகராசு இயக்கத்தில், “Master” திரைப்பட பாடல் ஆல்பத்தில் ஒரு வித்தியாசமான, மனதைக்கவரக்கூடிய தமிழ்/தங்கிலிசு பாடல், “குட்டி story,” இடம் பெற்றது. இதை பிரபல திரைப்பட நடிகர் விஜ்ய் பாடி இசைவாக அமைந்தது. இதை அனுராஜா காமராஜ் பாடல்வரிகள் எழுதி, அநிருத்ரவிசந்தர் இசைஅமைத்துள்ளார்.

Screen Shot 2020-04-18 at 12.47.56 PM

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

எதுகை மோனையில் {“happy”,”crappy”} – “மாப்பி” என்று தமிழ்-ஆங்கிலம் தங்கிலிஷில் பூந்து விளையாடுகிறார் பாடலாசிரியர்.

பாடல் சற்று கட்டமைப்பில் (rhyme-scheme) எளிமையாக இருந்தாலும்கூட பாட்டில் ஏதோ ஒரு வாழ்க்கையில் சமரசத்தையும், ஒரு நம்பிக்கையூட்டும் நோக்கில் கருத்துக்கள் வெளிவந்திருக்கின்றன. போராட்ட மனப்பாங்கில் இருந்து வெளிவந்தும், மன அவதிகளில் இருந்தும் ஒரு ஓய்வெடுக்க பாடகர் வலியுருத்துகிறார்.

முழு நிரல் இங்கு பார்க்கலாம்:

#!/bin/env python3
from codecs import open
from tamil import utf8
import re
with open('kuttistory.txt','r','utf-8') as fp:
data = fp.readlines()
class Stats:
__fields__ = ('total_words','tamil_words')
stats = Stats()
stats.total_words=0.0
stats.tamil_words=0.0
for line in data:
all_words = re.split('\s+',line.strip())
ta_words = list(utf8.get_tamil_words(utf8.get_letters(line)))
print(all_words,len(ta_words))
stats.tamil_words += len( ta_words )
stats.total_words += len(all_words)
#tamil fraction
taf = float(stats.tamil_words)/stats.total_words
print('English = {0}%, Tamil = {1}%'.format(100.0*(1-taf),100.0*(taf)))

செயற்கையறிவு – அறம்

Montreal-Declaration-for-AI

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

இல்லை. தீய பயன்களுக்கும் செயற்கையறிவு சிலரால் பயன்படுத்தலாம்உதாரணம்:

  1. Black Mirror என்ற தொலைகாட்சித்தொடரில் “Metal Head” என்ற கதையில் இரத்த வெறிபிடித்த செயற்கை ஓனாய்கள் பற்றியும்,
  2. Silicon Valley HBO தொடரில் “Eklow” என்ற கதையில் “Fiona” என்ற எந்திர பெண் பாலியல் முறைகேடிக்கு உட்படுத்தப்படுவதும்,
  3. தமிழில் எந்திரன்-1 இல் காதல் மோகம் கொண்ட (சிவப்பு சில்லு புரோகிராமிங் கொண்ட) “சிட்டி

பற்றியும் படித்தால் நாளைய ரோபோக்கள் எந்தவித வேலைகளில் ஈடுபடலாம் என்றும் அவற்றில் சில மனித அறம் மீரியவை என்றும் புலப்படுகின்றது.

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

மேலும், இந்த சூழலில் கனடிய மொண்ரியால் பல்கலைக்கழகம் நடத்திய கருத்தரங்கின் வழிவந்த ஒரு செயற்கையறிவு நடுவன் மற்றும் மூல கட்டமைப்பு கோட்பாடு உலகத்தரம் வாயந்ததாகவும், பொதுவான குடியரசு, ஜனநாயக, சமத்துவ, மனித உரிமை, கோட்பாடுகளின் மீதும் தழுவிய அறக்கோட்பாடுகளென காண்கின்றேன். இதன் முழு உரை இங்கே: https://www.montrealdeclaration-responsibleai.com/the-declaration – இந்த ஆவணத்தை சிறந்த வழக்கறிஞர்களும், தொழில்நுட்பவியலாளர்களும் சேர்ந்து தமிழிலும் ஒரு நாள் மொழிபெயர்ப்பார்கள் என்று எண்ணலாம்.

மேலும் ஐக்கிய அமெரிக்க அரசும் இதனைப்போல் ஒரு பொது நல செயற்கையறிவின் பயன்பாட்டினை அமெரிக்க நாட்டின் நலத்திற்காகவும், உலக மக்களின் நலன், முன்னேற்றத்திற்காகவும் இங்கு அளித்திருக்கின்றது. https://www.bloomberg.com/opinion/articles/2020-01-07/ai-that-reflects-american-values

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

-முத்து.

செயற்கையறிவு – சில சுட்டிகள்

மெரிட் ஏரி, ஓக்லாண்டு, கலிபோர்னியா.

இனிய புத்தாண்டு வாழ்த்துக்கள் 2020. செயற்கையறிவு – சில கட்டமைப்பு பயிற்சி சுட்டிகளை இந்த பதிவில் நான் பகிர்கின்றேன். எனது குறிக்கோள் என்னவென்றால் – இதனை படிக்கும் நீங்கள் பைத்தான், numpy, tensorflow என்ற நுட்பங்களையும் கட்டமைப்புகளையும் கையாண்டு செயற்கையறிவு திறண்களை ஒரு ஆண்டில் அல்லது குறைவான காலத்தில் நீங்கள் பெறலாம் என்பதாவது. இவை அனைத்தையும் கற்றிட ஒரு கூகில் கணக்கு மட்டும் இருந்தால் போதும் – அவர்களது colaboratory = code + laboratory என்ற இணைய சேவை மிக உதவிகரமானது – இங்கு பார்க்கவும்.

  1. முதலில் உங்களுக்கு பைத்தான் மற்றும் numpy, அணிகளின் கணிதம் (linear algebra – எனுக்கு மிகவும் பிடித்தவர் பேராசிரியர். கில்பட் ஸ்டிராங்.) ஒருபடியாக தேர்ச்சியடைந்திருந்தால் நல்லது. இல்லாட்டி வருத்தப்படாமல் கூகில் செய்யுங்க; StackOverflow செய்யுங்கள்.
  2. ஸ்டான்போர்டு பல்களை செய்ற்கையறிவு பாடம், மற்றும் tensorflow நிரல் மாதிரிகள். இதனை இயற்றியவர் சிப்னுயன் என்பவள். இதன்வழி நீங்கள் tensorflow கற்றிடலாம். இவற்றின் மூலம் சில ஆண்டுகளாக நானும் படித்து வருகிறேன்.
  3. மேலும் படி 2-இல் சிக்கல் நேர்ந்தால் அல்லது உங்களுக்கு அதிக அளவு விவரங்கள் தேவைகள் இல்லாவிட்டால் Keras என்ற கட்டமைப்பையும் பயன்படுத்திடலாம். இவை இரண்டும் இல்லாத மற்ற கட்டமைப்புகளான PyTorch மற்றும் Caffe, CNTK என்றும் உள்ளன – இவற்றை பற்றி சொல்வதற்கு எனக்கு தேர்ச்சி இல்லை;
    1. உங்களுக்கு படிப்பதற்கு இவற்றில் ஏதோ ஓன்றினை மற்றும் படித்தால் போதுமானது; அதாவது இவற்றினிடையே வித்தியாசங்கள் எல்லாம் குளிர்பானங்களினிடையே உள்ள வித்தியாசங்களினை மட்டும்தான் என்ற்படி உணரவேண்டும்; நீங்கள் இந்த பலவிதமான செயற்கையறிவு கட்டமைப்புகளினிடையே காணமுடியும் என்றும் சொல்லாம்.
  4. தமிழில் ஒரு முதல் முறையாக சென்ற ஆண்டு வெளிவந்த நூல் “எளிய தமிழில் Machine Learning,” கணியம் திருமதி. து. நித்தியா. இதனை கிண்டில் மின்கருவி/செயலி அல்லது PDF-இலும் இங்கு படிக்கலாம்.
  5. எது செய்தாலும் நீங்கள் பயிற்சி நோக்கில் செய்பட எனது வலியுருத்தல். ஏட்டு சுறைக்காய் கறிக்கு என்றும் உதவாது என்றும் நாம் அறிவோம். மேலும் பயிற்சி செய்து சான்றுகள் பெற இணைய வழி பல்கழைக்கழாக்ங்களும் உதவுகின்றன – Coursera, Udacity போன்றவை.

இந்த செயற்கையறிவு நிரல்களை கொண்டு சில 5 ஆண்டுகளுக்கும் முன்பு எவராலும் இயல்முடியாத செயல்களை இந்த செயற்கை நரம்பு பின்னல்கள் (Deep Neural Networks) என்பவை சாத்தியப்படுத்துகின்றன. இந்தியாவில் இதை எழுதும் சமயம் 50% மேலான மக்கள் 30 வதிற்கும் குறைந்தவர்கள் – இந்த வழி திறண்களைக்கொண்டு புதிய சேவைகளையும் பலதுரைகளின் உருவாக்கியும் வழங்கியும் வாழ்வினை செம்மைப்படுத்தலாம்.

உதாரணம்:

  1. தானியங்கி கார்கள்/வாகனங்கள் செயல்படுத்துதல்: Tesla, Waymo, Cruise போன்ற பல நிறுவனங்கள் இவற்றினை செயல்படுத்துகின்றனர்.
  2. கணினி காட்சி அறிவியல்/உணர்தல்: ImageNet என்ற பல மில்லியன் படங்கள் கொண்ட தறவில் இருந்து பயிற்சி செய்யப்பட்ட செயற்கை நரம்பு பின்னல் 1000-வகையான பொருட்களை மனிதர் திறன் காட்டிலும் துல்லியமாகக் கண்டறிய உதவும். இவற்றைக்கொண்டு என்ன செய்யலாம் – யோசியுங்கள் ?
  3. மொழியில் சேவைகளும் NLP கணினியில் செம்மைபடுத்த இவைகள் உதவும்;
    1. மொழி உரை, ஒலி உணர்தல். (Comprehension)
    2. மொழி உரை->ஒலி மாற்றி (TTS)
    3. மொழி ஒலி -> உரை மாற்றி (ASR)

மேலும் பல. நீங்கள் முயற்சி செய்வீர்களா?

-முத்து.

AI techniques for spelling checker – some articles

It seems to me, to build a Tamil spelling checker or NLP with AI/Machine Learning one may start by reading this works,

1. http://www.diva-portal.org/smash/get/diva2:1232482/FULLTEXT01.pdf … word representations for LSTM NN

2. Automatic Spelling Correction for Resource-Scarce Languages using Deep Learning

3. Attention-based encoder-decoder networks for spelling and grammatical error correction