AI and Tamil Computing Opportunities
Tamil Internet Conference 2022, Thanjavur, India
தமிழில் நிரல் எழுது – Write code in தமிழ்
எழில் : தமிழ் நிரலாக்க மொழி (Ezhil Language Blog) [opinions are my own]
Tamil Internet Conference 2022, Thanjavur, India
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:
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:
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.
Starting from my first AI application, tamil/english word classification to transitioning into a full-time AI compiler/performance engineer today I have made a career transformation of sorts; I am sharing some information from my learnings here at INFITT-2021 workshop on Keras and beginning AI apps in Tamil.
#infitt2021 தமிழ் கணிமை மாநாட்டிற்கு பயிற்சி பட்டறை அளிக்கிறேன்
Key points:
“Coded Bias” – சமுகத்தில் உள்ள ஒடுக்குமுறைகளை செயற்கையறிவில் வரையறுப்பது சரியா? #aiethics #ai-side-effects;
குப்பம்மா – உளிவீரன் அப்படின்னு பெயர்வெச்சா கடன் அட்டை கிடைக்காமல் போகவும் ராகுல், ப்ரியா என்று பெயர் வைத்தால் கிடைப்பதற்கும் உள்ள வித்தியாசம் தான் “Coded Bias” – எனில் செயற்கைஅறிவு உங்களுக்கு இது கிடைக்குமா என்ற தீர்வை கணிக்கும் நிலையில் உள்ளோம்! யாரிடம்திறவுகோல் உள்ளது?
நன்றி
-முத்து
இந்த வார பகுதியில் ஒரு வித்தியாசமான சிக்கலைப்பற்றி பேசலாம், முன்னரே எழுதிய பகுதிகளை இங்கு காண்க; அதாவது ஒரு எழுத்துணரியின் வழியாக தயாரிக்கப்பட்ட தமிழ் சொற்றொடரில் சில சமயம் மெய் புள்ளிகள் மறைந்துவிடுகின்றன. இது சற்றி இயந்திர கால சிக்கல் என்றால் அப்போது கல்வெட்டுக்களிலும் நூற்றாண்டின் நாளடைவில் இப்படிப்பட்ட சிக்கல்கள் தோன்றுகின்றன; ஆகவே இது தனிப்பட்ட ஒரு சிக்கல் இல்லை என்பதும் புலப்படுகின்றது. இந்த வலைப்பதிவில் உள்ள அல்கோரிதத்தை இங்கு ஓப்பன் தமிழ் நிரலாக காணலாம்.
எனக்கு இந்த சிக்கல் இருப்பதன் காரணம், 1910-இல் ஆர்டன் பாதரியார் இயற்றிய “A progressive grammar of common Tamil,” என்ற நூலின் மறுபதிப்பு பிரதியில் சில/பல சொற்கள் விட்டுப்போயிருந்தன. மறுபதிப்பு செய்யும் நிறுவனமோ, கலிபோர்னியா லாசு ஏஞ்சலஸ் பல்கலைக்கழகத்தில் உள்ள பிரதியினில் இருந்து எப்படியோ (கூகிள் புத்தகங்கள் வழியாகவா?) ஒரு புத்தகத்தின் மின்வடிவத்தை சரிபார்க்காமல் அப்படியே அச்சு செய்து அமேசான் சந்தையில் விற்று அதுவும் என் கைக்கு கிடைத்தது. பல இடங்களில் மெய் புள்ளிகளின் மறைவு – சொற்பிழைப்போல் பாவிக்கும் இந்த பிழைகள் இந்திர வழி செயல்திருத்தத்தால் நுழைக்கப்பட்டவை. நுழககபபடடவை!
மெய் புள்ளிகளின்றி செம்புலப்பொயல்நீரார் கூற்றி சங்க இலக்கியத்தில் இருந்து இப்படியே தோன்றும்,
யாயும ஞாயும யாராகியரோ
எநதையும நுநதையும எமமுறைக கேளிர
…
இதனை எப்படி நாம் சீர் செய்வது? இதுதான் நமது இன்றைய சிக்கல்.
உள்ளீடு
வெளியீடுகள்
அல்கோரிதம் முன்-நிபந்தனைகள்
அல்கோரிதம் செயல்பாடு
இதன் மேலோட்டமான ஒரு முதற்கண் தீற்வை பார்க்கலாம் (இதனை மேலும் சீர்மை செய்ய வேண்டும்),
அல்கோரிதம் – இதற்கு ஒத்தாசை செய்ய மேலும் கூடிய அல்கோரித செயல்முறைகளான “அகரவரிசை_மெய்”, “புள்ளிகள்_தேவையா” மற்றும் “புள்ளிகள்_சேர்” என்றவற்றையும் நாம் சேரக்க்வேண்டும்.
நிரல்பாகம் மறைந்த_மெய்_புள்ளியிடல்( சொல் ) திருத்தம்_சொல் = "" @(சொல் இல் எழுத்து) ஒவ்வொன்றாக விடை = 0 @( அகரவரிசை_உயிர்மெய்( எழுத்து ) ) ஆனால் விடை = புள்ளிகள்_தேவையா( சொல், எழுத்து ) முடி @( விடை ) ஆனால் திருத்தம்_சொல் += புள்ளிகள்_சேர்( எழுத்து ) இல்லை திருத்தம்_சொல் += எழுத்து முடி முடி பின்கொடு திருத்தம்_சொல் முடி நிரல்பாகம் அகரவரிசை_உயிர்மெய்( எழுத்து ) அகரவரிசை_உயிர்மெய்கள் = 'கசடதபறயரலவழளஞஙனநமண' பின்கொடு அகரவரிசை_உயிர்மெய்கள்.இடம்(எழுத்து) != -1 முடி நிரல்பாகம் புள்ளிகள்_சேர் ( எழுத்து ) அகரவரிசை_உயிர்மெய்கள் = 'கசடதபறயரலவழளஞஙனநமண' அகரவரிசைக்குள்ள_மெய் = ['க்','ச்','ட்','த்','ப்','ற்', 'ய்', 'ர்','ல்','வ்','ழ்','ள்', 'ஞ்', 'ங்', 'ன்','ந்','ம்','ண்'] இடம் = அகரவரிசை_உயிர்மெய்கள்.இடம்( எழுத்து ) பின்க்கொடு அகரவரிசைக்குள்ள_மெய்[ இடம் ] முடி
பொதுவாக நம்மால் புள்ளிகள்_தேவையா என்ற செயல்பாட்டை சரிவர முழு விவரங்களுடன் எழுதமுடயாது. இது கணினிவழி உரைபகுப்பாய்வுக்கு ஒரு தனி கேடு. அதனால் நாம் புள்ளியியல் வழி செயல்படுவது சிறப்பானது/சராசரியாக சரிவர விடையளிக்கக்கூடிய செயல்முறை.
மேல் சொன்னபடி உள்ள கட்டமைப்பில் புள்ளிகள் தேவையா என்பதன் ஓட்ட நேரம் (runtime), கணிமை சிக்கலளவு (computational complexity) பற்றி பார்க்கலாம்.
உதாரணமாக, “கண்னன்” என்று எடுத்துக்கொண்டால் அது அச்சாகுமபொழுது “கணனன” என்று அச்சாகிறது என்றும் கொள்ளலாம். நமது அல்கோரிதத்தின்படி இதில் நான்று இடங்களில், அதாவது அத்துனை எழுத்துக்களுமே அகரவரிசை உயிமெயகளாக அமைகின்றன. இவற்றில் எந்த ஒது எழுத்தும் உயிர்மெய்யாக இருக்கலாம் (அச்சிட்டபடியே), அல்லது மாறியும் புள்ளி மறைந்த மெய்யாகவும் இருக்கலாம்.
அதாவது, “கணனன” என்ற சொல்லை மொத்தம் உள்ள வழிகளாவது இவற்றின் பெருக்கல்:
க என்ற எழுத்தில் இரண்டு வழிகள்
ண என்ற எழுத்தில் இரண்டு வழிகள்
ன என்ற எழுத்தில் இரண்டு வழிகள்
ன என்ற எழுத்தில் இரண்டு வழிகள்
மொத்தம் 2 x 2 x 2 x 2 = 24 = 16 வழிகள் உள்ளன.
இதனை பொதுப்படுத்தி சொன்னால்,
இது விரைவில் பொறிய அளவு வளரும் ஒரு தொகை, இதனை 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)] | |
""" |
மேலும், செம்புலப்பெயல்நீரார் கூற்றை மெய்கள் சேர்த்தால், இப்படி வருகின்றது. இதில் 7-இல் ஆறு சொற்கள் சரியாவருகிறது.
மேலும் தொடர்புக்கு உங்கள் விவரங்களை இங்கு சேர்க்கவும்.
இனிய புத்தாண்டு வாழ்த்துக்கள் 2020. செயற்கையறிவு – சில கட்டமைப்பு பயிற்சி சுட்டிகளை இந்த பதிவில் நான் பகிர்கின்றேன். எனது குறிக்கோள் என்னவென்றால் – இதனை படிக்கும் நீங்கள் பைத்தான், numpy, tensorflow என்ற நுட்பங்களையும் கட்டமைப்புகளையும் கையாண்டு செயற்கையறிவு திறண்களை ஒரு ஆண்டில் அல்லது குறைவான காலத்தில் நீங்கள் பெறலாம் என்பதாவது. இவை அனைத்தையும் கற்றிட ஒரு கூகில் கணக்கு மட்டும் இருந்தால் போதும் – அவர்களது colaboratory = code + laboratory என்ற இணைய சேவை மிக உதவிகரமானது – இங்கு பார்க்கவும்.
இந்த செயற்கையறிவு நிரல்களை கொண்டு சில 5 ஆண்டுகளுக்கும் முன்பு எவராலும் இயல்முடியாத செயல்களை இந்த செயற்கை நரம்பு பின்னல்கள் (Deep Neural Networks) என்பவை சாத்தியப்படுத்துகின்றன. இந்தியாவில் இதை எழுதும் சமயம் 50% மேலான மக்கள் 30 வதிற்கும் குறைந்தவர்கள் – இந்த வழி திறண்களைக்கொண்டு புதிய சேவைகளையும் பலதுரைகளின் உருவாக்கியும் வழங்கியும் வாழ்வினை செம்மைப்படுத்தலாம்.
உதாரணம்:
மேலும் பல. நீங்கள் முயற்சி செய்வீர்களா?
-முத்து.
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
ஊருக்கு உபதேசம் இல்லாமல், தங்களது சேவைகளின் பயன்களை தாமே முதலில் பயன்படுத்துவதை ‘Eating your Dog Food‘ என்று கணினியாளர்கள் மத்தியில் பேசப்படுவதாவது.
இதன்படி தமிழ்கணிமைக்கு உதவும் வகையில் நேரடியாக தானியங்கி, செயற்கையறிவு சேவைகளை முதலில் தனது பயன்பாட்டிற்கு தமிழ் கணினியாளர்கள் கையாளவேண்டும்.
எனது பார்வையில் முதல்படி தேவைப்படும் சேவைகளானது:
மேலும் தமிழ் மொழி கல்வி, சிந்தனைக்களம், தகவல் பரிமாற்றம் போன்றவற்றைப்பற்றி நீங்களும் சிந்தியுங்கள் – கருத்துக்களை இந்த வலையில், அல்லது மின் அஞ்சலிலும் பதிவிடுங்கள்.
நன்றி.
One problem that seem to not draw interest from various actors in digital Tamil community seems to be the Tamil input via 4 x 3 standard Keypad.
Problem Statement: Given a 4×3 matrix of keys in a phone keypad, how can we input the basic 13 + 18 + 12×18 = 247 letters of Tamil alphabet using this device ?
Alternate: Clearly, 247 letters have an information content of bits or roughly 8bits. So we can simply punch in 3 keys for indicating this 8bit combination and we are done. Provide a table to the user about 247 letters and their 3-numeric key map and we have solved this problem in one way.
This is not very satisfying however; we seem to put the user to more work; we would instead like to have similar entry method in Tamil just like in English (where 3 letters are grouped per telephone key). The processor for application in the phone or mainframe can decode any ambiguity of the telephone keypad mapping into meaningful words or phrases.
Ideas: We can come up with various proposals; being lazy, and the official jester of Tamil computing community, I will try and make a simple combinatorial analysis for this problem without giving a specific solution.
Details: We can consider the factors of 247 = 19 x 13 which form a matrix of all letters representing the Tamil alphabets and we can count the partitions of this matrix onto the smaller keypad matrix. Following the roman letters of English alphabet consisting of 26 letters are fit easily into the 4 x 3 matrix on average of little less than 3 letters per key, we can also adopt a similar convention.
There are many ways to fit this large 19 x 13 matrix into a 4 x 3 matrix. Using simple combinatorial analysis we may show 19 letters can be divided into 4 groups as (ignoring the assignment of letter groups to keys –
ways) along the rows. Similarly, we group along columns in
ways (and ignoring the 3! column permutation themselves). In all we have a total of
key grouping combinations.
Clearly we have an alternate possibility of grouping the 19 x 13 matrix as a transposed matrix – i.e grouping dimension of 13 elements of Tamil alphabets into larger keypad dimension of 4, and assigning 19 elements along the fewer keypad dimension of 3. This alternative gives us
Together we have a total of 1,801,371. Thats roughly 1.8 million possibilities! Check them yourself by running this code:
# Code for blog post: https://ezhillang.blog/2019/03/01/tamil-entry-via-keypad/ | |
# This code is in Public Domain. | |
from math import factorial as f | |
from math import log | |
def comb(n, k): | |
return (f(n) / f(k)) / f(n - k) | |
def nck(n,k): | |
return comb(float(n),float(k)) | |
C1 = nck(19,4)*nck(13,3) | |
print "C1", C1 | |
C2 = nck(13,4)*nck(19,3) | |
print "C2", C2 | |
print "Total=",C1+C2 | |
print "Logaritmic capacity for 247 letters = ",log(247.0)/log(2.0) | |
print "Grand total", f(3)*f(4.0)*(C1+C2) |
Conclusion: How are we going to find a suitable keypad mapping? Well we may need more heuristics and more cleverness to find the keypad mappings [a few definitely exist in this 259 million possibilities, which maximize a utility function.
So that leads us to the next problem: what is the utility of mapping a Tamil letters in the keypad ? Well – we don’t know apparently, so it doesn’t exist! This also ties into the philosophical question of what is the purpose of all software if not to support use.
Michael Nielsen, a well known computer scientist and Quantum Computing expert [author of famous: ‘Introduction to Quantum Computation and Quantum Information,’ with Isaac Chuang, has written a nice book in expository detail about Deep Learning.
Nielsen’s new book, Neural networks and deep learning here, has taken a more modern approach to (web) publishing in releasing the whole book in Creative Commons Non-Commercial Share Alike [NC-SA] license.
இந்த புத்தகத்தில் கணினி தரவுகளைக்கொண்டு எப்படி [ஒரு படிபடியான் நிரல் இல்லமல், தரவின் கற்றல் வழியே மற்றும்] நிரைய செயல்பாடுகளை சாதிக்கமுடியும் என்றும், இதன் அடிப்படையான செயற்கை நரம்புகளின் பினைப்புகள் மற்றும் அதன் கோட்பாடுகளையும் உடைத்து வைக்கிரார் திரு. நீல்சன். அல்வா மாதிரி ருசித்து பருகுங்கள்.
பொறியாளர்கள் கவணம்! இதனை தமிழாக்கம் செய்யலாம் – முனைவீர்களா?
வருங்காலத்தில் ஒரு தமிழ் செயற்கை நுண்ணறிவு உருவாக்கப்படும். உடனுக்குடன் ‘இன்ஸ்டண்டா’ ஆங்கிலத்தில் இனையான தமிழ் சொற்களை தேடி அல்லது உருவாக்கி சொல்லும். ஆமாம் எந்திரம் சொல்லாடலில் எப்படியும் உள்ளே வரப்போகிரது. நமக்கும் உதவட்டுமே!
தமிழ் மரபுகளுடன், மொழி பழக்கவழக்கங்களுடன் சரிவர, முடிந்த அளவு வட மொழி சொற்கள் சேற்காமல், மேலும் ஒரு படி அதிகமாக ஆங்கிலம் கலப்பின்றி [முற்றிலும் ஒழிக்கமுடியுமா? தெரியவில்லை; கணினிதானே, இலக்கைவைத்தால் முடியாதா என்ன ?]
இத்தகைய செயற்கை நுண்ணறிவு உருவாக்கினால், அதற்கு செல்வா என்று செல்லமாக பெயரிடுவோம். அரிமா ரோபோ C-3PO, R2D2 மாதிரியான, புவியில் இல்லாத தமிழ் அறிவு கொண்ட ஒரு ஓரகில் [Oracle]-ஆக அமையுமோ என்னவோ. ஐயா கலாம் சொன்னது கனவுகள் நினைவாக விழித்திடு; தூக்கத்தை கலைத்திடு.