கொங்கு நாட்டு வட்டார வழக்கு சற்று இசைவானதும் கூட; மலை மலைசார் மக்கள், மலைச்சாரல் நிலம், மற்றும் பல தரப்பு மக்கள் காடு-மேடு-கலை என்றும் பலவகையில் வசீகரிக்கும் ஒரு குறிஞ்சி நில மண் வழி பிறந்த சொற்கள் பல படைப்பாளிகளின் வழி இன்றும் மேலோங்கி இந்த நிலத்து வழக்கு முன்நிற்கின்றது.
கிழே உள்ள சொல்தேடல்களில் உள்ள 10-சொற்களை கொடுக்கப்பட்ட உசாத்துனைகளிலிருந்து உங்களால் கண்டறியமுடியுமா? முயலுங்கள். தயாரித்தது: http://tamilpesu.us/xword/
உணவு அல்லது கட்டுச்சோற்றை கொண்டி செல்லும் கலன் (2)
கீழே இருப்பதை குனித்து கொங்கு நாட்டவர் எடுப்பார்கள் (4)
தனிமையில் நடந்து வருபவர் நடைபாவனை (7)
வைக்கோல், பருத்தி, ஆகியவை அறுவடையின்பின் காய்ந்த வடிவில் விலங்குகளுக்கு உணவாகும் (2)
ஏழு அல்லது எட்டு உருப்பிடிகள் (4)
பனையில் வழி வடிகட்டிய சர்க்கரை (6)
மதிய உணவுக்குப் பின் பொழுதுசாயும் வரை அளிக்கப்படும் சிறிய உணவுகள் (5)
காய்ச்சிய திடமான மதுபானம்(4)
பனை மற்றும் தென்னையில் இருந்து சுண்ணாம்பிட்டு இறக்கப்படும் மதுபானம்(2)
இந்த வார பகுதியில் ஒரு வித்தியாசமான சிக்கலைப்பற்றி பேசலாம், முன்னரே எழுதிய பகுதிகளை இங்கு காண்க; அதாவது ஒரு எழுத்துணரியின் வழியாக தயாரிக்கப்பட்ட தமிழ் சொற்றொடரில் சில சமயம் மெய் புள்ளிகள் மறைந்துவிடுகின்றன. இது சற்றி இயந்திர கால சிக்கல் என்றால் அப்போது கல்வெட்டுக்களிலும் நூற்றாண்டின் நாளடைவில் இப்படிப்பட்ட சிக்கல்கள் தோன்றுகின்றன; ஆகவே இது தனிப்பட்ட ஒரு சிக்கல் இல்லை என்பதும் புலப்படுகின்றது. இந்த வலைப்பதிவில் உள்ள அல்கோரிதத்தை இங்கு ஓப்பன் தமிழ் நிரலாக காணலாம்.
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
தமிழ் செயற்கையறிவு மற்றும் எந்திர வழி உரை பகுப்பாய்வு போன்ற செயல்பாடுகளின் திறன் தினமும் வளர்ந்து கொண்டே போகின்ற சமயத்தில் (செயற்கையறிவு என்ற பேரலையின் முதுகில் பயணிக்கின்றது என்றபடியாக) இவற்றினால் கடக்கவேண்டிய சில புதிர்கள் என்ன (என்பார்வையில்) என்று இந்த பதிவில் அலசலாம்.
இருபால் சமநிலைப்பாடுத்தல் (gender balanced text)
அரசாங்கம், வணிக கார்ப்ரேட் நிறுவனங்கள் தினசரி புழக்கத்தில் பல செய்திகள் விளம்பரப்படுத்தலுக்கும், உள்நிறுவன செயல்பாட்டிற்கும் பகிர்ந்துகொள்ள வேண்டியிருக்கும். இத்தகைய செய்திகளில் சில் கேள்விகள் எழுகின்றன:
இந்த செய்திகள் முழுவதும் இருபாலினருக்கும் சரிசமமாக பாரபட்சமின்றி எழுதப்பட்டுள்ளதா?
இப்படி இல்லாவிட்டால் செயற்கையாக உரைதிருத்தம் செய்து இருபால் சம நிலைப்படுத்தல் செய்யலாம ?
உதாரணம்: “பணியாளர் வேலைக்கு வந்தால் அவர் மனைவியிடம் ஒப்புதல் பெற வேண்டும்..” என்ற படி ஒரு உரை இருந்தால் அது சமனிலைப்படுத்தப்பட்டபின் “பணியாளர் வேலைக்கு வந்தால் அவர் மனைவியிடம் (அல்லது அவள் கணவனிடம், [துனைவன்/வியிடம்]) ஒப்புதல் பெறவேண்டும்” என்று வரவேண்டும்.
இத்தகைய ஒரு செயற்கையறிவு அல்லது தானியங்கியிடம் திருக்குறள் மற்றும் சம்காலத்தில் உருவாகாத பழங்கால உரைகளைக்கொடுத்தால் என்ன ஆகும் ?
மேலும் சில திறன்களை தமிழ் இயல்மொழிபகுப்பாய்வு பெரும் என்றும் நம்பலாம்; அடுத்தகட்ட கேள்விகள் / புதிர்கள் அடுத்த பதிவில்.
நிங்க. ஆமா. நீங்களேதான். தமிழ் மொழி, கலை, பாரம்பரியம், கலாச்சாரம், பண்பாடு, இயல்-இசை-நாடகம், வெற்றி-தோல்விகள், சமூக சிக்கல்கள், வறலாறு, அதன்வழி வந்த கோளருகள் … எல்லாத்தையும் மற்ற மொழியினருக்கு, மற்ற நாட்டவர்களுக்கு சொல்ல வெளியுறவுத்துரை அமைச்சர் நீங்கதான். சமயத்தில் அடுத்த தலைமுரையினருக்கும் சொல்ல வேண்டிய பொருப்பும் இருக்கிரது.
சென்ற வாரம் எனது அலுவலகத்தில் எனது Microsoft Office செயலி Word வழி எதைப்பற்றியோ WebEx வழி தொலைபேசி-நேரலைபகிர்தல் வழியில் மற்றோரு மாகானத்தில் உள்ள ஊழியரிடத்தில் வேலை தொழில்னுட்பம் பற்றி பேசிக்கொண்டிருந்தேன். [ஏற்கண்வே, நான் ஒரு ஆண்டுக்கு முன்பு (இதை பார்க்கவும்) இதனைப்போல் 40-மணிக்கும் மேலாக செயல்படும் வேலைமடிக்கணினியில் தமிழ் இடைமுகங்களை (localization) செயல்படுமாரு செய்தேன்.]
எனது திரையில் தமிழ் வட்டெழுத்துக்களைக்க கண்ட இவர் உடனே: இது என்ன முத்து, “Is it sanskrit?” அப்படின்னு கேட்டார். இல்லை இப்படி ‘தமிழ்’ என்றும், இந்தமாதிரி என்றும் சொன்னேன்.
‘அப்படியா! இதை சிலோனில் அல்லவா பேசுவார்கள்?’ என்றும் வினவினார். இல்லை சாமி, சிங்கை, சிலோன் மற்றும் முதன்மையாக தென்னிந்தியாவிலும் 3500 இந்திய மொழிகளில் முதன்மையான் 20-25 மொழிகளில் தமிழும் ஒன்று என்று சொன்னேன். அடுத்து நேபாள் நாட்டை சேர்ந்த நண்பர் ஒருவரின் பணித்திட்டம் பற்றியும் பேசிக்கொண்டிருக்கும் நேரத்தில், இவர் “So is Nepalese same as Tamil?,” அப்படின்னு கேட்டார். நமக்குத்தான் லெக்சரடிக்க பிடிக்குமே – இன்னார் இன்னபடி என்றும் திராவிட மொழி, ஆரிய/வட மொழி என்றும், தேவனாகிரி மொழிகள் என்றும் உள்ளதைப்பற்றி சொன்னேன் – அவருக்கு ஒரே வியப்பு.
என்னவோ – இங்கு நான் வாழும்ஊரில் இந்தியர்களிடத்தில் ஆங்கில மொழிப்பற்று மட்டுமே உள்ளது. சிலிக்கன் சமவெளியில் [Silicon Valley] இந்தியர்கள் பத்தில் ஒருவரிம் கூட மற்றொரு மொழி – தமிழ்/இந்தி/தெலுங்கு/மலையாளம் விசைப்பலகைகளை பயன்படுத்துவதில்லை. செருமன், பிரெஞ்சு இருக்கலாமோ என்னவே கேட்டுப்பார்க்கிரேன்.
இந்திய மொழிகளை வேற்றுமைகளும்-வளமைகளும் [Linguistic Diveristy] ஒரு விளிம்பு நிலையில் தள்ளப்படுமா என்றும் ஒரு சிரிய அச்சம் என்னிடம் இருக்கிறது. இந்தியாவில் பிறந்து வளர்ந்ததினால் மட்டுமே பல மொழிகளின் தாக்கத்தில் வளந்ததில் பெருமை கொள்ளும் சமயம் [சட்டென்று யொசித்தால் – திராவிடம் என்பது கூட ஒரு வடமொழி சொல் என்றும் படும்] கணினியின் யுகத்தில் நமது மொழிகளின் அனுகுதல், வாசிப்பு, ஆக்கம், மற்றும் வளர்ச்சி என்பதை நாம் மறுபரிசீலனை செய்யவேண்டும் என்றும் கருதுகிறேன்.
400-ஆண்டு பிரிட்டீஷ் காலனித்துவத்தினால் கூட அழிவடையும் அளவு மாற்றம் அடையாத மொழி வேற்றுமைகளும்-வளமைகளும் கணினிக்குள் மொழியை உள்ளீடும் செய்யமுடியாமல் தவிக்கும் பலராலும், கணினியில் ஆங்கிலத்தின் சுலபமான செயல்பாட்டாலும் மொழி வளமை காலனித்துவத்தை விட அதிகமாக சிதைவடைகிறது என்பதை நான் காண்கிறேன்.
மொழியில் சிந்தனைகள், கேள்வி-பதில்கள், கூச்சல் குழப்பங்கள் இல்லாவிட்டால் அது இறக்கும் – பிரபல அறிஞரும் சம்ஸ்கிருத மேதையான ஸ்டிபேன் போல்லோக் எழுதிய சர்ச்சைக்குள்ளாகிய ‘Death of Sanskrit’ என்பதில் இருந்து கற்றுக்கொள்ள வேண்டியது என்ன என்றால் இதுதான் – மொழியில் புழக்கம் வேண்டும். அதுஇல்லாவிட்டால், நமது இந்தியமொழிகளும் அருங்காட்சியகத்தில் தான் சென்று காண்போமா என்ன ? இல்லை, நமது காலத்தில் இப்படியெல்லாம் நடக்காது. இல்லையா ? இல்லைதானே…
பழிக்கும் மொழி – தமிழில் திட்டுவது பற்றி; தமிழில் பழிக்கும் மொழி பல வண்ணங்களாக உள்ளது; இவற்றில் சிலதை இந்த பதிவில் பார்க்கலாம். இந்த தொடரும் தமிழ் வசை சொற்கள் பற்றிய அலசலின் வாயில் அமைந்ததாக இருக்கும். வசை சொற்களுக்கு பொருள் வழ்ங்கப்படவில்லை.
Remark: Tamil alphabets [which are Abugida or alphasyllabary in nature] can be written as a fully connected bipartite graph G(C+V,E). Both the basic 247 letters [known to have a ring representation] and sequences involving வட மொழி letters can be written in the sequence of two sets, V – vowels [உயிர்] and C – consonants [மெய்], and edges E: C -> V forming a map from each consonant to vowel (e.g.: க் + அ -> க ) are the உயிர்மெய் எழுத்துக்கள். This is a bipartite graph. Strictly speaking we can add அயுத எழுத்து ‘ஃ’ as a disconnected node and call it a forest graph. This may be simply extended to cover the வட மொழி எழுத்துக்கள் [Sanskrit letters optionally used in Tamil]. Full alphabet set is obtained by cumulative sum of edges and vertices.
Corollary: Most other alphasyllabary, Abugida languages have a similar bipartite graph representation.
மொழியில் ஆக்க சக்திகளை தோராயமாக, தொல்கப்பியம், இலக்கணம் எல்லாம் தெறியாமலேயே ஒரு மொழியின் மாதிரியில் இருந்து (புள்ளியியல் வழி உருவாக்கியது) சரியான அல்லது பிழையான சொல், வாக்கியம், சொல் அமையும் இடம், இடம்-பொருள் ஒற்றுமை போன்றவற்றை நாம் சரியாக சொல்லலாம். அதற்கு மொழிமாதிரி கேட்குது நம்ம கணினி.
பொது தமிழ் தரவுகள் ஆகியவை
மதுரை திட்டம்
தமிழ் விக்கிப்பீடியா
freetamilebooks மின் புத்தக தரவு
பிரபல நாளிதள், வார இதள், வலை இதள் போன்றவற்றின் தரவு.
இவை ஓவ்வொன்றும் ஒவ்வொரு கால கட்ட தமிழை, அல்லது பல கால கட்ட தமிழ் வழக்கை கொண்டவையாக அமைகின்றன. மென்மேலும், ஒவ்வொன்றும் வெவ்வேறு ‘header information’ மேலான்மை தகவல்களினுள் பொருத்தப்பட்டருக்கின்றன.
இதனை நாம் சரியாக புரிந்து கொண்டதன் பின்னரே ஒரு மொழி மாதிரியை உருவாக்கலாம். மொழி மாதிரி என்பது நிறுத்த சொற்கள் நீக்கப்பட்ட சொல் தரவினில் இருந்து மட்டுமே உருவாக்கியதாகவும், முழுக்க முழுக்க தேவையற்ற மேலான்மை தகவல்கள் இல்லாமல் இருக்க வேண்டும். இவை இருந்தால் சிறப்பாக ஒரு மொழி மாதிரியை தயார் செய்யலாம்; இதனை எனது டுவீட்டில் பார்க்கலாம்:
ஏற்கனவே செய்த வேலைகளில் இந்த குறைபாடுகள் இருந்திருக்கின்றன; இப்போது தான் தெறிந்துகொண்டேன்.
சமீபத்தில் இந்த சிக்கலில் மாட்டினேன்: சரியான தொடக்க நிலையில் இருந்து தொடங்குவது அவசியம். நான் விக்கிபீடியா தரவை அப்படியே header-information உடன் எதையும் துப்புரவு செய்யாமல் 13 இலட்சம் சொற்களை வரிசைடுத்தினேன். எல்லாம் பிரயோஜனத்துக்கிலை.
நக்கீரண் வேலை பார்க்க முயன்றால் கொஞ்சமாவது பயபக்தி வேண்டாமா ?
இந்த தொடரில் இதுவரை ஆய்வுகளைப்பற்றி மட்டுமே இதுவரை பார்த்தோம். இப்போது சில செயல்முரை அல்கொரிதங்களை பார்க்கலாம்.
1 மேலோட்டமான சில குறிப்புகள்
சொல்திருத்தியில் பிழையான சொல் த ஒன்றை முதலில் கண்டரிந்தபின், அதற்கு எப்படி ஒரு மாற்றை ச [என்ற ஒரு தோராயமான சொற்பிழை நீக்கப்பட்ட பொருத்தத்தை எப்படி] உருவாக்குவது ? இதற்கு தேவை திருத்தத் தொலைவு d.
இயற்ப்பியலில், புள்ளியியலில் இவ்வாரான் கேள்வியை ஒரு optimization வடிவத்தில் மாற்றி இதனை தீர்வுகாணலாம். இதனைப்போல் சொல்திருத்தியில்,
மாற்றுச் சொல் ச = arg-min [ d[ச,த] ]
இதன் பொருள் என்ன என்றால் கொடுக்கப்பட்ட தவரான் சொல் த என்பதற்கு நமது செயலி அதன் அகராதியில் உள்ள ஒவ்வொரு சொல்லில்லும் அதன் தொலைவை கண்டறிந்து அவற்றில் எந்தெந்த சொற்கள் மிகக் குறைவான தொலைவில் உள்ளனவோ அவற்றையே சரியான சொல் என்ற பட்டியலில் பரிந்துரைக்கும். இதற்கு உதாரணமாக கட்டுரையின் மூன்றாவது பகுதியில் நிரல் துண்டு பார்க்கலாம்.
2 தொலைவு
தொலைவு – இரு சொற்களுக்கும் உள்ள நெறுக்கத்தை நாம் சொல்திருத்தியில் கணக்கிட வேண்டிய தேவை இருக்கிரது. ஏனெனில், ஒரு தவரான் சொல் உரையில் உள்ளீடு செய்யப்பட்டிருந்த்தால் அதற்கு மாற்றை தானியங்கி வழியில் கண்டறிய [அதவது இதன் மாற்றுச்ச்சொல்] இதற்கு பொருத்தமாகவும், நேருக்கமாகவும் இருக்கும் என்பது கணினியாளர்களும், மொழியியலாளர்களும் ஒப்புக்கொண்ட ஒரு கோட்பாடு. இதனை செயல்படுத்த கணினியாளர்கள் கொண்ட ஒரு மதிப்பீடு தொலைவு. இதனை திருத்தத் தொலைவு என்று சொல்வார்கள் [edit-distance].
ஒரு சொல்லினை அதன் உருப்பு எழுத்துக்களை இடம் மாற்றியோ, எழுத்துக்கள் கூட்டியே, அல்லது எழுத்துக்கள் நீக்கியோ மற்றொரு சொல்லாக மாற்ற எத்தனை படிகள் உள்ளன என்று கணக்கிட்டு சொல்வதானது இத்தகைய திருத்தத் தொலைவு சார்பு. இதனை கண்டுபிடித்த பலருள் திரு லெவின்ஷ்டீன் அவரது பெயரை இணைத்து லெவின்ஷ்டீன் திருத்தத் தொலைவு என்று கூறுகின்றார்கள் அறிவியலாளர்கள்.
இதன் பொருள் என்ன ? இதன் அமைப்பு எப்படிபட்டது ? கணிதவியலில், தினசரி வாழ்வில் எப்படி தொலைவு நிர்னயிக்கப்படுகிரது என்து போல், ஒரே இடத்தில் உள்ள பொருளுக்கும் அதே பொருளுக்கும் தொலைவு எதுவும் இல்லை – 0. அதே மாதிரி ஒரே சொல்லிர்கும் அதே சொல்லின் நகலுக்கும் தொலைவு 0. பிரகு, உங்கள் வீட்டிற்கும் உங்கள் பக்கத்துவீட்டிற்கும் தொலைவு என்ன ? தொலைவு 1 அல்லது கூடுதலாகவே இருக்கவேண்டும் இல்லையா ? பக்கத்து வீட்டார்க்கும் உங்கள் வீட்டிற்கும் உள்ள தொலைவு, உங்கள் வீட்டிற்கும் அவர்களது வீட்டிற்கும் உள்ள தொலைவும் ஒரேபடியானதாக இருக்கும். d[a,b] = d[b,a] என்பது ‘commutativity‘ என்ற சார்பின் குணத்தை இந்த திருத்த தொலைவு சார்பும் கொண்டது. [அதையும் – ‘போத்திக்குனு படுத்துக்கலாம், படுத்துக்குனு போத்திக்கலாம்‘ என்று பல முதிய தமிழ் மைக்கில் ஜாக்சன்கள் சொல்லியதை நினைவு கொள்ளலாம்]. அதுவே பொது அறிதல். இதைப்பொல குணங்களைக்கொண்ட சார்புகளை கணிதவியலில் ‘metric‘ என்றும் சொல்வார்கள் – அதாவது அளக்கும் சார்பு.
3 சிரிய எடுத்துக்காட்டு
ஒப்பன் தமிழ் நிரல் தொகுப்பில் ஒரு சில் உத்திகள் உள்ளது அவற்றில் திருத்தத் தொலைவு சார்பும் ஒன்று. இதனைக் கொண்டு ஒரு சிரிய உதாரனத்தை பார்க்கலாம்.
அகராதியில் உதாரனத்திற்கு 5 சொற்கள் இருக்கு என்று மட்டும் கொள்ளல்லாம்.
அகராதி A என்பதில் [‘அவிழ்’,’அவல்’,’அவள்’,’தவில்’,’தவள்’] என்ற் சொற்கள் இருக்கு என்றும் உள்ளிட்டு சொற்கள் ‘ஏவள்’, ‘இவல்’ என்று கொடுக்கபட்டது என்றும் கொள்வோம். இதற்கு என்ன மாற்றுக்கள் ?
பகுதி ஒன்றின் படி இந்த புள்ளியியல் குரைந்த பட்ச தெடலை பைத்தான் மொழியில் இப்படி எழுதலாம்:
இதனை இயக்கினால் நாம் பார்கக்கூடிய வெளியீடு இப்படி; அதாவது நமது சிரிய சொல்திருத்தி அல்கொரிதம் ‘ஏவள்’ என்பதை ‘அவள்’ என்றும், ‘இவல்’ என்பதை ‘அவல்’ என்றும் மாற்றாக பரிந்துரைக்கிரது. மேலும் கவனித்து பார்த்தால் ‘ஏவள்’ என்பது ‘தவள்’ என்பதற்கும் நெருக்கமான தொலைவில் உள்ளது ‘distance’ என்ற தொலைவு பட்டியலில் தெறியும்.
மேலும் மற்ற அல்கோரிதங்களைப் பற்றி அடுத்த பதிவுகளில் மேலோட்டமாக பாற்கலாம்.
சென்ற பதிவில் ஒரு தொடக்கத்தை ஆரம்பம் செய்தோம்; இந்த பதிவில் அதே வேகத்தில் தொடர்வோம். இடைவெளியில் மூன்று முக்கியமான அறிவியல் ஆராய்ச்சிசிகளை பற்றி உங்கள் கவணத்தை ஈர்த்து செல்ல விடுங்கள்.
1 முதல் ஆய்வுகளின் முடிவு
சொல்திருத்திகளின் சவால்கள் – ஒரு கணக்கெடுப்பும், மேலோட்டமான விளக்கமும் என்ற தலைப்பில் கேரன் குகிச் என்ற ஆரய்ச்சியாளர் Techniques for automatically correcting words in text 1992-இல் ACM சஞ்சிகையில் அற்புதமாக விளக்கம் அளித்துள்ளார். இது ஒரு கணக்கெடுப்பு என்பதால் 63 பக்கங்கள் கொண்டதாக உள்ளது. கண்டிப்பாக சொல்திருத்தியில் ஆராய்ச்சி செய்ய முனைபவரும், செயல்படுத்துபவரும் இதை வாசித்தல் வேண்டும்.
2 சொந்தங்கள் அவை கண்ட அறிவு
அடுத்து எனது வாசிப்பில் நான் அலசி சல்லடைபோட்டு மீன்பிடித்ததில் இணைய வலையில் சிக்கிய மீன் – தங்கமீன் – இந்த துருக்கி அறிவியலாளர் குழு எழுதிய 1994-இல் வெளிவந்த இந்த கட்டுரை – ஒட்டு மொழிகளினுள் உண்டான அம்சங்களில் ஒரு சொல்திருத்தியை உருவாக்குவது எப்படி – Kemal Oflazer , Cemaleddin Güzey, Spelling correction in agglutinative languages, PDF என்பதை மைய்யமாகக்கொண்டு கணிமை கோட்பாடுகளில் செயல்முறைகளை சாட்சியப்படுதினார்கள். ஃபின்னிஷ், துருக்கி போன்ற மொழிகள் தமிழைப்போல் ஒட்டு மொழி என்ற சொல்லடல் இலக்கண வகைப்படுத்தப்பட்டவை. ஃபின்னிஷ்-தமிழ் தொடர்பு மிக பெரியது – ஐராவதம் அவர்களைக் கேளுங்கள், இல்லை சிந்து சமவெளியில் போய் பாருங்கள் [விளையாட்டாதான்]!
3 கண் கெட்டபின் சூரிய நமஸ்காரம்
மூன்றாவதாக நான் சொல்வது பொதுவில் ‘எங்க அப்பன் குதிருக்குள்ள இல்லை’ என்ற பொது இரகசியமாக உள்ள தனபால் – கீதா அண்ணா பல்கலை அறிவியலாளர்களின் 2003-இல் வெளிவந்த கட்டுரை. இதில் பலவிதிகளை நாம் நேரடியாகவும், மேம்பாடு செய்தும் செயல்படுத்தலாம். “Tamil spell checker,” என்று T. Dhanabalan, R Parthasarathi… – Sixth Tamil Internet 2003
4 அடுத்த படியாக
இவை எல்லாம் ஒரே நாளில் யாரும் படிக்க சுலபமாக முடியாது. இருந்தாலும் இப்படிப்பட்ட சிக்காலான் மொழியியல் காட்டிற்குள் அடங் கிய பூதம்தான் ஒரு சொல் திருத்தி. புகைப்போட்டோ பொரிவைத்தோ இந்த ஒரு சித்தாந்த சொல் அன்னத்தை வழிமரித்து பொது பயன்னுக்கு அளிப்பது, நமக்கும், வருங்கால தமிழ் எழுத்தாளர்களுக்கும், வாசகர்களுக்கும் உண்மையிலேயே ஒரு அளப்பரிய செயல். அடுத்த பதிவில் இந்த ஆராய்ச்சிகளில் உள்ள சில செயல்முரைகளின் உருவங்களையும், கீற்றுகளையும், நடைமுரை விளக்கங்களையும் பார்க்கலாம்.
தமிழில் சொல்திருத்தி என்பது ஒரு இதநாள்வரை முழுமையாக, பல்வேரு மக்களும் ஒப்புதலுக்கினங்க, மன நிரைவுடன் பயன்படுத்தும் நிலையில் இல்லை. முயற்சிகள் எடுக்காத காரணித்தினால் அல்ல, காரணம் சவால் பெரிதாக உள்ளதனால் என்பது என் புரிதல். இந்த பதிவில் இந்த சொல்திருத்தி தேவைக்கு என்ன முயற்சிகள் எடுக்கப் பட்டுள்ளன என்றும், ஒரு கணிமயின் அடிப்படையில் இதில் உள்ள சவால்களை, சிக்கல்களை முன்னெடுத்து வரசெய்ய முயல்கிறேன். தமிழின் கூற்று ‘கற்றது கைமண் அளவு!’
சிக்கல் அளவு
தமிழ் மொழி ஒரு ஒட்டு மொழி – agglutinative language; மேலும் பேசப்படாத மொழிகளைப்போல் இல்லாமல் நல்ல இருவடிவம் [diglossic – பேச்சு-எழுத்து] என்றும் இது வடிவங்களைக் கொண்டதால் இந்த சொல்திருத்தியின் சாத்தியம் அதிகமான சிக்கல் அளவில் [computational complexity] உள்ளதை நாம் யுகிக்க முடிகிரது.
ஒரு ஒட்டுமொழியில், அதுவும் எதுகை-மோனை என்ற வடிவம்சார்ந்த விதிகளுடன், புணர்ச்சி விதிகளுடன், ஒரே வேர் சொல் பல வடிவங்களில் தொற்றம் பெற்று, ஜீவித்து, சிறு சிறு துளிகள் சேர்ந்து மொழியில் ஒரு படைப்பாளி அவள் செய்யும் தாக்கம் சுனாமியாக அசுர உருவம் எடுக்க தமிழ்வெளி இடமளிக்கிரது. இதன் மேல், இலக்கணம், கலை, அறிவியல், உளவியல், ஆன்மீகம், பண்பாடு, தொன்மை, வரலாறு, தொழில்நூட்பம் பொன்ற களங்கள் மொழியில் தழைக்கின்றன. வாழக்கையை செம்மைப்படுத்தி மொழியினால் ஒரு சிறப்பான் இடத்திற்கு நம்மை அழைத்துச் செல்கின்றன். இந்த மொழியில் சொல்வளம் [‘combinatorial explosion of morphologically rich language’ என்று சொல்லக்கூடிய] மொழியின் சொல்வடிவத்தின் வளமையை கட்டமைப்பாக கொண்டதனால் வந்த சொல் பெருக்கௌ என்று பொருள்கொள்ளலாம்.
சலிப்பாகும்படி சொன்னால், பலமே பலவீனமாகும் இடம் இந்த சொல்வடிவத்தின் வளமை என்றானது தமிழை செம்மைப்படுத்தப்போய் தமிழில் உள்ள பிழைகளை திருத்தம் செய்ய முயலும் அர்த்நாரீஸ்வரர்களின் வேலையை முழுதுமே முரியடிக்கும் நோக்கில் அமைந்தாயிற்று. காரணம் இத்தகைய சொல்வளத்தை முழுதும் கணினி நிரல்களில் ஏற்றாவிட்டாலும் இதில் 90% கீழ் இருந்தாலும் அந்த சொல்திருத்தி நிரல் சரிவர சொற்களை சரி-பிழை என்று பாகுகாடு அறியச்செய்யாது. இது ஒரு புரியாத புதிராக இன்றும் விளங்குகிரது. எனக்குத் தெறிந்தளவு தமிழில் பிழைதிருத்திகள் 50% சரியான விடைகளையே அளிக்கின்றது என்பது.
தெறிந்தவை – ஆய்வுகள் – புதுமை செய்தவர்
முதன்மையான தமிழின் சொல்திருத்தியை ஆராச்சியே 2003-இல் இருந்தும் இன்றுவரை – சுமார் 17 ஆண்டு ரஜ்ஜியத்தில் உள்ளது: “Tamil spell checker,” என்று T. Dhanabalan, R Parthasarathi… – Sixth Tamil Internet 2003-இல் அண்ணா பல்களைக்கழகத்தில் இருந்து இவர்கள் உருவக்கினார்கள்.
இவை அனைத்துமே ஒருவகையில் – புதியவைஅல்ல; மொழியியலில் – அதுவும் கணினிவழி மொழியியலில் – 1980-களில் இருந்தே ஆய்வுகள் வளிவந்திருக்கின்றன். இவற்றில் இன்றும் பயன்படுத்தும் edit-distance, suggestion generation போன்ற செயல்முறைகளை அவர்கள் கண்டறிந்து புதுமை செய்தனர். எ.கா. J. L. Peterson, Computer programs for detecting and correcting spelling errors.
நாங்களும் எங்களது சிரிய பங்களிப்பான ‘சொல்திருத்தி’ என்ற ஒபன் தமிழ் படைப்பை இங்கு பதிவு செய்தும் தமிழ் இணையமாநாடில் 2018-இல் பதிவு செய்தோம்.
இத்தகைய பதிப்புகள் என்ன சொல்கின்றன ? எப்படி எப்படி தானியங்கியாக ஒரு சராசரி கணினி ஒரு 12-ஆண்டு கடின பயிற்சி இல்லாமல் மொழியை திருத்தம் செய்கின்றது ? என்ன விளையாட்டா இருக்குதேன்னு நிங்கள் நினைக்கலாம் ஆனால் அனைத்தும் அல்கோரிதங்களின் மகிமை – ஒரு செயல்முறைகணிமையில் சாத்தியமானதுவே என்று அடுத்த தொடரில் பார்க்கலாம ?