The Google-Docs typeset version of the book “Practical Data Structures and Algorithms,” in English is released here; this book is still under preparation – so once the proofs are completed a PDF will be released. People interested to collaborate can drop me a email at ezhillang@gmail.com
அமெரிக்காவில் மார்ச்சு மாதம் மகளிர் வரலாறு மற்றும் பாரம்பரியம் அடைந்த வெற்றிகளையும் முன்னேற்றங்களையும் கொண்டாடும்/நினைவூட்டும் வகையில் அமைக்கப்பட நிகழ்வுகள் கொண்ட மாதம்.
பொதுவாக கணிமையில் பெண்கள் பல கண்டுபிடிப்புகளை கொண்டுசேர்த்து கணினி உலகை இன்று நாம் காணும் வகையில் சிறப்பித்துள்ளனர்; முக்கியமாக,
அடா லவ்லேஸ் – முதல் கணினி நிரலர் – சார்ல்ஸ் பாபேஜுடன் பணியாற்றினார். காண்க
கிரேஸ் ஹொப்பர் – முதல் கணினி கம்பைலரை (தொகுப்பான்) – உருவாக்கினார். காண்க
பிரான்சஸ் அலன் – கணினி கம்பைலர்களில் SSA, CFG போன்ற பல சாதனை கண்டுபிடிப்புகளையும் நடைமுறை செயலிகளையும் உருவாக்கியவர். காண்க
பார்பரா லிஸ்காவ் – கணினி மொழிகள் / நிரலாக்கத்தில் SOLID என்ற தத்துவார்த்த அடிப்படை கட்டமைப்புகளை கண்டெடுத்து இன்றும் அனைவரும் பயன்படுத்தும் கோட்பாடுகளை உருவாக்கியவர். காண்க
ஷாபி கோல்டுவாஸ்ஸர் – கணினி ரகசிய தகவல் பரிமாற்றம், தகவல் தொடர்பாடல் போன்ற துறைகளில் சாதனையாளர். காண்க
கணிமை எனும் பூந்தோட்டம்; (C) 2021, முத்து அண்ணாமலை. இடம்: வட கலிபோர்னியா, மார்ச்சு 2021.
தமிழ் கணிமையில் ஆய்வு நிலையிலும் களப்பணிகள் அளவிலும் யார் என்னவான பணிகளை செய்து வருகிறார்கள்? எனக்குத்தெறிதளவு ஒரு சிறிய பட்டியல் ஆனால் சீறிய படைப்பாளர்கள்; இவர்கள் அனைவருமே சிறந்த பொறியியலாளர்கள்!
பெயர்
முக்கிய பணிகள்
நிறுவனம்
ஆய்வுகட்டுரைகள், களப்பணிகள் தொடுப்பு
வி எஸ் ராஜம்
தமிழ் மொழியியலில் தொல்காப்பியம் மற்றும் வடமொழி இலக்கண மரபுகளை ஒப்பிட்டு ஆய்வுகள் செய்தார். தமிழின் சிறப்பை மேற்கத்திய பல்கலைகளில் வெளிக்கொனற செய்தவர்
ஓய்வு பெற்றவர். UPenn
A Reference Grammar of Tamil Classical Poetry காண்க
டிவி கீதா
தமிழ் கணினி ஆய்வுக்கூடம் (TACOLA) என்ற அமைப்பை அண்ணா பல்கலைக்கழகத்தில் தொடங்கி பல சிறந்த ஆய்வுகளை மேற்கொண்டார்; முக்கிய பங்களிப்புகளாக விளங்குவது சொல்திருத்தி, தமிழ் வேர்ச்சொல் பகுப்பாய்வு என்பதன் ஆய்வுகளை நடத்தியும் வெளியிட்டார்.
TACOLA ஆய்வு கூடம் நிறுவனர் – முக்கிய பங்களிப்புகளாக விளங்குவது சொல்திருத்தி, தமிழ் வேர்ச்சொல் பகுப்பாய்வு என்பதன் ஆய்வுகளை நடத்தியும் வெளியிட்டார். தொடர்ந்து ஒரு பெரிய ஆய்வு பரம்பரையையும் உருவாக்கியவர்.
AU-KBC. உரை பெயர்/வினை சொல் பாகுபாட்டிற்கு பொன்னியின் செல்வன் காப்பியத்தை POS tagger ஆக உருவாக்கியவர். தமிழ், இந்தி, மலயாளம் கணிமையில் வல்லமை பெற்றவர். மேலும் தொடர்ந்து ஒரு பெரிய ஆய்வு பரம்பரையையும் உருவாக்கியவர்.
தமிழ் சந்திப்பிழைதிருத்தியை உருவாக்கியவர். கணியம் நிறுவனர். திறமூல தமிழ்க்கணிமை பங்களிப்பாளர், தொழில் நுட்ப நூலாசிரியர் “எளிய தமிழில் .. ” என்ற நூல்வரிசையின் ஆசிரியர்.
தமிழ் இலக்கணம் நன்னூல் வழி இயந்திர உரை ஆய்வுகள், செயற்கையறிவு வழி (AI/ML) சொல்-பொருட்பெயர் தரவகம் (NER) மற்றம் பல ஆய்வுகளை தமிழில் தொடர்ந்து நடத்தி வரும் ஆய்வாளர். TACOLA, KaReFo நிறுவனங்களுடன் இணைந்து ஆய்வுகள் நடத்துபவர்.
தமிழ் கணிமைக்கு பங்காற்றிய பெண்களில் ஒரு பட்டியல்.
தமிழ் கணிமை எதிர்கொள்ளும் சிக்கல்கள் மட்டும் நமது செயல்பாட்டுத்திறன் போன்றவை குறைபாடாக உள்ளதால், தொடர்ந்து தமிழ்க்கணிமையில் நாம் அனைவரும் சிகரம் தொட்டிட அனைவரின் உதவியும் தேவை; ஆகையால், பொது இடங்களில், வலைபதிவுகளிலும், கருத்தரங்குகளிலும், மடல் பதிவுகளிளும் நாகரிகமாக, கருத்துவேறுபாடுகளை சமரசமாக கையாளும் நயத்துடன் ஒன்றுகூடி தேர் இழுக்கும் முறையில் செயல்படுதல் அவசியம். இடம் குடுப்போம், வளம் பெருவோம்!
-முத்து
கீழ்குறிப்பு: இந்த கட்டுரை எழுத உதவிய பேரா. சுபலலிதா அவர்களுக்கு நன்றி.
இரண்டு பைத்தான் சொற்பிழை திருத்திகளை சமிபத்தில் எளிதாக பயன்படுத்தும் வண்ணம் “பொட்டலம்” போட்டேன். அதாவது மளிகைக்கடைகளில் அரிசி பருப்பு வகைகள் சாக்குகளில் இருந்தாலும் மொத்தவிலை கடைகளில்லாமல் தனியார் செல்லும் நகர கடைகளில் இவை பொட்டலங்களாக “பாக்கேட்” செய்து, நமது நேர நெருக்கடிக்காக, விற்கப்படும். அதே போல பல நல்ல நிரல்கள் பொதுவிலும், கிட் ஹபிலும் இருந்தாலும், இவற்றை பொதுவில் நிரலர்கள் பயன்படுத்த நாம் இதனை பொட்டலம் செய்தும், அரிசியில் கற்களை பொறக்கியெடுத்தும் சீர்செய்து மளிகைக்கடைக்காரர் செய்வார் இல்லையா, பரிசோதித்தும் வெளியிட்டுள்ளேன்.
இன்று கொரொனா காலத்தில் ஒரு இணையவழி நேரலையில் தமிழ்க்கணிமையில் எப்படி செயல்படுவது என்பதைப்பற்றிய ஒரு அறிமுகப்படுத்தி பேச வாய்ப்பு கிடைத்தது. அழைப்புவிடுத்த பேரா. சுபலலிதா அவர்களுக்கு நன்றி.
சமிபத்தில், கவிஞர் சல்மா வரிகள் போல, எல்லாரும் வௌவால்களா இந்த கொரொனாவினால் நிலைகுலைந்தனர். அவர்களின் நீண்ட பட்டியலில் நானும் ஒருவன் – ஆனால் அதிகளவு பாதிப்பு ஏதுமில்லை – வீடு, வாசல், சோறு, தண்ணி இதுக்கெல்லாம் திண்டாட்டம் இல்லை என்றாலும், இங்கு அமெரிக்க மண்ணில் 20% வேலையிழந்த பலரையும் போல் வேலைக்கு மட்டும் காவுவாங்கிட்டேன்.
சரி. இந்த நேரத்தில் மற்ற சிலபல செயல்கள் முடிவில்லாமல் தொடங்கியதை முடித்துவைக்க சில படிகள் எடுக்க நேரம் கிடைத்தது. மேலோகத்தில் இருப்பவன், என்றும் அதை நப்புபவர்கள், ஒரு கதவை மூடினால் மற்றொரு கதவை திறப்பார் என்றபடியாக இது தமிழ் வெளியில் எப்போதும் நம்மளை கொண்டு சேர்த்தது.
மொத்தம் 3-ஆய்வுகள், பெரும்பாலும், முடிவு பெற்ற நிலையில் இருந்தன; அவையாவன,
தமிழ் உயிரெழுத்துக்கள் செயற்கைப்பின்னல் வழியாக திறன்கண்டுகொள்வது. இதை, ஜூன் 2019-இல் தொடங்கிய ஒரு ஆய்வு என்றாலும் இந்த மூன்று கால இடைவெளியில் தான் இன்று முடிவடைந்தது. இதனை ArXiV-இல் கற்பூரம் மீது சத்தியமிட்டாமல் ஏழு நாள் தாமதத்துடன் வெளியானது. தலைப்பு: “Tamil Vowel Recognition With Augmented MNIST-like Data Set,” https://arxiv.org/abs/2006.08367
அடுத்த கட்டுரை “Generation and Parsing of Number to Words in Tamil”, இதை ArXiV ஏற்க மறுத்தது – காரணம் எங்கள் வாசகர்களுக்கு இது சுவாரசியமானதல்ல என்ற சாக்கைச்சொல்லி மழுப்பினார்கள். இதை நான் மற்றொறு மொழியியல் மாநாட்டிற்கு அனுப்பியுள்ளேன் – என்ன விளைவு என்று பார்க்கலாம்.
அடுத்த கட்டுரை “Algorithm to correct missing pulli signs in printed Tamil text,” என்பது [2] போல் அதே கதி. பார்க்கலாம்.
கடைசியாக எழுத நினைத்தது ஆனால் நேரம் கிடைக்கவில்லாமல் போனது என்றால் “தமிழில் சொற்களை ஒலி எண்களாக பிரிப்பது” (Syllable identification) என்பதை bigram/unigram என்ற எழுத்தளவான புள்ளியியல் வடிவில் கொண்டு இவற்றை செயல்படுத்துவது. இதற்கு உங்களுக்கு ஆர்வம் இருந்தால் என்னுடன் இணைந்து செயல்படலாம் வாங்க.
இந்த பேரிடர் காலகட்டத்தில் என்னை அடைக்கலம் கொடுப்பதில் ஒன்று மொழி, மொழியியல் அதில் வசிக்கும், செயல்படும் அஞ்சா நெஞ்சர்கள். இதையும் காலம் கடந்து செல்வோம். உருதுணையாக இருந்தவர்கள் அனைவருக்கும் நன்றி.
சில தலைப்புகளில் தமிழ் உரை சிக்கல்கள் அதனைக் கையாளும் ஒரு யுகிப்புகளையும் ஏற்கணவே கண்டோம். தமிழ் அறிவாளிகளிலும், எழுத்தாளர்களிலும் ஒரு தனியிடம் வகிக்கும் ஐயா திரு. நாஞ்சில் நாடன் (அவர் முதுகலை புள்ளியியளாளர் என்பதால் எண்களில்/பொறியாளர்களுக்கு நெருக்கமானவராகவும் சற்று அவரை காணத்தோன்றுகிறது) சில ஆண்டுகளுக்கு முன்பு தமிழில் புழக்கப்படும் சொல்வளம் வெரும் முன்னூரு சொற்கள் மட்டும் தான் என்று திடுக்கிடும்படி சொன்னார். இதனை, ஒரு கம்பராமாயண படித்து உரை எழுதிய அறிஞர்/வித்தகரிடம் இருந்து வருவது மிக முக்கியமான ஒரு மொழியின் போக்கைப்பற்றிய விமர்சனம்.
அதாவது தற்காலிக தமிழில் சுமார் மூன்று இலட்சம் சொற்கள் இருக்கு என்றால் அதில் 1/10 சதவிகிதம், அதாவது 0.1% சொற்களை மட்டும் தான் நாம் புழக்கப்படுத்துகிறோம் – அவ்வை எப்படி போர்கிடங்கில் உள்ள ஆயுதங்களை பற்றி விமர்சித்தாள் என்றது போல் நாஞ்சில் அவரது கூற்றை நாம் எடுத்துக்கொள்ளலாம். தமிழில் யாரும் ஒரு சொல்லாடல் கணக்கொடுப்பு அல்லது இயல்மொழி பகுப்பாய்வு கணக்கெடுப்பு மென்பொருளை உருவாக்கினால் அதற்கு நாஞ்சில் என்று பெயருடிங்கள்.
இந்த வாரம் கொரோனாவினால் உலகெங்கும் ஊரடங்கில் இருக்கின்றோம். சில தமிழ் கணினியாளர்கள் நங்கள் இணையம் வழி சந்திப்பு நடத்தினோம் – அதன் வீடியோ இங்கு பதிவில் காணலாம். இந்த சந்திப்பின் படம் இந்த கட்டுரையின் தலைப்பில் காணலாம்.
2. இடைவெளி எண்கள்
இந்த வாரம் எனக்குப் புலப்படும் சிக்கல் இதோ: இடைவெளி எண்கள் – அதாவது ஒரு மதிப்பினை தோராயமாக நாம் குறிக்கும் போது – “எவ்வளது நாள் ஆகும் இந்த பொருள் வீடுசேர?” “சுமார் பத்துப்பதினைந்து நாட்களில் வரும்” – என்றபடி நாள்தோரும் நாம் கேட்கின்றோம். இதனை கணினியில் எப்படி இயல்மொழி உணரலாம் ?
“நூறு-இருனூறு கொடுத்து அனுப்புங்க” (வணிகம்)
“பத்து-ஐஞ்சு ஆகலாம் – ஆனால் ஒன்னும் தேராது.” (வணிகம்)
மேலும், இவற்றில் எப்போதும் கீழ்வரிசையில் மட்டுமா வரும் ? (வெக்கை நாவலில் பூமணி, பத்து-ஐஞ்சு என்ற சொலவம் பயன்படுத்துகிறார்). இவை இரண்டிற்கும் ஒரே மாதிரியான அல்கோரிதம்
3. எண்கள்
இதில் திறித்துப் பார்த்தால் மற்றுமொரு கேள்வி இருக்கின்றது: தமிழில் சில எண்களை அதிகம் பேசப்படுகின்றன:
“ஆயிரத்தெட்டு காரணம் சொல்லாம் – ஆனால் ஒப்புக்கொள்ளமுடியாது” (பொதுவெளி)
“நூற்றிஎட்டு தேங்காய் உடைக்கனும்,” “வாரணம் ஆயிரம்” … (ஆன்மீக வெளிப்பேச்சு)
இடம் சூட்டும் எண்கள் (ordinals) என்பவையும் உள்ளன – அதாவது,
“இந்தக்குதிரை டெர்பி போட்டியில் முதல் இடத்தை பிட்காமல் மூன்றாம் இடத்தில் வந்தது; அனைத்து சூதாட்டக்காரர்களும் தங்களது முதலீட்டை முழுசாக இழந்தனர்.”
“நீ முதலாவதா தேர்தலின் வராட்டியும் பத்தாவதிற்குள் வந்து வாக்குப்பிளவிக்கனும்; இல்லாவிட்டால் கட்சியில் இருந்து நீக்கம் செய்வோம்.”
4. சொல்வழி கணிதம்
உதாரணமாக எங்கு நாம் இந்த எண்களை உரைவடிவில் இருந்து புரிந்து கொள்ள வேண்டும் என்றால் ஒலிவழி உணரியின் வழியாக கணிதம் செய்தல் என்றபடி இது தேவைப்படுகிறது. இதனை automatic speech recognition (ASR) என்றும் சொல்லலாம்.
ஓர் ஆயிரம் கழித்தல் ஐந்து பெருக்கல் (ஒன்பது கூட்டல் ஒன்று)
முதலில் தமிழ் எண்களை கணினியில் உணரவேண்டும் – இதனை ஓப்பன்-தமிழ் வழி செய்யலாம். பின் இரும-நிலை மரம் (binary tree parsing and post-order traversal) அல்லது பைத்தான் மொழி eval என்ற கட்டமைப்பின் வழியாக எளிதில் கணக்கிடலாம். முழு நிரல்
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
சமிபத்தில், ஊரடங்கின் உச்சியான சமயத்தில் உடற்பயிற்சி செய்து கொண்டிருக்கும் சமயம் ஒரு சிந்த்தனை – அதனை நினைத்துப் பார்க்கவே வியப்பாய் இருந்த்தது -“{உங்கள் நாட்டின்/மாநில} அரசு தமிழ் மொழியின் வளர்ச்சியை ஆதரிக்கிறதா?” என்ற கேள்வி. நான் பருகியிருந்த காப்பியை முழுங்கமுடியவில்லை – விடை என்னிடம் இல்லை. மொழி என்பது நாம் பயன்பாட்டில் – அரசு உத்தரவில் கிடையாது. சிந்தைவெளியில் வளர்ச்சியை மந்தைவெளியின் ஊக்கத்தில் பார்ப்பது தவறு என்றும், அரசின் பொருப்பு பதவியை தக்கவைத்துக்கொள்வது என்பதும்தான் தினசர் நிஜமாக உலகெங்கும் உள்ளது. தனி நபர் முயற்சியால் சில செயல்பாடுகளை எதிர்கொள்ளலாம் ஆனால் தமிழ் என்றும் சீன மொழிமாதிரி ஆகும் என்றேல்லாம் பகல்கணவுகள் காண எனக்கு உடன்படாது.
இந்த வார பகுதியில் ஒரு வித்தியாசமான சிக்கலைப்பற்றி பேசலாம், முன்னரே எழுதிய பகுதிகளை இங்கு காண்க; அதாவது ஒரு எழுத்துணரியின் வழியாக தயாரிக்கப்பட்ட தமிழ் சொற்றொடரில் சில சமயம் மெய் புள்ளிகள் மறைந்துவிடுகின்றன. இது சற்றி இயந்திர கால சிக்கல் என்றால் அப்போது கல்வெட்டுக்களிலும் நூற்றாண்டின் நாளடைவில் இப்படிப்பட்ட சிக்கல்கள் தோன்றுகின்றன; ஆகவே இது தனிப்பட்ட ஒரு சிக்கல் இல்லை என்பதும் புலப்படுகின்றது. இந்த வலைப்பதிவில் உள்ள அல்கோரிதத்தை இங்கு ஓப்பன் தமிழ் நிரலாக காணலாம்.
1. அறிமுகம்
எனக்கு இந்த சிக்கல் இருப்பதன் காரணம், 1910-இல் ஆர்டன் பாதரியார் இயற்றிய “A progressive grammar of common Tamil,” என்ற நூலின் மறுபதிப்பு பிரதியில் சில/பல சொற்கள் விட்டுப்போயிருந்தன. மறுபதிப்பு செய்யும் நிறுவனமோ, கலிபோர்னியா லாசு ஏஞ்சலஸ் பல்கலைக்கழகத்தில் உள்ள பிரதியினில் இருந்து எப்படியோ (கூகிள் புத்தகங்கள் வழியாகவா?) ஒரு புத்தகத்தின் மின்வடிவத்தை சரிபார்க்காமல் அப்படியே அச்சு செய்து அமேசான் சந்தையில் விற்று அதுவும் என் கைக்கு கிடைத்தது. பல இடங்களில் மெய் புள்ளிகளின் மறைவு – சொற்பிழைப்போல் பாவிக்கும் இந்த பிழைகள் இந்திர வழி செயல்திருத்தத்தால் நுழைக்கப்பட்டவை. நுழககபபடடவை!
மெய் புள்ளிகளின்றி செம்புலப்பொயல்நீரார் கூற்றி சங்க இலக்கியத்தில் இருந்து இப்படியே தோன்றும்,
யாயும ஞாயும யாராகியரோ
எநதையும நுநதையும எமமுறைக கேளிர
…
இதனை எப்படி நாம் சீர் செய்வது? இதுதான் நமது இன்றைய சிக்கல்.
2. அல்கோரிதம்
உள்ளீடு
சொல் என்பதை எழுத்துச் சரமாக தறப்படுகிறது. இதனை சொ என்ற மாறியில் குறிக்கின்றோம்.
வெளியீடுகள்
மறைந்த மெய்கள் இருந்தால் அவற்றை மற்றும் திருத்தி புதிய சொல் வெளியீடு செய்வதற்கு.
அல்கோரிதம் முன்-நிபந்தனைகள்
உள்ளீட்டு சரம் என்பதில் வேறு எந்த சொற்பிழைகளும் இல்லை
சரம் என்பதின் இடம் ‘இ‘ என்பதில், சரம் எழுத்து சொ[இ] என்ற நிரலாக்கல் குறியீட்டில் சொல்கின்றோம்.
சரம் எழுத்து சொ[இ], தமிழ் எழுத்தாக இல்லாவிட்டால் அதனை நாம் பொருட்படுத்துவதில்லை
சரம் எழுத்து சொ[இ], உயிர், மெய், உயிர்மெய் (அகர வரிசை தவிர்த்து), ஆய்த எழுத்து என்றாலும் அவற்றில் எவ்வித செயல்பாடுகளையும் செய்யப்போவதில்லை
ஆகவே, சரம் எழுத்து சொ[இ] என்பது உயிர்மெய் எழுத்தாக அதுவும் அகரவரிசையில் {க, ச, ட, த, ப, ர, .. } இருந்தால் மட்டும் இதனை செயல்படுத்துகின்றோம்.
அல்கோரிதம் செயல்பாடு
மேல் சொன்னபடி, நாம் கண்டெடுக்க வேண்டியது உள்ளீட்டு சரத்தில் அகரவரிசை உயிர்மெய்களில் சரியான உயிர்மெய் எழுத்து வருகிறதா அல்லது மெய் புள்ளி மறைந்து வருகிறதா என்பது மட்டுமே!
இதனை சறியாக செய்தால் அடுத்த கட்டமாக பிழைஉள்ள இடங்களில் புள்ளிகளை சேற்றுக்கொள்ளலாம்
மேல் உள்ள 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 மாற்றுகள் கிடைக்கும். அவையாவன,
இந்த சமயம் நமக்கு சரியான விடைகிடைக்கவில்லை; இதனுடன் அகராதிபெயர்கள் அல்லது classification செயற்கைப்பின்னல்களை பயன்படுத்திப்பார்க்கலாம் என்றும் தோன்றுகிறது.
இந்த அல்கோரிதத்தை ஓப்பன்-தமிழ் பைத்தான் நிரலாக எழுதினால் இப்படி:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Thanks to all our contributors present and past.
Happy Holidays!
P.S: மின் அஞ்சல் அறிவிப்பு கீழ் இணைக்கப்பட்டது.
வணக்கம் தமிழ் கணிமை ஆர்வலர்களே,
இன்று Open-Tamil வரிசை எண் 0.95 வெளியீடு ஆனது. இந்த நிரல் தொகுப்பு முற்றிலும் திறமூல MIT உரிமத்தில் வெளியிடப்பட்டது. இதனை கொண்டு நீங்கள் பைத்தான் கணினி மொழியில் தமிழ் மொழி ஆய்வுகளை செயல்படுத்தலாம்.
உதாரணமாக இரண்டு திறமூல சேவைகள்/செயல்பாடுகள் (அதாவது எழில், தமிழ்சந்தி மற்றும் தமிழ்பேசு-வலை என்பவற்றை தவிற்த்து [எங்கள் குழுவினர் அல்லாதவர்]) பயன்பாட்டில் பொதுவெளியில் உள்ளது தெரியவந்தது-
1) பைதமிழ் என்ற (அவலோகிதம் போல) வேண்பா திரிப்பு நிரல் தொகுப்பு (library), மற்றும்
2) வென்முரசு தோடர்நாவலை உரை-பகுப்பாய்வு செய்யவும் ஒரு செயலி என்றபடி உள்ளது.
இந்நிலையில் இந்த வெளியீட்டில் உள்ளவை,
1. தமிழ்சந்தி என்ற விருது பெற்ற திருமதி. நித்தியா-திரு. சீனிவாசன் அவர்களது படைப்பான தமிழ் சந்திப்பிப்பிழைத்திருத்தி இந்த தொகுப்பில் இடம் பெற்றது. இதில் நாற்பது விதிகளுக்கும் மேல் சந்திப்பிழைகளை கண்டரிய வசதிகள் உள்ளது.
2. தமிழ் மோர்சு என்ற தந்தி குறிகளை தமிழில் கையாள இது உதவுகிறது.
3. வலை என்ற நிரல் தொகுப்பில் திரு. நீச்சல்கீரன் அவரது வாணி மற்றும் தமிழ்பேசு சொற்பிழை திருத்தியை இணையம்வழி கையாள வசதிகள் உள்ளன.
முழு விவரங்களுடன் வெளியீடு: https://ezhillang.blog/2019/11/20/open-tamil-v0-95/
ஒப்பன் தமிழ் குழுவிற்காக,
அன்புடன்
-முத்து
கலிபோனியா
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.
A standard 4×3 keypad shown with digits and letters, including Japanese key entry on a vodafone device. Image credits to Wikipedia.
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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
. The real grand total of possible designs is to include the key permutations of the grouping we have already found, thereby adding a factor of to the previous 1.8 million so we get grand total of keypad mapping designs as 259,397,424 or 259 million keyboard combinations in all!
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.
கட்டுரைத் தொடரில் இந்த பதிவில் மேலோட்டமான சொல்திருத்தியின் பிழைதிருத்தம் அல்கோரிதம் எப்படி கட்டமைக்கப்பட்டிருக்கு என்றும் பார்க்கலாம்.
படம்1: மெக்சிகோவில் புனித குவடலூப்பே கன்னியின் படம் மிக பிரசித்தி பெற்றதாக அவர்கள் நம்புகின்றனர். எனக்கு பூண்டி மாதா, வேளங்கன்னி மாதா நினைவு. இடம்: பெர்க்கிலி, கலிபொனியா #மக்சிக்கோ#சுவர்ஓவியம்#ourladyofguadalupe
1 பிழைதிருத்தி அல்கோரிதம்
உள்ளீடு : உரையின் சொற்கள் ஒவ்வொன்றாக. இடம்-பொருள் விளங்குவதற்கு [context] நாம் சொல் இடம் பெரும் வரியை சூழலுக்கு உள்ளீடாக கொடுக்கலாம்.
வெளியீடு: தவரான சொற்களின் பட்டியல், மற்றும் இவ்வாறு பிழையான் சொற்களின் வாயில் என்ன வேற்று சொல்லை மற்றாக இணைக்கலாம் என்ற பட்டியல்.
இப்படிப்பட்ட ஒரு அல்கோரிதத்தை செயல்ப்படுத்த நமக்கு ஒரு சொல்பட்டியல் தேவை; இதை நாம் அகராதி என்று வழக்கு மாரி சொல்வோம். அதாவது நமக்கு சொல் மற்றும் அதன் சரியான எழுத்து வடிவம் மற்றுமே தேவை – சொல்லின் பொருள் முதலில் தேவை இல்லை. ஆகையால் இந்த சொல் பட்டியல் மட்டுமே அகராதி என்று நம்மால் கருதப்படும்.
முதல் படியாக உரையில் உள்ள சொற்கள் நேரடியே பட்டியலில் காணப்பட்டால் இதனை நாம் சரியான சொல் என்றும் அவற்றை நீக்கி விடலாம். எ.கா. “அவன் வாத்து முட்டை விருப்பம் கொண்டவளை மட்டுமே சமைக்க தேர்ந்தெடுப்பதாக சீனாவில் அறிவித்திருந்தான்” என்ற 10 சொல் வாக்கியத்தில் ‘அவன்’, ‘வத்து’, ‘முட்டை’, ‘விருப்பம்’, என்ற சொற்கள் சரியாக சொல் பட்டியலில் இருக்கும். தற்போது – 6 சொற்கள் மீதம் உள்ளன.
அடுத்தபடியாக பெயர்சொற்கள் அவற்றின் பட்டியல் கொண்டால் இதனையும் நாம் நீக்கிவிடலாம். மேல் உள்ள செயற்கையான உதாரனத்தில் ‘சீனா’ என்ற பெயர் சொல் நேரடியாக இந்த பட்டியலில் காணப்படும். தற்போது – 5 சொற்கள் மீதம் உள்ளன.
அடுத்தபடியாக வினைச்சொற்கள், மற்றும் இலக்கண வகைபடுத்தப்பட்ட இடைச்சொற்கள், ஆகுபெயர்கள், ஆகியவற்றை சரியாக பகுத்தாய்ந்து விதிகளுடன் உணர்ந்தால் சில அடிச்சொற்கள் கொண்ட பட்டியலின் வழியே மட்டும் அவற்றின் ஆக்கல் தன்மையின் வாயிலாக பல சொற்களை நாம் பகுத்தரியும் வகையில் அனுகலாம். தமிழில், இலத்தின் போல, வினைஎச்சங்கள், வினைச்சொற்கள் அவை வாக்கியத்தில் இடம் பெரும் இடங்கள் கண்டு மருவி வருகிண்ரன. எ.கா. ‘அவன் ஒரு சட்டை வாங்க சென்றான்’, ‘அவள் ஒரு சட்டை வாங்க சொல்வாள்’ என்ற இரு வாக்கியங்களில் ‘செல்’ என்ற சொல் மருவி ஆணுக்கு ‘சென்றான்’ என்றும் பெண்ணுக்கு ‘செல்வாள்’ என்றும் வருகிரது. இது சற்று சிக்கலான ஒரு அல்கொரிதத்தின் கீற்றாகவே அமைகிரது; இதனை அதிகம் மொழியியலாகவும் சற்று கம்மியாக கணினியியலாகவும் கருதலாம்.
தமிழில் உள்ள இலக்கண விதிகளை பேரா. ராஜம் அவர்கள் letsgrammar.org என்ற தளத்தில் வினைச்சொற்கள் எப்படி மருவும் என்ற விதிகளை மென்பொருளில் நிருவி அழகாக விளக்கியுள்ளார். இவற்றை ஆங்கிலத்தில் ‘word declension rules’ என்று சொல்வார்கள்.
எண்கள், வடமொழி சொற்கள், நிருத்த சொற்கள், பன்மை சொற்கள், ஆங்கில சொற்கள் ஆகியவற்றையும் நாம் கண்டறிந்து உரையினை இவற்றிலிருந்து நீக்கம் அல்லது பிழை திருத்தம் செய்யலாம். தட்டுப்பிழைகள், ஒருங்குரி பிழைகள் போன்றவற்றையும் இந்நிலையில் நாம் நீக்கிவிடலாம்.
2 பிழை வகைகள்
மேல் சொன்னபடி சொல்திருத்திகள் அவைகளின் நான்கு படினிலைகளில் ஏதேனும் ஒரு சொல்லை [உரையில் உள்ள] அந்தந்த வகுப்பில் உள்ளதாகவும் கண்டு, அதே சொல் தவராக உருவெடுத்திருந்தால் அது தவரான சொல் என்றும், அதனை நாம் சரிசெய்து – மாற்றங்களை பரிந்துரைக்கலாம். இதையே ‘wrong word error’ என்று சொல்லாம்.
கடைசியில், இவ்வாரு நான்கு படிகளில் நீக்கம் செய்யப்படாத சொற்களை நாம் அகராதியில் இல்லாத சொற்கள் என்று மட்டுமே கருதலாம். அதாவது இவற்றை ‘non-word error’ என்று கண்டறிந்து சொல்லாம். இவற்றில் நாம் மாற்று சொற்களை தரமுடியாது.
concordance தரவுகள் இருப்பின் ‘அன்பே சிவம் என்பர் சைவ சித்தாந்திகள்‘, மற்றும் ‘அன்பே சவம் என்பர் சைவ சித்தாந்திகள்‘ என்ற இரு வாக்கியங்களுக்கும் மாற்றுகள் மேல் கண்ட சொல்திருத்தியினை மேம்படுத்தி செயல்படுத்த செய்யலாம்.
3. வழங்கல்
இந்த நிலைகள் முழுதும் ஒரு மேலோட்டமான ஒவ்வொரு சொல்திருத்தியின் கட்டமைப்பிலும் இருப்பதாக நாம் உணரலாம்.
சொல்திருத்தி என்பது உரையினை உள்வாங்கிக்கொண்டு சரியான சொற்களை முழுதும் கண்டுகொள்ளாது. தவரான சொற்களை மட்டுமே மையமாக கொண்டு இயங்குகிரது. என்னடா வாழ்க்கையிது, கால்ஃபு போல் சொல்திருத்திகள், எல்லாமே சரியான ஆட்டத்தினால் நிற்னயிக்கப்படுவதில்லை – பிழையான சொல், பிழையான ஆட்டம் அதே வெற்றியை நிற்னயிக்கிரது. இதன் பணி:
தவரான சொற்களை சுட்டிக்காட்ட வேண்டும்
தவரான சொற்களுக்கு மாற்றங்களை காட்ட வேண்டும்
தவரான் சொல்லுக்கு பயனர் மாற்று தரவிருந்தால் அதனை சொல் பட்டியலில் சேர்த்துக்கொள்ள வேண்டும்; அதனை உரையிலும் மாற்றவேண்டும்.
கடைசியில் அனைத்து உள்ளீடுகளையும் ஒருங்கிணைத்து சரியான உரையை சொல்திருத்தி வழங்கும்.