An Introduction to Tamil Computing

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

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

-முத்து

சில ஆய்வுகள்

“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 என்ற எழுத்தளவான புள்ளியியல் வடிவில் கொண்டு இவற்றை செயல்படுத்துவது. இதற்கு உங்களுக்கு ஆர்வம் இருந்தால் என்னுடன் இணைந்து செயல்படலாம் வாங்க.

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

-முத்து

தமிழ் உரை சம்பந்தமான சில புதிர்கள் (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:])
result.extend(result1)
result.extend(result2)
else:
result1 = pulligal_helper( prefix + letter, letters[1:])
result.extend(result1)
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:])
result.extend(result2)
alternate1 = prefix + letter
if அகராதி.starts_with(alternate1) or prefer:
result1 = pulligal_branch_bound( alternate1, letters[1:])
result.extend(result1)
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)
pprint(result_tpl)
"""
['கணனன',
'கணனன்',
'கணன்ன',
'கணன்ன்',
'கண்னன',
'கண்னன்',
'கண்ன்ன',
'கண்ன்ன்',
'க்ணனன',
'க்ணனன்',
'க்ணன்ன',
'க்ணன்ன்',
'க்ண்னன',
'க்ண்னன்',
'க்ண்ன்ன',
'க்ண்ன்ன்']
#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)]
"""
view raw fix_erased_mei.py hosted with ❤ by GitHub

மேலும், செம்புலப்பெயல்நீரார் கூற்றை மெய்கள் சேர்த்தால், இப்படி வருகின்றது. இதில் 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)]

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

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

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

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

-முத்து.

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

Google CoLab – இணையம் வழி நிரல்களை பழகுதல்

என்ன :

கூகிள் நிறுவனம் CoLab – Code-Laboratory என்ற ஒரு சோவையை பெரும்பாலும் பைத்தான் வழி செயற்கையறிவு நிரல்களை (TensorFlow கொண்டு)  உருவாக்க பொதுமக்களுக்கு வழ்ங்கியுள்ளது. ஆனால் இதனை தமிழ் கணிமைக்கு பயன்படுத்தலாமா ? ஆம்.

தமிழ்-கூகிள்-கோலாப்-நிர்ல்-பயிற்சி

எப்படி:

ஒரு உதாரணமாக இந்த ‘பயில் தமிழ்’ interactive python (ipynb) நோட் புத்தகத்தில் (சுட்டி இங்கு) தொடங்கினால் எப்படி ஓப்பன் தமிழ் நிரல் தொகுப்பை பரிசோதிக்கலாம் என்று காணமுடியும்.

முதலில் ஒப்பன் தமிழ் நிரல் தொகுப்பை நிறுவ வேண்டும் – இதற்கு ‘!pip3 install open-tamil’ என்ற கட்டளையை கொடுக்கவும். அடுத்து ‘play’ பட்டன் அழுத்தியோ அல்லது ‘Ctrl + Enter’ விசைகளை அழுத்திபயோ இவற்றை இயக்கலாம்.

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

நன்றி

 

 

 

தமிழ் கணிமைக்கு செயற்கையறிவு சேவைகள்

இந்திய அழகியல் - விருந்தினர்கு வர்வேர்ப்ரை விளக்கு
இந்திய அழகியல் – விருந்தினர்கு வரவேர்ப்பறை விளக்கு. புதிய தொடக்கம்.

ஊருக்கு உபதேசம் இல்லாமல், தங்களது சேவைகளின் பயன்களை தாமே முதலில் பயன்படுத்துவதை ‘Eating your Dog Food‘ என்று கணினியாளர்கள் மத்தியில் பேசப்படுவதாவது.

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

எனது பார்வையில் முதல்படி தேவைப்படும் சேவைகளானது:

  1. தானியங்கி வழி, கணினி உதவி ஆவனங்கள், பயிற்சி நூல்களை (training, tutorial manuals) மொழிபெயர்ப்பது
    • இந்த நூல்கள் அனைத்தும் சில கலைச்சொற்கள் தவிர மற்ற்வை அனைத்தும் ஒரே கோனத்தில் இருப்பவையாகின்றன. தானியங்கி மொழிபொயர்ப்பு செயலிகள் சரியனவையாக அமையும்.
    • இதன் முக்கியத்துவத்தை அதிகப்படுத்தி சொல்லமுடியாது. ஒவ்வொரு கலைசொல் அடங்கிய புத்தகமும் வெளிக்கொண்டுவர பல மாதங்களில் இருந்து சில ஆண்டுகள் ஆகின்றன – இந்த கால தாமத்தை குறைக்க வேண்டும்.
    • முக்கியமாக எனது பார்வையில் இந்த நூல்கள் விரைவில் தமிழாக்கம் ஆகவேண்டும்
      • Python மொழி உதவி ஆவணங்கள்
      • TensorFlow செயற்கையறிவு மென்பொருள் கட்டமைப்பு உதவி ஆவணங்கள்
  2. வீடியோ வழி, ஒலி வழி – உரை, கட்டுரை, நூல்கள் உருவாக்க செயற்கையறிவு செயலிகள்
    • தமிழில் கணினி சார்ந்த தகவல்களை தமிழ் கணினியாளர்கள் நேர்வழி பங்களிப்பதும் பயன்படுத்துவதற்கும் ASR, OCR, Video close-captioning, போன்ற செயல்பாடுகள் பலரையும் தமிழ்கணிமைக்குள் வரவேர்க்க உதவும்.
    • புதிய கருத்துக்களையும், புதிய தகவல்களையும் தமிழிலேயே உருவாக்க இது உதவும்
  3. செயற்க்கையறிவு அணிமாதிரிகளை பொதுவாக “Model Zoo” என்று அருங்காட்சியகமாக பயன்படுத்துவது.
    • தமிழுக்காக பலரும் தங்களது செயற்கையறிவு கருவிகளை உருவாக்குகின்றனர். இவற்றில் பயிற்சி செய்வது ஆகக்கடினமானது, அதிக நேரம் கணிமை செலவெடுக்கும் வழியில் ஆனது. எனவே இவற்றை முடிந்த அளவில் பொதுவெளி (public domain) உரிமத்தில் வெளியிடல் சிறப்பானது
    • இதன் முதல் முயற்சி GitHub-இல் அருங்காட்சியகம்
  4. தமிழ் அகழாய்வு பற்றிய உதவி செயலிக்கள் (சற்று திசைமாரி மேல் சொன்னமாதிரி இந்த பயன்பாடு கணிமைக்கு நேர்வழி உதவாதது என்க்கு புலப்படுகின்றது)
    • ஒரு பானை ஓட்டில் எழுதப்பட்ட சொல் தமிழ், தமிழி (பிரமி), அல்லது எண்களா? அல்லது எழுத்துக்களா? என்பதனை கண்டறிய பொதுமக்கள் கைபேசியில் சொயலிகளின் வழி நிறுவி தொல்லியல் வல்லுநர்களுக்கு சிறந்த சரியான தகவல்கள் அளிக்கும் வகை இந்த செயலிகள் உதவும்.

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

நன்றி.

 

Deep Learning – ஆழக்கற்றல்

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

படம் 1: ஆழக்கற்றல் பற்றிய சிறப்பான புத்தகம் ஒன்று இயன் குட்பெல்லோ, யொசுவா பென்ஜியோ மற்றும் ஆரன் கூவில் அவர்களால் 2016 நவம்பர்மாதத்தில் எழுதப்பட்டு MIT பல்கலைக்கழகத்தின் பதிப்பகத்தால் பரிசுரம் ஆனது.

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

இந்த பாடப்புத்தகம் ஆழக்கற்றல் கூறுகளை கற்றுக்கொள்ளத் தேவையான கணிமை, தகவல் தொழில்நுட்ப கணிமை, யுகிப்புக் கணிமை, எண்சார் கணிமை, மற்றும் இயந்திர கற்றல் அடிப்படை விஷயங்களையும் வழங்குகிறது. இதில பன்னாட்டு உலக்ப்புகழ்பெற்ற நிறுவனங்களில் இன்றைக்கும் பயன்படுத்தும் தொழில்நுடபங்கள் பற்றியும், ஆழக்கற்றல் பினைப்புகள், கற்றல் செயல்முறைகள், தேர்வுமுறை/சிறப்பிக்கும் செயல்முறைகள், கான்வலூஷன் பினைப்புகள், டோக்கன் தொடர் மாதிரி உருவாக்குதல்கள் அனைத்தையும் ஒரு நடைமுறை கோனத்தில் இந்த பாடப்புத்தகம் வழங்குகிறது; மேலும் இந்த புத்தகத்தில் இயல்மொழி பகுப்பாய்வு, பேச்சு உணர்தல், கணினி பார்வை, இணையம் வழி பரிந்துரைக்கும் செயலிகள், உயிரியல் கணிமை / மரபணு கணிமை, மற்றும் விடியோ விளையட்டுக்கள் பற்றியும் ஆழக்கற்றலின் பாய்ச்சல்/உபயோகங்களையும் பற்றி அலசுகிறது. கடைசியாக ஆராய்ச்சி நோக்கில், கோட்பாடுகளின் அளவில் linear factor மாதிரிகள், தான்குறிப்பிகள் [autoencoders], முன்மாதிரி கற்றல் [representative learning], structured probabilistic மாதிரிகள், மன்டே கார்லோ மாதிரிகள், partition சார்புகள், தோராயமான யுகித்தல், ஆழ உருவாக்கும் பினைப்புகள் [deep generative models] போன்ற தலைப்புகளிலும் தற்சமயம் உள்ள அறிவியல் முன்னேற்றங்களை பற்றி அறிமுகப்படுத்துகிறது.

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

எனது மொழி பெயர்ப்பு மூல உரை ஆங்கிலத்தில் கீழே: MIT பதிப்பகத்தில் இருந்து எடுத்த உரை

Deep learning is a form of machine learning that enables computers to learn from experience and understand the world in terms of a hierarchy of concepts. Because the computer gathers knowledge from experience, there is no need for a human computer operator to formally specify all the knowledge that the computer needs. The hierarchy of concepts allows the computer to learn complicated concepts by building them out of simpler ones; a graph of these hierarchies would be many layers deep. This book introduces a broad range of topics in deep learning. 

The text offers mathematical and conceptual background, covering relevant concepts in linear algebra, probability theory and information theory, numerical computation, and machine learning. It describes deep learning techniques used by practitioners in industry, including deep feedforward networks, regularization, optimization algorithms, convolutional networks, sequence modeling, and practical methodology; and it surveys such applications as natural language processing, speech recognition, computer vision, online recommendation systems, bioinformatics, and videogames. Finally, the book offers research perspectives, covering such theoretical topics as linear factor models, autoencoders, representation learning, structured probabilistic models, Monte Carlo methods, the partition function, approximate inference, and deep generative models. 

Deep Learning can be used by undergraduate or graduate students planning careers in either industry or research, and by software engineers who want to begin using deep learning in their products or platforms. A website offers supplementary material for both readers and instructors.