தமிழில் வேர்ச்சொல் வடிகட்டியை open-tamil பைதான் நிரல் தொகுதி மூலம் வழங்குகிறோம்.
ஆசிரியர்: முத்தையா அண்ணாமலை <ezhillang@gmail.com>
சுருக்கம்:
இந்த கட்டுரையில் நான் சமீபத்தில் 2013-இல் வெளியிடப்பட்ட தமிழ் வேர்ச்சொல் பகுப்பாய்வு வடிகட்டியை பொது பயனுக்கு மாற்றியது பற்றி விரிவாக எழுதுகிறேன். இந்த வேலைப்பாடுகள் முழுதுமே திறமூல மென்பொருள் சூழலினால் உருவானது என்பதை மனதில் கொள்வது முக்கியமானதும் கூட. தமிழின் கணிமை ஆய்வின் பொது வளர்ச்சிக்கு இத்தகைய பொதுவெளியில் உள்ள மென்பொருள்கள் தொடர்ந்து உதவும் என்றும், உருமாறி புது வடிவங்களில் அவதரிக்கும் என்றும் நாம் எதிர்பார்க்கலாம்.
வேர்ச்சொல் வடிகட்டி என்றால் என்ன?
வேர்ச்சொல் பகுப்பாய்வு என்பது ஒரு சொல் அல்லது பல சொற்களை கொடுத்தால் (எ.கா. [‘மலைகள்’,’பாடுதல்’,’ஓடினான்’] அவற்றை [‘மலை’,’பாடு’, ‘ஓடி’] என்று) அதன் மூல அடி/வேர் சொல்லினைக் கொண்டு செல்கின்ற ஒரு அல்கோரிதம்.
இத்தகைய சேவையை தமிழில் பொதுவெளியில் திரு. தாமோதரன் ராஜலிங்கம் 2013-இல் வெளியிட்டார் [1]. இதனை snowball என்ற ஒரு மொழியியல் தொகுப்பி [compiler]-இன் வாயிலாக அதற்கு தமிழ் புரியும் படி குறியீட்டு [unicode encoding] விதிகள் அமைத்து, தமிழ் சொற்களை இலக்கண விதிகளின் மூலம் வேர்சொற்களாக அடையுமாரு அருமையான பணியை செய்தார்.
அதனை பொதுவாக இணைப்பதில் என்ன தடங்கல்?
மேல் உள்ள பணியை பொதுவாக இணைப்பதில் என்ன தடங்கல் என்றால், Snowball என்ற மென்பொருள் C-நிரல்களை வெளியிடுகிறது. இதனை இயக்கியாக மட்டுமே செயல்படுத்த முடிகிறது – நேரடியாக பைத்தான் நிரலாக இதனை சேர்த்து ஒரு மொழியியல் செயலியை உருவாக்க முடியவில்லை.
திரு. சீனிவாசன் இதனை ஒரு “pipe open to a process” என்ற UNIX முறையில் [இரு செயலிகளை இணைக்கும் வகை] கையாண்டு சில மாற்று வழியில் செயல்பட்டார் – இதுவும் சிறிது சிக்கலாகத்தான் இருந்தது.
நானும் இணைந்த, வேறு சில முயற்சிகள் [பைத்தானில் நேரடியாக தமிழ் சொல் வடிகட்டையை உருவாக்க] எடுக்கப்பட்டன. ஆனால் அந்த செயல்களின் மொழியியல் சிக்கல் காரணமாக அவை வெற்றிபெறவில்லை.
ஜப்பான் பொறியாளர் கண்டெடுப்பு
இதனிடையே, சென்ற ஆண்டு திரு. யோஷி அவர் snowball நிரலை C மட்டுமின்றி பைத்தான் வெளியீடுகளையும் உருவாக்கும் படி செய்த முயற்சி என்கு தெரியவந்தது [2]. இதனை பயன்படுத்தி அவர் snowball_py என்ற தொகுப்பையும் வெளியிட்டார். அதாவது 15 மொழிகள் அவற்றின் பகுப்பாய்வை பைத்தானில் இருந்தே நேரடியாக அனுகும் வகை அவர் செய்தார்.
அவரது பணியை நான் முதலில் சரிவர புரிந்து கொள்ளவில்லை – அவரே ஒவ்வொரு மொழியின் வடிகட்டியை தானாக பைத்தான் மொழிக்கு மாற்றியதாக புரிந்த்திருந்த்தேன். பின்பு அவர் ஒரு தானியங்கியை உருவாக்கியதை கண்டு snowball-க்கும் snowball_py-க்கும் உள்ள தொடர்பை உணர்ந்தேன்.
இரண்டையும் இணைத்தல்
மேற்கண்ட கண்டெடுப்புகளால் தமிழின் வேர்ச்சொல்வடிகட்டியை பைத்தானில் கொண்டுவருவதற்கு இப்படி ஒரு வழி செய்யலாம் என்று எண்ணம் கிளம்ப, அதனை அதிஷ்ட வசமாக நேரடியே செயல்பட்டு சட்டேன்று சரியாக முடிந்தது. பிரெஞ்சு அறிவியலாளர், திரு. லூயி பாஸ்டோர் சொன்னது நினைவில் வரலாம் – ‘Luck is when preparation meets opportunity’ என்று.
படிப்படியாக இதனைபார்த்தால்:
1. தாமோதரன் அளித்த snowball patch-ஐ யோஷியின் snowball இல் இணைத்தேன்
2. பின்பு இதில் build செய்தால் ‘tamil-stemmer.py’ என்ற நிரல் உருவாகும்
3. அடுத்து இந்த நிரலை ‘snowball_py’-இனில் இணைக்கவேண்டும்
4. இந்த புரிதலை கொண்டு, திறமூல நிரல்களினால் இவற்றை ஒப்பன் தமிழினில் ஒட்டிக்கொண்டேன் [3].
5. மேலும் திரு. யோஷியின் திட்டத்திற்கு pull-request அனுப்பியுள்ளேன் – அதாவது அவர் அதனை ஏற்றாரேனில் தமிழ் பகுப்பாய்வு வசதி snowball_py-இலும் வரும் வகை திரு. தாமோதரனின் சேவையை நான் கொண்டு சேர்த்திருப்பேன்.
இன்றைய நிலை – தொழில்நுட்ப விவரங்கள்
ஓப்பன் தமிழ் நிரல் தொகுப்பை நிறுவினால் இதில் ‘tamilstemmer’ என்று ஒரு நிரல் வசதி உள்ளது. இது தான் தாமோதரன் அவர்களின் சேவையை நேரடியாக பைத்தான் தளத்தில் (வேறேதும் ஒரு நிரல்தேவைகள் இல்லாமல் – அதாவது ‘dependency’ இல்லாமல்) பயன்படுத்தலாம். உதாரணம்:
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
from tamilstemmer import TamilStemmer | |
wordlist = [u'மலைகள்',u'பாடுதல்',u'ஓடினான்'] | |
#expected = [u'மலை',u'பாடு', u'ஓடி'] | |
ta_stemmer = TamilStemer() | |
for word in wordlist: | |
ta_stemmer.stemWord(word) |
open-tamil நிறுவுதல்
உங்கள் கணினியில் pip3 நிரலை நிறுவி, பிறகு பின்வரும் கட்டளை மூலம், open-tamil நிரல் தொகுப்பை நிறுவலாம்.
sudo pip3 install open-tamil
அடுத்த கட்ட பணிகள்
இத்தகைய வேர்சொல் வடிகட்டியினை சொல்திருத்தியில் சேர்த்தால் அது ஒட்டு மொழியான தமிழின் பல சொல் வடிவங்களை சரியானதாக புரிந்துகொள்ளும்; ஆகையால் சொல்திருத்திகளின் வெளியீட்டில் சரியாக எழுதிய சொற்களை தவறு என்று அது பட்டியலிடும் வாய்ப்பு குறைகிரது [reduce false alarm rate].
அடுத்த கட்டமாக மொழியின் மாதிரிகளை உருவாக்குவதற்கு மொழியின் வேர்சொற்கள் மட்டுமே தேவைப்படுகிறது – இவற்றை ஓப்பன்-தமிழ் திரட்டியில் இருந்து தற்சமயம் பெறலாம். வேர்சொல் வடிகட்டி என்பது ஒரு மொழியியல் ஆய்வுக்கு முக்கியமான ஒரு அம்சம் – இதனை ஒரு மொழியியல் ஆய்வு தளத்தில் அளிப்பது மென்மேலும் சிறப்பாக தமிழை கணினியில் அலசி ஆராய்வதற்கு உதவும் என்று நம்புகிறேன்.
மேற்கோள்கள்
1. R. Damodharan, “”An Affix Stripping Iterative Stemming Algorithm for Tamil,” [2013] தமிழ் இணைய மாநாடு. இந்த ஆயவின் மூல மென்பொருள் திரமூலமாக இங்கு வெளியிடப்பட்டது github.com/rdamodharan/tamil-stemmer
2. Yoshiki Shibukawa, github.com/shibukawa/snowball/; port of snoballstemmer Python library github.com/shibukawa/snowball_py
3. முத்து அண்ணாமலை, TamilStemmer என்ற நிரலை (module) இங்கு ஓப்பன் தமிழ் தொகுப்பில் இணைத்த நிரல் சேவகத்தின் [GitHub code-repository] சுட்டி. t.co/DfFwTEHpUp
கட்டுரையாளர் முத்து அண்ணாமலை, தமிழில் நிரல் எழுத உதவும் எழில் மொழியின் உருவாக்குனர். பைதான் மூலம் தமிழை எளிதில் கையாள உதவும் open-tamil நிரல் தொகுப்பின் உருவாக்குனர்.
open-tamil பற்றி மேலும் அறிய – github.com/Ezhil-Language-Foundation/open-tamil
இதில் உள்ள பிழைகளை இங்கே எழுதலாம் – github.com/Ezhil-Language-Foundation/open-tamil/issues
open-tamil ஐப் பயன்படுத்தி, இன்னும் மேம்படுத்தி உதவ முத்து அவர்களைத் தொடர்பு கொள்ள ezhillang@gmail.com க்கு மின்னஞ்சல் எழுதுங்கள்.