
இன்று கொரொனா காலத்தில் ஒரு இணையவழி நேரலையில் தமிழ்க்கணிமையில் எப்படி செயல்படுவது என்பதைப்பற்றிய ஒரு அறிமுகப்படுத்தி பேச வாய்ப்பு கிடைத்தது. அழைப்புவிடுத்த பேரா. சுபலலிதா அவர்களுக்கு நன்றி.
காட்சிக்கோப்புகள் இங்கு.
-முத்து
தமிழில் நிரல் எழுது – Write code in தமிழ்
எழில் : தமிழ் நிரலாக்க மொழி (Ezhil Language Blog) [opinions are my own]
இன்று கொரொனா காலத்தில் ஒரு இணையவழி நேரலையில் தமிழ்க்கணிமையில் எப்படி செயல்படுவது என்பதைப்பற்றிய ஒரு அறிமுகப்படுத்தி பேச வாய்ப்பு கிடைத்தது. அழைப்புவிடுத்த பேரா. சுபலலிதா அவர்களுக்கு நன்றி.
காட்சிக்கோப்புகள் இங்கு.
-முத்து
இன்று தமிழ் மாநாட்டில் “Open-Tamil – திறமூல தமிழ் நிரல் தொகுப்பு,” என்ற தலைப்பில் பேசுவேன்.
அருளாளன், சையது அபுதாகிர், பரதன் தியாகலிங்கம், சீனிவாசன், சத்தியா மகாதேவன், அருண்ராம், மற்றும் முத்து அண்ணாமலை.
அனுகும் மின்னஞ்சல்: ezhillang@gmail.com, நாள்: ஜீலை 1, 2020.
ஒப்பன் தமிழ் என்பது ஒரு திற்மூல் நிரல் தொகுப்பு திட்டம். இது எழில் கணினி மொழியில் ஆக்கத்தை தொடர்ந்து தமிழில் பலரும் எளிதாக கணினி செயலிகளை பைத்தான் மொழியில் உருவாகவேண்டும் என்ற நோக்கில் எழிலின் ஒரு கீற்றாகப் பிறப்பெருத்தது. இந்த நிரல் திட்டம் முதலில் பைத்தான் மொழியில் வெளிவந்தது – பின்னர் சில சேவைகள் மட்டும் ஜாவா, ரூபி மொழிகளில் வழ்ங்கப்பட்டன் – எனினும் பெரும்பாலான வசதிகள் பைத்தான் மொழியின் வாயிலாகவே பெறமுடியும்.
படம். 1: தமிழ் பேசு திட்டத்தின் சின்னம்.
இந்த நிரல்தொகுப்பிலுள்ள மொட்யூல்களாவன கீழோ. இவற்றின் முழு விவரங்களையும் காண http://tamilpesu.us/static/sphinx_doc/_build/html/sphinx_doc/ இங்கு செல்லலாம்.
Module | பயன்பாடுகள்/சார்புகள் | |
1 | tamil | Tamil tokenization, word ordering, encoding converters, numerals, text summarizer. |
2 | ngram | corpus modeling classes |
3 | solthiruthi | Tamil spelling checker algorithms |
4 | spell | Tamil spelling checker application |
5 | tamilmorse | Morse code generation, decoding for Tamil |
6 | tamilsandhi | Tamil sandhi-checker – packaged with Open-Tamil but developed independently by Nithya and Shrinivasan. |
7 | transliterate | Tamil transliteration tools |
8 | tamilstemmer | This module is new in version 0.96 and provides access to simple stemmer functions originally created by Damodharan Rajalingam |
9 | tabraille | Tamil Braille generation following Barathia Braille standard |
10 | kural | Thirukkural source text and English translation |
.
Open-Tamil source code examples like numeral to audio generation, ngram generation, corpus analysis etc. see link here.
2015-இல் முதல் வெளியீடு (வரிசை எண் 0.4) கண்டு பின்னர் இந்த ஆண்டு ஜூன் 12-இல் சமீபத்திய (ஒன்பதாம்) வெளியீடு (வரிசை எண் 0.97) கண்டது. இந்த நிரல் தொகுப்பு MIT உரிமம் வழியாக நீட்சி செய்தும், பகிர்ந்து மறுசெயல்பாட்டிலும் உபயோகிக்கலாம்.
சமீபத்திய வரிசை எண் 0.97-இல் வெளிவந்த புதிய அம்சங்களானவையாவன:
இதனை நிறுவ இப்படி கட்டளை கொடுக்கலாம்,
$ pip install open-tamil
ஏற்கனவே நிறுவியிருப்பின் புதிய அத்யாயத்தில் நிறுவ, என்றும் கொடுக்கலாம்.
$ pip install –upgrade open-tamil
ஓப்பன்-தமிழ் திட்டம் இதனைக்கொண்டு பல மென்பொருடகள் இன்று இயங்கிவருகின்றன – இவற்றில் முக்கியமானவை http://tamilpesu.us என்ற வலைத்தளம். இந்த நிரல்தொகுப்பில் இருந்து செயல்பாடுகளை மொத்தமாக வலைவழியாக தமிழ் ஆர்வலர்கள் கணிமை செய்யாமல் பயன்படுத்த இது உதவும்.
படம் 2: ஒப்பன்-தமிழ் வழி உருவாக்கப்பட்ட தமிழ்பேசு வலைதளத்தில் உள்ள பெருக்கல் அட்டவனை செயலி.
ஒப்பன் தமிழ் கொண்டு பல தமிழ்இயல்மொழி ஆய்வுகள் (உதாரணமாக Tamil NLP, PyTamil) என்ற திட்டங்களும் செயல்படுகின்றன. இது எங்களுக்கு தெறித்தவை மட்டுமே!
மற்ற திற மூல மென்பொருட்களைப்போலவே ஒப்பன்-தமிழ் இதன் உருவாக்கம், மற்றும் வளர்ச்சி கிட் வலைத்தளத்தில் வழியாக நிர்வாகிக்கப்படுகிறது. இதன் சுட்டி –
https://github.com/Ezhil-Language-Foundation/open-tamil
எழில் மொழி அறக்கட்டளையின் பார்வையில் இது மேம்படுத்தப்பட்டாலும், இதன்வழியாக பத்துக்கும் மேற்பட்ட பங்களிப்பாளர்கள் உள்ளனர்.இந்த திட்டம் ஏரக்குறைய 800 பங்களிப்புகளை பெற்றும், 114 வழு/திறணாம்சங்களையும் முடிவுபடித்தியும், மேலும் 82 திறணாம்சங்களை ஒழுங்கு செய்தும் வடிவமைப்புக்காக குறிக்கப்பட்டுள்ளன.
இந்த திட்டத்தை அனைவரும் தொடர்ந்து பயன்படுத்தியும், ஆதரிக்குமாரும் கேட்டுககொள்கிறோம்.
தமிழ் கணிமையில் பல கட்டுரைகள் வருகின்றன – அவற்றில் சில கட்டுரைகள் ஒரு முற்றிலும் வேறுபட்ட சிந்தனைகளை முன்வைக்கும்; பல கட்டுரைகள் முன்னோர் சென்றவழியில் எளிதாகவும், சிறப்பாகவும், சிக்கனமாகவும் (கணினியளவில்) மற்றும் பொருளாதார, நுகர்வோர் அணுகுமுறை என்றபடியாக உள்ள புதுமைகளை விளக்கும்.
இந்த சில கட்டுரைகள் செல்லாத இடத்திற்கு, முற்றிலும் வேறுபட்ட சிந்தனைகளை முன்வைப்பவைகளில் சிலவற்றைப்பற்றி இன்று பார்க்கலாம்.
தமிழ்-99 விசைபலகைக்கு ஒரு மேம்பாடு என்ற படியாக 2004-இல் நடந்த தமிழ் கணிமை மாநாட்டில் இந்த (clj-thamil படைத்த இளங்கோ சேரன் குழுவினரால்) கட்டுரை “Optimization of Thamil Phonetic Keyboard.” இதில் ஆசிரியர்கள் கூறியதாவது, தமிழ்-99 விசையில் மெய்களுக்கு பதில் அகர-மெய்களை விசைப்பலகையில் பொருத்தினால் சிக்கனமாக (விசை தட்டச்சு செய்யும் எண்ணிக்கையில் குறைவாக) ஒரு குறிப்பிட்ட உரையை இந்த மாற்று விசைப்பலகையில் உள்ளீடு செய்யலாம் என்று கண்டெடுத்தார்கள். ஆனால் இதை உள்வாங்கி எதுவும் செய்யவில்லை.
அடுத்த கட்டுரைக்கு மேர்கோள் என்க்கு கிடைக்கவில்லை, KaReFo-குழுவினரால் “iTamil,” (2016) ; ஆனால் அதன் சாராம்சமாவது தமிழின் உயிமெய் எழுத்து வடிவத்தை முற்றிலுமாக மாற்றியமைக்க ஒரு ஆய்வு பரிந்துரை சமர்ப்பிக்கப்பட்டது. ஆனால் இந்த கட்டுரை 2016-ஆம் ஆண்டு நடந்த தமிழ் கணிமை மா நாட்டில் வாசிப்பு பெற்றாலும் அது பின்னர் நீக்கம் ஆயிற்று – காரணம் இதனை ஆய்வளவில் கூட தமிழ் சமுகம் ஏற்கக்கூடாது என்றோரு தரப்பின் வாதம் வெற்றி பெற்றதன் காரணம். இந்த சர்ச்சைக்கும் அப்பால் அவர்கள் சொன்ன கோரிக்கை, ஆய்வுகளை பார்க்க இந்த செய்தி உபயோகரமாக வரலாற்று சின்னமாக அமைகிறது.
ஆய்வுக்களத்தில் சிந்திக்கலாம்தானே! அதை நடைமுறைப்படுத்தவேண்டுமானால்தானே மேலும்/கூடுதல் விவாதங்கள் தேவை? சிந்தனையே தடைசெய்யப்படவேண்டுமெனில் தமிழருக்கும் தலிபனார்களுக்கும் வித்தியசமென்ன?
சமிபத்தில், கவிஞர் சல்மா வரிகள் போல, எல்லாரும் வௌவால்களா இந்த கொரொனாவினால் நிலைகுலைந்தனர். அவர்களின் நீண்ட பட்டியலில் நானும் ஒருவன் – ஆனால் அதிகளவு பாதிப்பு ஏதுமில்லை – வீடு, வாசல், சோறு, தண்ணி இதுக்கெல்லாம் திண்டாட்டம் இல்லை என்றாலும், இங்கு அமெரிக்க மண்ணில் 20% வேலையிழந்த பலரையும் போல் வேலைக்கு மட்டும் காவுவாங்கிட்டேன்.
சரி. இந்த நேரத்தில் மற்ற சிலபல செயல்கள் முடிவில்லாமல் தொடங்கியதை முடித்துவைக்க சில படிகள் எடுக்க நேரம் கிடைத்தது. மேலோகத்தில் இருப்பவன், என்றும் அதை நப்புபவர்கள், ஒரு கதவை மூடினால் மற்றொரு கதவை திறப்பார் என்றபடியாக இது தமிழ் வெளியில் எப்போதும் நம்மளை கொண்டு சேர்த்தது.
மொத்தம் 3-ஆய்வுகள், பெரும்பாலும், முடிவு பெற்ற நிலையில் இருந்தன; அவையாவன,
இந்த பேரிடர் காலகட்டத்தில் என்னை அடைக்கலம் கொடுப்பதில் ஒன்று மொழி, மொழியியல் அதில் வசிக்கும், செயல்படும் அஞ்சா நெஞ்சர்கள். இதையும் காலம் கடந்து செல்வோம். உருதுணையாக இருந்தவர்கள் அனைவருக்கும் நன்றி.
-முத்து
சில தலைப்புகளில் தமிழ் உரை சிக்கல்கள் அதனைக் கையாளும் ஒரு யுகிப்புகளையும் ஏற்கணவே கண்டோம். தமிழ் அறிவாளிகளிலும், எழுத்தாளர்களிலும் ஒரு தனியிடம் வகிக்கும் ஐயா திரு. நாஞ்சில் நாடன் (அவர் முதுகலை புள்ளியியளாளர் என்பதால் எண்களில்/பொறியாளர்களுக்கு நெருக்கமானவராகவும் சற்று அவரை காணத்தோன்றுகிறது) சில ஆண்டுகளுக்கு முன்பு தமிழில் புழக்கப்படும் சொல்வளம் வெரும் முன்னூரு சொற்கள் மட்டும் தான் என்று திடுக்கிடும்படி சொன்னார். இதனை, ஒரு கம்பராமாயண படித்து உரை எழுதிய அறிஞர்/வித்தகரிடம் இருந்து வருவது மிக முக்கியமான ஒரு மொழியின் போக்கைப்பற்றிய விமர்சனம்.
அதாவது தற்காலிக தமிழில் சுமார் மூன்று இலட்சம் சொற்கள் இருக்கு என்றால் அதில் 1/10 சதவிகிதம், அதாவது 0.1% சொற்களை மட்டும் தான் நாம் புழக்கப்படுத்துகிறோம் – அவ்வை எப்படி போர்கிடங்கில் உள்ள ஆயுதங்களை பற்றி விமர்சித்தாள் என்றது போல் நாஞ்சில் அவரது கூற்றை நாம் எடுத்துக்கொள்ளலாம். தமிழில் யாரும் ஒரு சொல்லாடல் கணக்கொடுப்பு அல்லது இயல்மொழி பகுப்பாய்வு கணக்கெடுப்பு மென்பொருளை உருவாக்கினால் அதற்கு நாஞ்சில் என்று பெயருடிங்கள்.
இந்த வாரம் கொரோனாவினால் உலகெங்கும் ஊரடங்கில் இருக்கின்றோம். சில தமிழ் கணினியாளர்கள் நங்கள் இணையம் வழி சந்திப்பு நடத்தினோம் – அதன் வீடியோ இங்கு பதிவில் காணலாம். இந்த சந்திப்பின் படம் இந்த கட்டுரையின் தலைப்பில் காணலாம்.
இந்த வாரம் எனக்குப் புலப்படும் சிக்கல் இதோ: இடைவெளி எண்கள் – அதாவது ஒரு மதிப்பினை தோராயமாக நாம் குறிக்கும் போது – “எவ்வளது நாள் ஆகும் இந்த பொருள் வீடுசேர?” “சுமார் பத்துப்பதினைந்து நாட்களில் வரும்” – என்றபடி நாள்தோரும் நாம் கேட்கின்றோம். இதனை கணினியில் எப்படி இயல்மொழி உணரலாம் ?
மேலும், இவற்றில் எப்போதும் கீழ்வரிசையில் மட்டுமா வரும் ? (வெக்கை நாவலில் பூமணி, பத்து-ஐஞ்சு என்ற சொலவம் பயன்படுத்துகிறார்). இவை இரண்டிற்கும் ஒரே மாதிரியான அல்கோரிதம்
இதில் திறித்துப் பார்த்தால் மற்றுமொரு கேள்வி இருக்கின்றது: தமிழில் சில எண்களை அதிகம் பேசப்படுகின்றன:
இடம் சூட்டும் எண்கள் (ordinals) என்பவையும் உள்ளன – அதாவது,
உதாரணமாக எங்கு நாம் இந்த எண்களை உரைவடிவில் இருந்து புரிந்து கொள்ள வேண்டும் என்றால் ஒலிவழி உணரியின் வழியாக கணிதம் செய்தல் என்றபடி இது தேவைப்படுகிறது. இதனை 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. | |
Terms | |
Privacy | |
Security | |
Status | |
Help |
சமிபத்தில், ஊரடங்கின் உச்சியான சமயத்தில் உடற்பயிற்சி செய்து கொண்டிருக்கும் சமயம் ஒரு சிந்த்தனை – அதனை நினைத்துப் பார்க்கவே வியப்பாய் இருந்த்தது -“{உங்கள் நாட்டின்/மாநில} அரசு தமிழ் மொழியின் வளர்ச்சியை ஆதரிக்கிறதா?” என்ற கேள்வி. நான் பருகியிருந்த காப்பியை முழுங்கமுடியவில்லை – விடை என்னிடம் இல்லை. மொழி என்பது நாம் பயன்பாட்டில் – அரசு உத்தரவில் கிடையாது. சிந்தைவெளியில் வளர்ச்சியை மந்தைவெளியின் ஊக்கத்தில் பார்ப்பது தவறு என்றும், அரசின் பொருப்பு பதவியை தக்கவைத்துக்கொள்வது என்பதும்தான் தினசர் நிஜமாக உலகெங்கும் உள்ளது. தனி நபர் முயற்சியால் சில செயல்பாடுகளை எதிர்கொள்ளலாம் ஆனால் தமிழ் என்றும் சீன மொழிமாதிரி ஆகும் என்றேல்லாம் பகல்கணவுகள் காண எனக்கு உடன்படாது.
இந்த வார பகுதியில் ஒரு வித்தியாசமான சிக்கலைப்பற்றி பேசலாம், முன்னரே எழுதிய பகுதிகளை இங்கு காண்க; அதாவது ஒரு எழுத்துணரியின் வழியாக தயாரிக்கப்பட்ட தமிழ் சொற்றொடரில் சில சமயம் மெய் புள்ளிகள் மறைந்துவிடுகின்றன. இது சற்றி இயந்திர கால சிக்கல் என்றால் அப்போது கல்வெட்டுக்களிலும் நூற்றாண்டின் நாளடைவில் இப்படிப்பட்ட சிக்கல்கள் தோன்றுகின்றன; ஆகவே இது தனிப்பட்ட ஒரு சிக்கல் இல்லை என்பதும் புலப்படுகின்றது. இந்த வலைப்பதிவில் உள்ள அல்கோரிதத்தை இங்கு ஓப்பன் தமிழ் நிரலாக காணலாம்.
எனக்கு இந்த சிக்கல் இருப்பதன் காரணம், 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-இல் ஆறு சொற்கள் சரியாவருகிறது.
மேலும் தொடர்புக்கு உங்கள் விவரங்களை இங்கு சேர்க்கவும்.
ஏற்கணவே எழுதிய கட்டுரை கீற்றில் தமிழ் கட்டுரைகளில் எப்படி பால் ஓற்றுமை படுத்துவது என்ற கேள்வியைப்பற்றி கண்டோம். இன்று, தமிழில் எப்படி இரட்டைக்கிளவி சொற்கள், பரத நாட்டிய/கருநாடக இசையில் ஜதி சொற்கள், என்பதை கணினியால் சுயமாக அறியமுடியும் என்ற கேள்வியைப்பற்றி பார்க்கலாம். விடைகள் என்னிடம் இருந்தால் INFITTக்கு முதல் ஆளாக கட்டுரை எழுதிருபேன் இல்லையா ஹஹா ;).
முதன்மையில் இவ்வை சொற்கள், இரட்டைக்கிளவி மற்றும் ஜதி சொற்கள், ஒருவகையான இசைவுத்தன்மையை சொல்பவை. இதனை, மற்ற மொழிகளிலும் காணலாம் – முதன்மையாக ஆங்கிலத்தில் இதனை Onomatopoeia என்றும் சொல்கின்றனர்.
தமிழ் சினிமா இசை பாடல்களில், செய்யுள்களில், என பல இடங்களில் சீசீ இங்தப்பழம் புளிக்குது என்று சொல்லும் சுடசுட கிசுகிசு பத்திரிகைகளிலும் எல்லாஇடத்திலும் பரவலாக உள்ள தமிழ் சொல்லாடல் அம்சமாக விளங்குகின்றது இந்த இரட்டைக்கிளவி.
உதாரணம், இந்த 1998-இல் வெளிவந்த ஜீன்ஸ் படப் பாடலான “கண்ணோடு காண்பதெல்லாம்…” பாடலில் இரட்டைக்கிளவி, மற்றும் ஜதி சொற்கள் இடம் பெருகின்றன:
தக்ரதக்ரதக்ரதிம் தக்ரதக்ரதக்ரதிம் தக்ரதக்ரதக்ரதிம் தக்ரதக்ரதகஜம் (2) சலசல சலசல இரட்டைக் கிளவி தகதக தகதக இரட்டைக் கிளவி உண்டல்லோ தமிழில் உண்டல்லோ
தமிழில் சராசரி சொல்லாடல்களை சற்று விக்கிப்பீடியாவில் கண்டால் அவர்கள் பட்டியலில் வருவதாவது,
சில கேள்விகள்
எனது அனுபவத்தில், இதன் தானியங்கி விதிகள் regular expression என்ற சார்ககத்தினால் எந்த ஒரு உரையிலும் கண்டெடுக்கலாம் என்றும் எண்ணுகின்றேன் – (தமிழில் regular expression-களை ஓப்பன் தமிழ் நிரல் திரட்டில் நீங்கள் பார்க்கலாம்) – எனினும் இது எளிதான செயல் அல்ல – அதுவும் கணினி நினைவகம்/இயக்கும் நேரம் big-O சிக்கல் அளவுகளில் சிக்கனமாகவும் துரிதமாகவும் இந்தவகைச்சேவைகளைச்செய்வது ஒரு கடினமான காரியம்.
pattern = u"^[க-ள].+[க்-ள்]$" data = [u"இந்த",u"தமிழ்", u"ரெகேஸ்புல்", u"\"^[க-ள].+[க்-ள்]$\"",u"இத்தொடரில்", u"எதை", u"பொருந்தும்"] output = match(data, pattern) expected = [1,2,6] # i.e.தமிழ்
மற்ற ஒரு தீர்வு செயற்கையறிவு, ஆழக்கற்றலினால் வரும் என்றும் சொல்லலாம். இந்த கேள்வியை ஒரு classification பகுப்பாய்வு எந்திரவழிகற்றலாக கணினியிடம் நியமித்து, விக்கி மற்றும் பல இடங்களில் இருந்து தரவுகளை தயாரித்து இந்த செயற்கைப்பின்னலை பயிற்சிஅளித்தால் அது நேரம் போகையில் அது திறன்களைப்பொரும்.
மேலும் – ஒரு நல்ல sequence-to-sequence வழியாக கட்டமைக்கப்பட்ட செயற்கையறிவு மாதிரி பின்னல் நாம் சொல்லிக்கொடுத்ததைவிட அதிகமாகவே கற்றிருக்கும் தன்மையையும் நாம் பார்க்கக்கூடும் என்று யுகிக்கக் தோன்றுகிறது.
இது இன்றைக்கு உள்ள சிக்கல்.
தமிழ் செயற்கையறிவு மற்றும் எந்திர வழி உரை பகுப்பாய்வு போன்ற செயல்பாடுகளின் திறன் தினமும் வளர்ந்து கொண்டே போகின்ற சமயத்தில் (செயற்கையறிவு என்ற பேரலையின் முதுகில் பயணிக்கின்றது என்றபடியாக) இவற்றினால் கடக்கவேண்டிய சில புதிர்கள் என்ன (என்பார்வையில்) என்று இந்த பதிவில் அலசலாம்.
மேலும் சில திறன்களை தமிழ் இயல்மொழிபகுப்பாய்வு பெரும் என்றும் நம்பலாம்; அடுத்தகட்ட கேள்விகள் / புதிர்கள் அடுத்த பதிவில்.
நன்றி
-முத்து
எதர்க்காக செயற்கையறிவு எந்திரங்கள் ? நாம் செய்யும் தற்சமையம் அபாயகரமான தொழில்களிலும், நிபுனர்கள் குறைவாக உள்ள தொழிகளிலும் அதன்கண் விலைவாசிகளை குறைக்கும் வண்ணம் பலருக்கும் அத்தகைய சேவைகளை அளிப்பதிலும், தினசரி வாழ்வில் உள்ள சிறு சிறு விடயங்களை மேம்படுத்தவும் இவைகள் உதவுவது நாம் குறிக்கோள்களானாலும், இவை மற்றும்தானா செயற்கையறிவின் இலக்குகள்/பயன்கள்?
இல்லை. தீய பயன்களுக்கும் செயற்கையறிவு சிலரால் பயன்படுத்தலாம்உதாரணம்:
பற்றியும் படித்தால் நாளைய ரோபோக்கள் எந்தவித வேலைகளில் ஈடுபடலாம் என்றும் அவற்றில் சில மனித அறம் மீரியவை என்றும் புலப்படுகின்றது.
ரோபோக்களின் திறன்களை செயற்கையறிவின் அறம் கொண்டு நிர்ணயிக்கும் தருணத்தில் இன்று நாம்இருக்கின்றோம். இந்த நிலை வெகு ஆண்டுகள் நீடிக்கும் என்பது சந்தேகத்திற்குறியதாக இருக்கின்றது. முதன் முதலின் இவற்றினை பற்றி பிறபலமாக அலசல் செய்தும் ரோபோக்களில் மீர கூடாத/முடியாத மூன்று கோட்பாடுகள் அளித்தவர் அசிமோவ்.
மேலும், இந்த சூழலில் கனடிய மொண்ரியால் பல்கலைக்கழகம் நடத்திய கருத்தரங்கின் வழிவந்த ஒரு செயற்கையறிவு நடுவன் மற்றும் மூல கட்டமைப்பு கோட்பாடு உலகத்தரம் வாயந்ததாகவும், பொதுவான குடியரசு, ஜனநாயக, சமத்துவ, மனித உரிமை, கோட்பாடுகளின் மீதும் தழுவிய அறக்கோட்பாடுகளென காண்கின்றேன். இதன் முழு உரை இங்கே: https://www.montrealdeclaration-responsibleai.com/the-declaration – இந்த ஆவணத்தை சிறந்த வழக்கறிஞர்களும், தொழில்நுட்பவியலாளர்களும் சேர்ந்து தமிழிலும் ஒரு நாள் மொழிபெயர்ப்பார்கள் என்று எண்ணலாம்.
மேலும் ஐக்கிய அமெரிக்க அரசும் இதனைப்போல் ஒரு பொது நல செயற்கையறிவின் பயன்பாட்டினை அமெரிக்க நாட்டின் நலத்திற்காகவும், உலக மக்களின் நலன், முன்னேற்றத்திற்காகவும் இங்கு அளித்திருக்கின்றது. https://www.bloomberg.com/opinion/articles/2020-01-07/ai-that-reflects-american-values
எனது பொறியாளர் நம்பிக்கை என்னமோ இயந்திரங்களை நாம் பிரம்மனைப்போல் படைத்தாலும் அவற்றின் மரபணுவில் நமது தலை சிறந்த மனிதவியல் கோட்பாடுகளை மட்டுமே சேர்க்கவேண்டும்.
-முத்து.
Toronto, Canada is one of the largest cities in North America. Specifically, the Tamil population of Canada has a distinctive presence and shapes the culture and society of this diverse, vibrant city. After the successful completion of Harvard Tamil Chair, the Tamil Chair, Inc. organization has initiated a effort to incorporate a Tamil Chair at University of Toronto, Scarborough (UTSC).
Learn more on project and contribution modalities at following links,
Blog readers are requested to contribute to support this cause to further understanding of Tamil language, Tamil literacy and archival/research into people, culture and milieu.
-MA