சொல்திருத்தி – தெறிந்தவை 4

இந்த தொடரின் பதிவில் எப்படி ஒரு தட்டச்சு பிழைகளை தீர்க்கலாம் என்று பார்க்கலாம். இவையும் ஏற்கனவே கூறிய குறைவான திருத்தம் தொலைவு என்ற அளப்பின் சார்பின் கீழ் அலசப்படும் ஒரு கேள்வி. சரி, அப்ப என்ன புதுசா ?

படம் 1: தமிழ் 99 – விசைப்பலகை [ஆப்பிள் iOS 10.13-இல் உள்ளபடி]

1 ஏன், எப்படி

விஷயத்துக்கு வாரோம். புதுசு என்ன ? அதாவது தட்டச்சு பிழைகள் என்பது தமிழில் ஒரு வழி மட்டும் வருகின்றன – விசைபலகை வழியாக (typographical errors originate from keyboard). இதன் காரணமாக, நாம் ‘பாம்பின்கால் பாம்பு அறியும்’ என்பது போல், இந்த சிக்கல் உறுவாகும் இடத்தின் விசைப்பலகையின் கட்டமைப்பின் வழியாக இதனைத் தீர்வு காண முடியும். இதனை ‘அருகிலேயே உள்ள விசைப் பிழை’ என்றும் [nearest neighbor key error] சொல்லாம்.

2 செயல்முரை அல்கோரிதம்

தற்சமயம் தமிழ் 99 என்ற விசைபலகையில் உள்ளீடு செய்வது என்ற கொள்வோம். இதில் உள்ளீட்டு பிழை என்பது ‘இ’ என்ற எழுத்தை இடும் சமயம், ‘அ’, ‘ஈ’, ‘உ’, ‘ஓ’,’ஔ’ என்று கைவிரல் தவரி சொடுக்கினால் ‘இன்பம்’ என்ற சொல் உள்ளீடு ‘அன்பம்’ அல்லது ‘உன்பம்’ என்றும் மாற்றமடைவதற்கு வாப்புண்டு.

சரி: இன்பம், தவறு: அன்பம், உன்பம்

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

படம் 2: தமிழ் 99 iOS ஆப்பிள் திரன்பேசியில் உள்ள விசைபலகை குழப்ப/மயக்க அணி

இதற்கு மேற்கண்ட அல்கோரிதத்தை இயக்கினால் 56 மாற்றங்களைத்தரும். இவற்றில் சரியான் சொற்களை மட்டும், குறைந்த திருத்த தொலைவில் இருப்பவற்றை மட்டும் நாம் ஏற்றுக் கொண்டால் அதில் ‘இன்பம்’ என்ற சரியான் சொல் இருக்கிரது! இதுவே தட்டச்சு பிழை சொல்திருத்தியின் இயக்கம். இதனைப் பற்றி பல அறிவியலாளர்களும் எழுதியுள்ளார்கள் என்பது புதிய செய்தி இல்லை என்பதையும் இங்கு பதிவு செய்வது கவணத்தில் கொள்ளவேண்டியவை.

  1. ஈன்பம்
  2. இன்பம்
  3. ஆன்பம்
  4. உன்பம்
  5. ஊன்பம்
  6. அன்பம்
  7. ஔன்பம்
  8. ஈற்பம்
  9. ஈப்பம்
  10. ஈக்பம்
  11. ஈட்பம்
  12. ஈம்பம்
  13. இற்பம்
  14. இப்பம்
  15. இக்பம்
  16. இட்பம்
  17. இம்பம்
  18. ஆற்பம்
  19. ஆப்பம்
  20. ஆக்பம்
  21. ஆட்பம்
  22. ஆம்பம்
  23. ஈன்னம்
  24. ஈன்மம்
  25. ஈன்றம்
  26. ஈன்லம்
  27. ஈன்கம்
  28. ஈன்ஙம்
  29. ஈன்டம்
  30. இன்னம்
  31. இன்மம்
  32. இன்றம்
  33. இன்லம்
  34. இன்கம்
  35. இன்ஙம்
  36. இன்டம்
  37. ஆன்னம்
  38. ஆன்மம்
  39. ஆன்றம்
  40. ஆன்லம்
  41. ஆன்கம்
  42. ஆன்ஙம்
  43. ஆன்டம்
  44. அன்னம்
  45. அன்மம்
  46. அன்றம்
  47. அன்லம்
  48. அன்கம்
  49. அன்ஙம்
  50. அன்டம்
  51. அன்ணம்
  52. அன்தம்
  53. அன்ரம்
  54. அன்ளம்
  55. அன்எம்
  56. அன்வம்

4 செயல்படுத்துதல், குறிப்புகள்

இந்த அல்கோரிதத்தின் நிரலாக்கம் இங்கு ஓப்பன் தமிழ் திரட்டில் சேர்க்கப்பட்டது. இதனை நீங்கள் முழுதேடலில் இடம் கொடுத்தால் 2398 விடைகள் கிடைக்கும் – அதாவது முழு 4-எழுத்து சொல்லின் 4-எழுத்து தொலைவில் உள்ள திருத்தங்கள் எல்லாவற்றையும் தேடுவதால் உண்டாகும் தகவல் வெள்ளப்பெருக்கு; சாதாரணமாக 1 அல்லது 2 எழுத்துப்பிழைகள் மட்டுமே உள்ளன என்பது அறிவியலாளர்கள் கணிப்பு. இதை நாம் செயல்படுத்தும் ‘tree pruning search‘ அல்கொரிதம் வகையினால் நாம் 56 மாற்றங்களுக்குள் மட்டுமே தேடல்களை நடத்தி இந்த தட்டச்சு கைவிரல் தவரான உள்ளீட்டிற்கு தீர்வு காணலாம்.

இதன் சிக்கல் அளவு [computational complexity] என்பது, ஒரு n-எழுத்து சொல் என்று கொண்டால், O(k1 x k2 x k3 … kn ) = O( kn ) என்று அதிக பட்சமாக இருக்கலாம் என்று [ஏதோ ஒரு k > 0 எண்ணால்] என்று நம்மால் காட்டமுடியும்.

சொல்திருத்தி – தெறிந்தவை 3

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

1 மேலோட்டமான சில குறிப்புகள்

சொல்திருத்தியில் பிழையான சொல் ஒன்றை முதலில் கண்டரிந்தபின், அதற்கு எப்படி ஒரு மாற்றை [என்ற ஒரு தோராயமான சொற்பிழை நீக்கப்பட்ட பொருத்தத்தை எப்படி] உருவாக்குவது ? இதற்கு தேவை திருத்தத் தொலைவு d.

இயற்ப்பியலில், புள்ளியியலில் இவ்வாரான் கேள்வியை ஒரு optimization வடிவத்தில் மாற்றி இதனை தீர்வுகாணலாம். இதனைப்போல் சொல்திருத்தியில்,

மாற்றுச் சொல் = arg-min [ d[ச,த] ]   

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

2 தொலைவு

தொலைவு – இரு சொற்களுக்கும் உள்ள நெறுக்கத்தை நாம் சொல்திருத்தியில் கணக்கிட வேண்டிய தேவை இருக்கிரது. ஏனெனில், ஒரு தவரான் சொல் உரையில் உள்ளீடு செய்யப்பட்டிருந்த்தால் அதற்கு மாற்றை தானியங்கி வழியில் கண்டறிய [அதவது இதன் மாற்றுச்ச்சொல்] இதற்கு பொருத்தமாகவும், நேருக்கமாகவும் இருக்கும் என்பது கணினியாளர்களும், மொழியியலாளர்களும் ஒப்புக்கொண்ட ஒரு கோட்பாடு. இதனை செயல்படுத்த கணினியாளர்கள் கொண்ட ஒரு மதிப்பீடு தொலைவு. இதனை திருத்தத் தொலைவு என்று சொல்வார்கள் [edit-distance].

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

இதன் பொருள் என்ன ? இதன் அமைப்பு எப்படிபட்டது ? கணிதவியலில், தினசரி வாழ்வில் எப்படி தொலைவு நிர்னயிக்கப்படுகிரது என்து போல், ஒரே இடத்தில் உள்ள பொருளுக்கும் அதே பொருளுக்கும் தொலைவு எதுவும் இல்லை – 0. அதே மாதிரி ஒரே சொல்லிர்கும் அதே சொல்லின் நகலுக்கும் தொலைவு 0. பிரகு, உங்கள் வீட்டிற்கும் உங்கள் பக்கத்துவீட்டிற்கும் தொலைவு என்ன ? தொலைவு 1 அல்லது கூடுதலாகவே இருக்கவேண்டும் இல்லையா ? பக்கத்து வீட்டார்க்கும் உங்கள் வீட்டிற்கும் உள்ள தொலைவு, உங்கள் வீட்டிற்கும் அவர்களது வீட்டிற்கும் உள்ள தொலைவும் ஒரேபடியானதாக இருக்கும். d[a,b] = d[b,a] என்பது ‘commutativity‘ என்ற சார்பின் குணத்தை இந்த திருத்த தொலைவு சார்பும் கொண்டது. [அதையும் – ‘போத்திக்குனு படுத்துக்கலாம், படுத்துக்குனு போத்திக்கலாம்‘ என்று பல முதிய தமிழ் மைக்கில் ஜாக்சன்கள் சொல்லியதை நினைவு கொள்ளலாம்]. அதுவே பொது அறிதல். இதைப்பொல குணங்களைக்கொண்ட சார்புகளை கணிதவியலில் ‘metric‘ என்றும் சொல்வார்கள் – அதாவது அளக்கும் சார்பு.

3 சிரிய எடுத்துக்காட்டு

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

அகராதியில் உதாரனத்திற்கு 5 சொற்கள் இருக்கு என்று மட்டும் கொள்ளல்லாம்.

அகராதி A என்பதில் [‘அவிழ்’,’அவல்’,’அவள்’,’தவில்’,’தவள்’] என்ற் சொற்கள் இருக்கு என்றும் உள்ளிட்டு சொற்கள் ‘ஏவள்’, ‘இவல்’ என்று கொடுக்கபட்டது என்றும் கொள்வோம். இதற்கு என்ன மாற்றுக்கள் ?

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

இதனை இயக்கினால் நாம் பார்கக்கூடிய வெளியீடு இப்படி; அதாவது நமது சிரிய சொல்திருத்தி அல்கொரிதம் ‘ஏவள்’ என்பதை ‘அவள்’ என்றும், ‘இவல்’ என்பதை ‘அவல்’ என்றும் மாற்றாக பரிந்துரைக்கிரது. மேலும் கவனித்து பார்த்தால் ‘ஏவள்’ என்பது ‘தவள்’ என்பதற்கும் நெருக்கமான தொலைவில் உள்ளது ‘distance’ என்ற தொலைவு பட்டியலில் தெறியும்.

ஒப்பன் தமிழ் நிரல் மற்றும் இயக்கிய வெளிப்பாடு இங்கு.

மேலும் மற்ற அல்கோரிதங்களைப் பற்றி அடுத்த பதிவுகளில் மேலோட்டமாக பாற்கலாம்.

Google-இல் பொறியாளர் வேலை

உலகில் தலைசிறந்த பொறியாளர் ஆண்-பெண்கள் Google-இல் வேலை செய்வதாக கேள்வி. ஆமாம் நனும், நீங்களும் தினமும் கோடு, ரோடு எல்லம் தான் காலா காலமாக போடுகிரோமே அப்படி கூகிளில் என்ன புளியகரச்சு ஊத்திராங்க ?

படம்: கணினி பொறியாளர் வேலைக்கு தயாராக்கும் நேர்க்காணல் புத்தகங்கள்!

சரி.

இதுதாங்க – நம்ம திக்கி தினரி, Stack-Overflowவில் பார்த்து விடை காணுவதில்லாமல் அல்கோரிதங்களில் புலியாகவும் இருப்பது இவர்களின் முதன்மை சிறப்பு!

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

  1. ஒரு கணினி பொறியியல் பட்டம் பெற்றும், அதில் கணினி நிரல்கள் வடிவமைப்பதில் வித்தகராக தேற்சி பெருங்கள். இது இல்லட்டியும் பரவாயில்லை.
  2. சில பிரசித்தி பெற்ற வலைப்பூ இருக்கிரது – அவற்றையும் படியுங்கள்; 1 இணைப்பு, 2 இணைப்பு
  3. சில நேர்காணல் புத்தகங்களைப் படியுங்கள்; இவை
    1. ‘Cracking the coding interview,’ – Gayle Laakman இங்கு
    2. ‘Programming interviews exposed’ – John Morgan, et-al இங்கு
  4. சில நல்ல கணினி செயல்முறை புத்தகங்கள் பற்றியும் படியுங்கள்; இவை பற்றி முதல், இரண்டாம் கட்டுரைகள் எற்கணவே இங்கும் [முதல்], இங்கும் [இரண்டு].

இவைகளை நீங்கள் படித்தும், இவற்றில் உள்ள பயிற்சி பாடங்களை கணக்கிட்டும், தீர்வு கண்டும் ஆறு மாதம் அல்லது ஒரு வருடம் முயன்றால் நல்ல விளைவுகள் கிட்டும். கண்டிப்பாக நீங்கள் ஒரு வளர்ச்சி பெற்ற பொறியாளர் ஆவீர்கள்!

ஆழக்கற்றல் – Deep Learning – மின் புத்தகம்

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.

Front Cover
Book: “Quantum Computation and Quantum Information” from authors Michael Nielsen, Isaac Chuang. (C) 2000 Cambridge University Press. Google Books URL here

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.

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

செயற்கை நரம்புகளின் பினைப்புகள் [‘Artificial Neural Networks’] மூலம் எப்படி கையெழுத்து வழி எண்களை உணரலாம் ? வழிகள் கூறுகிறார் திரு. நீல்சன் Neural networks and deep learning என்ற புத்தகத்தில்

பொறியாளர்கள் கவணம்! இதனை தமிழாக்கம் செய்யலாம் – முனைவீர்களா?

செல்வா

வருங்காலத்தில் ஒரு தமிழ் செயற்கை நுண்ணறிவு உருவாக்கப்படும். உடனுக்குடன் ‘இன்ஸ்டண்டா’ ஆங்கிலத்தில் இனையான தமிழ் சொற்களை தேடி அல்லது உருவாக்கி சொல்லும். ஆமாம் எந்திரம் சொல்லாடலில் எப்படியும் உள்ளே வரப்போகிரது. நமக்கும் உதவட்டுமே!

தமிழ் மரபுகளுடன், மொழி பழக்கவழக்கங்களுடன் சரிவர, முடிந்த அளவு வட மொழி சொற்கள் சேற்காமல், மேலும் ஒரு படி அதிகமாக ஆங்கிலம் கலப்பின்றி [முற்றிலும் ஒழிக்கமுடியுமா? தெரியவில்லை; கணினிதானே, இலக்கைவைத்தால் முடியாதா என்ன ?]

R2-D2 மற்றும் C-3PO Star Wars திரைபடத்தின் கதாப்பாதிர ரோபோக்கள்.

R2-D2 மற்றும் C-3PO Star Wars திரைபடத்தின் கதாப்பாதிர ரோபோக்கள். (c) Lucas Films, Inc. and Star Wars franchise

இத்தகைய செயற்கை நுண்ணறிவு உருவாக்கினால், அதற்கு செல்வா என்று செல்லமாக பெயரிடுவோம். அரிமா ரோபோ C-3PO, R2D2 மாதிரியான, புவியில் இல்லாத தமிழ் அறிவு கொண்ட ஒரு ஓரகில் [Oracle]-ஆக அமையுமோ என்னவோ. ஐயா கலாம் சொன்னது கனவுகள் நினைவாக விழித்திடு; தூக்கத்தை கலைத்திடு.

 

ஆமவடை

ஏற்கணவே பதிவு செய்த  இடத்தில் இருந்து தொடருவோம்:

ஆமவடை

படம் 1: ஆமவடை

Corollary 2 of  Theorem 3: ஒரே சொல்லில் எழுத்து இரடிக்கப்பட்டால் அந்த சொல் டோரசில் ஒரு சுழலுடன் [loop] கொண்டபடி அமையும்.

Lemma 2:  படுக்கவசமாகவும், நிமிர்ந்துவசமாகவும் அமைகப்பட்ட சொர்கள் மொழியில் இல்லாதவை.

Corollary 3 or Theorem 3: டோரசில் படுக்கவசமாகவும், நிமிர்ந்துவசமாகவும் பாதைகள்/எழுத்துக்கள் இல்லாதவை.

Theorem 4: ஒரு அகராதியில் உள்ள சொர்கள் அனைத்தையும் டோரசில் பிரதிபலித்தால் அந்த குறுக்கிடும் இடங்களின் [intersecting points] ஒன்று அல்லது மெர்பட்ட சொற்களை] எண்ணிக்கை அளவை மிக குறைவாக்கும் வண்ணம் அமைக்க முடியாது. அதாவது ஒரு அகராதியின் சொற்கள் அனைத்து எவ்வித அமைப்பில் உள்ள டோரசானாலும் சரி அதன் குறுக்கிடும் இடங்களின் எண்ணிக்கை மாராது. இது ஒரு மாறிலி [invariant].

Corollary 1 of Theorem 4: மேர்கண்ட டோரசில் [அதன் ஒரு பிரதிபலிப்பில் – ‘அ,ஆ,இ,ஈ, … ,ஒ,ஓ,ஔ‘ என்றும் ‘கசடதபரயரலவழள – ….’  என்றும் வரிசையிலோ, அல்லது வேறு பரிமாணங்களில்  அடுக்கியிருந்தால்] ஒவ்வொரு அகராதிக்கும் ஒரு சிரப்பான குறுக்கிடும் இடங்களின் எண்ணிக்கை கிடைக்கும். இந்த எண் அகராதியின் கையொப்பம் [signature] என்றும் சொல்லாம்.

Theorem 5: டோரசில் உள்ள ஓவ்வொரு அகராதி சொல்லும் ஒரு பாதை என்று கொள்ளலாம். சொல்லின் தொடக்க எழுத்து  பாதையின் தொடக்கத்தையும், சொல்லின் கடைசி எழுத்து பாதையின் முடிவையும் குறிக்கும்; பாதை திசைகொண்ட பாதையாக இருக்கும் – ஒரு அம்பு தொடக்கத்தில் இருந்து முடிவின் திசையில் வழி காட்டும். ஆகையால் அகராதியில் இல்லாத பாதைகள் பிழையாக எழுதப்பட்ட  அகராதி சொற்களுக்கு சமம், அல்லது அகராதியில் இல்லாத புதிய சொற்களுக்கு சமம்.

வாதம் [ஆதாரத்தின் தொடக்கமாக கருத்ப்படலாம்]:  டோரசில்ஒவ்வொரு சொல்லும் [அதன் பாதையும்] அகராதியில் உள்ள சொற்களாகவே இருக்கவேண்டும். Coding-theory / error correction codes theory படி இவ்வகை சரியான எழுத்துக்கள் உள்ள பாதைகள், சரியான சொற்களாகவும், தவான சொற்கள் [இல்லாத சொற்கள்] பிழையானவை என்வும் அமையும். இவ்வாரான சொற்கள் சரியானவையையின் சொற்பிழை எனவும் கருதப்பாடும்.

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

Theorem 6: Tries எனப்படும் சொல்மரங்களைக்கொண்ட தரவமைப்பை டோரசில் குறியிட்டால், அது தொடர்பாதையாக ஒரே தொடக்கமும், பல பாதைமுடிவுகளையும் கொண்டதாக அமையும். இவற்றில் சில பாதைகள் சேரும் வகையில் முடிவுபெரும் வகையிலும் அமையலாம்.

படம் 2: Trie மரம் என்ற தரவமைப்பு. இதில் ‘to’, ‘tea’, ‘ted’, ‘ten’, ‘A’, ‘in’, மற்றும் ‘inn’ ஆகிய சொற்கள் இடம் பெற்றுள்ளன.

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

-முத்து.

தமிழ்கருவி

2007-இல் எனது முதல் தமிழ் மென்பொருளை உருவாக்கினேன். இன்று தொலைந்த மென்பொருள்கலில் ஒன்று. எப்படி தொலயவிட்டேன் ? காலம்.

மிதம் https://egovindia.wordpress.com/2007/01/09/tamil-transliteration-tool-using-gtk-toolkit-for-gnome-environment/

Screen Shot 2018-08-11 at 1.47.00 AM