இயல்மொழி ஆய்வில் எந்தவொரு வேலையை நிறைவேற்றவும் பல பணிகளை ஒன்றன்பின் ஒன்றாகச் செயல்படுத்த வேண்டும். எந்தவொரு சிறிய வேலைக்குக் கூட பெரும்பாலும் கீழ்க்கண்ட பணிகள் இன்றியமையாதவை:
- வாக்கியங்களைப் பிரித்தல்
- சொற்களைப் (நிறுத்தற் குறிகளையும் சேர்த்து) பிரித்தல்
- சொல்வகைக் குறியீடு செய்தல்
- அடிச்சொல்லையோ, தண்டுச்சொல்லையோ பிரித்தெடுத்தல்
இதன் பின்னர், தேவையைப் பொருத்து, சார்புநிலைப் பிரிப்பியை வைத்து கிளைப்பட வங்கிகளாகவோ அல்லது சொற்பகுப்பியல் ஆய்வியை வைத்து உருபன்களாகவோ பிரிப்போம். ஆக, குறைந்த பட்சம் ஐந்தாறு பணிகளை ஒன்றன்பின் ஒன்றாகச் செயல்படுத்துவோம்.
இவ்வாறு தொடர்ச்சியாகச் செய்யும் பணிகளுக்கு மென்பொருள் ஒரே திரளாக இல்லாமல் தனித்தனியாக பராமரிக்கக் கூடிய நிரல்கூறுகளாக (modular) இருப்பது நல்லது. மேலும், பிரச்சினை வந்தால் ஒவ்வொரு நிரல்கூற்றின் உள்ளீட்டையும், வெளியீட்டையும் தனித்தனியாக நம்மால் ஆய்வு செய்ய இயல வேண்டும். இதைத்தான் இயல்மொழி ஆய்வு கருவித் தொடரி (tool chain) அல்லது குழாய்த்தொடர் (pipeline) என்று சொல்கிறோம்.
அதாவது, இயல்மொழி ஆய்வில் ஒரு குழாய்த் தொடர் என்பது தற்சார்புடைய நிரல்கூறுகளின் சங்கிலி ஆகும். ஒவ்வொன்றும் அதற்கு முன்னதாக உள்ள நிரல்கூறின் வெளியீட்டை எடுத்து தன்னுடைய செய்முறையை செய்து அடுத்த நிரல்கூறுக்கு அனுப்புகிறது.
எடுத்துக்காட்டாக, பைதானில் எழுதப்பட்ட இயல்மொழி கருவித் தொகுப்பில் (NLTK) அடிப்படைக் கருவிகள் உள்ளன. இந்தக் கருவிகளை வைத்து உங்கள் வேலைக்குத் தகுந்தவாறு நீங்கள் ஒரு கருவித் தொடரியை அமைத்துக் கொள்ளலாம். ஏனெனில் ஒவ்வொரு நிரல் கூறும் வெவ்வேறு வழிமுறைகளைப் பயன்படுத்தி நிறைவேற்றப்படலாம், மேலும் கருவித் தொடரியின் மற்ற பகுதிகளை பாதிக்காமல் ஒரு வினைச்சரத்தை மாற்றலாம்.
தற்பொழுது கிடைக்கும் இயல்மொழி ஆய்வுக் கருவிகள்
நாம் முன்பு கூறியது போல, தமிழுக்கான கருவிகள் பெரும்பாலும் கிடைப்பதில்லை. செயல் விளக்கத்துக்காக சில கருவிகள் இணையதளத்தில் செயலியாக வெளியிடப்பட்டுள்ளன. பொதுவாக இவற்றில் ஒரு சொல்லை உள்ளிட்டு, வேலை செய்கிறதா என்று பார்க்க முடியும், அவ்வளவுதான். வேறு சில கருவிகள் பதிவிறக்கமாக அல்லது எழுதிக் கேட்டால் கிடைக்கக்கூடும். அப்படிக் கிடைத்தாலும் இவை வரைபடப் பயனர் இடைமுகம் கொண்டவை. ஒரு நேரத்தில் சிறிய அளவிலான சொற்களை மட்டுமே உள்ளிட முடியும். இவற்றையெல்லாம் விட மிக முக்கியமாக, தனித்தனியாகத்தான் வேலை செய்யும். நாம் மேலே விவரித்தபடி கருவித் தொடரியாக இணைக்க முடியாது.
இரைச்சலை அகற்றல் (Noise removal)
நீங்கள் பலவீனமான ஒலியளவு கொண்ட வானொலி அலைவரிசையைக் கேட்க முயல்கிறீர்கள் என்று வைத்துக்கொள்வோம். இரைச்சலைக் குறைத்தால்தான் சமிக்ஞை தெளிவாக வந்து சேரும். தேவையான ஒலியை நன்றாகக் கேட்க முடியும். அதே போலவே உரையிலுள்ள உட்பொருளைப் பிரித்தெடுக்க இரைச்சலைக் குறைக்க வேண்டும்.
இரைச்சல் அகற்றுவதற்கான ஒரு பொது அணுகுமுறை இரைச்சல் நிறைந்த சொற்குறிகளின் ஒரு பட்டியலைத் தயார் செய்வது. பின்னர் இந்த சொற்குறிகளை ஒன்றொன்றாக உரை முழுவதும் தேடி நீக்குதல். இணையத்திலும், சமூக ஊடகங்களிலும் எடுத்த உரைகளில் இணையத்தள முகவரிகள் (URLs), கொத்துக்குறிகள் (hashtags), வேற்று மொழிச் சொற்கள் போன்றவை இருக்கலாம். அஃகுப்பெயர்களுக்கும் (acronyms) சுருக்கங்களுக்கும் பதிலாக அவற்றின் முழு வடிவங்களை மாற்றி வைக்க வேண்டும். இம்மாதிரி சிறப்பு வடிவங்களைக் கையாளும் போது மற்றொரு அணுகுமுறை தேடுகுறித்தொடர்களைப் (regex) பயன்படுத்துவது.
நாம் அடிக்கடி பயன்படுத்தும் இடைச்சொற்களில் (Stopwords) பொருள் குறைவாக இருப்பதால் இவை ஒரு உரையை மற்ற உரைகளிலிருந்து வேறுபடுத்த உதவுவதில்லை. எடுத்துக்காட்டாக ஒரு, என்று, மற்றும், இந்த, இது, என்ற, கொண்டு, என்பது, பல, ஆகும்…போன்ற சொற்கள். நாம் சில நேரங்களில், மேலும் செயலாக்கும் முன், உரையிலிருந்து இவற்றை வடிகட்டி எடுத்துவிட வேண்டியுள்ளது. நான் இந்த 125 சொற்கள் கொண்ட பட்டியலை TXM சொற் களஞ்சியத்தில் முதல் 300 சொற்குறிகளிலிருந்து (சொற்களும் நிறுத்தற்குறிகளும்) தயாரித்தேன்.
நாம் ஒரு உரையை ஆய்வு செய்யும் போது, வேறெந்த வேலையும் செய்யும் முன்னர் இவற்றைச் செய்ய வேண்டும். ஆகவே இவற்றைச் செயல்படுத்தல் முன்னோடிகள் (pre-processing) என்றும் சொல்கிறோம்.
வாக்கியங்களைப் பிரித்தல் (Sentence segmentation)
வாக்கியங்களின் எல்லைகளைக் கண்டறிதல், அதாவது பத்திகளாக உள்ள உரையிலிருந்து வாக்கியங்களாகப் பிரிக்கும் செயல். இந்தப் பணியை மேலோட்டமாகப் பார்த்தால் மிக எளிதாகத் தெரிகிறது. ஆனால் நாம் புள்ளியை வாக்கிய முடிவைக் காட்ட நிறுத்தற் குறியாகவும் பயன்படுத்துகிறோம், சுருக்கங்களுக்கும், பதின்ம எண்களுக்கும் பயன்படுத்துகிறோம். ஆகவே புள்ளி வந்தால் வாக்கியம் முடிந்துவிட்டது என்று கூற முடியாது.
ஆங்கில வாக்கியப் பிரிப்பான்களால் தமிழின் தனிப்பட்ட அம்சங்களை சரியாகக் கையாள இயலவில்லை. எ.கா.,பெயர் முதலெழுத்துகள், முன்னொட்டுகள், சுருக்கக் குறியீடுகள் ஆகியவை. ஆகவே இதற்காக நான் NLTK Punkt tokenizer-ஐத் தமிழுக்குத் தயார் செய்துள்ளேன். இது இயந்திரக் கற்றல் (machine learning) மூலம் சாதாரண சொல்வங்கி (raw text corpus) வைத்து செய்யப்பட்டது.
சொற்களையும் நிறுத்தற் குறிகளையும் பிரித்தல் (Tokenization)
ஒரு வாக்கியத்தில் சொற்களும் நிறுத்தற் குறிகளும் இருக்கும். இவற்றைப் பொதுவாக சொற்குறிகள் (Tokens) என்று சொல்கிறோம். இடைவெளிகளை வைத்து இவற்றைப் பிரிக்கலாம். ஆனால் முற்றுப் புள்ளி முக்கால் புள்ளிகளுக்கு முன் இடைவெளி இல்லாமலும் இருக்கலாம். ‘ச.ம.உ.’ என்பதைப் புள்ளிகளில் பிரிக்காமல், ஒரே சொல்லாக எடுக்க வேண்டும்.
மேலும் இடைவெளி இருப்பதால் “தென் சென்னை” இரண்டு சொற்களா அல்லது இரண்டும் சேர்ந்து ஒரு இடத்தைக் குறிப்பதால் ஒரே சொல்லா? ‘சட்ட மன்ற உறுப்பினர்’ என்பதையும் இடைவெளிகளை வைத்துத் தனித்தனி சொற்களாகப் பிரிக்காமல், ஒரே சொல்லாக எடுக்க வேண்டும். ஆனால் இவற்றை சொற்குறிகள் பிரிக்கும்போது செய்ய இயலாவிட்டால், பின்னர் பெயரிட்ட உருபொருள் பிரித்தெடுக்கும்போது செய்யலாம்.
இதன் பின்னர், செய்யும் வேலையைப் பொருத்து, சொல்வகைக் குறியீடு செய்தல், அடிச்சொல்லையோ, தண்டுச்சொல்லையோ பிரித்தெடுத்தல் போன்ற செயல்முறைகளைக் கருவித் தொடரியில் இணைக்கலாம்.
நடைமுறை எடுத்துக்காட்டு: வியட்நாமிய இயல்மொழி ஆய்வு குழாய்த்தொடர்
சொற்களைப் பிரித்தெடுத்தல், சொல்வகைக் குறியீடு, பெயரிட்ட உருபொருள் அடையாளம் காணுதல் மற்றும் சார்புநிலை பிரிப்பி ஆகிய முக்கியப் பணிகளில் பயனர்களுக்கு உதவுவதற்கும், அடுத்து வரும் செய்முறைகளின் ஆய்வாளர்கள் மற்றும் கருவி நிரலாளர்களுக்கு ஆதரவாக இருக்கவும் ஆங்கிலத்தில் ஸ்டான்ஃபோர்ட் CoreNLP கருவித்தொகுப்பு போன்ற ஒரு இயல்மொழி குழாய்த்தொடரை வியட்நாமிய மொழிக்கு உருவாக்குவதற்கான தேவை உள்ளது என்று முடிவு செய்தனர். வியட்நாமிய மொழிக்கு இயல்மொழி ஆய்வுக் குறியீடு செய்யும் இந்த VnCoreNLP என்ற குழாய்த்தொடர் திட்டத்தைத் தொடங்கினர். இது ஜாவா (Java) மொழியில் எழுதப்பட்டுள்ளது.
இந்த நிரல் தொகுப்பை படைப்பாக்கப் பொதுமங்கள் அனுமதியில் பகிர்ந்துள்ளனர். வணிகம் அல்லாத வேலைகளுக்கு இலவசமாகப் பயன்படுத்தலாம். வியட்நாமிய மொழிக்கு இதுவரை உள்ள கருவிகளைவிட மிகவும் துல்லியமாக வேலை செய்கிறது மற்றும் வேகமாக உள்ளது. எனவே இதை பெரிய அளவிலான தரவுகளைக் கையாளுவதற்குப் பயன்படுத்தலாம். எளிதாகப் பயன்படுத்த முடியும். பயனர்கள் வெளிப்புற சார்புகளை நிறுவ வேண்டியதில்லை. கட்டளை வரி அல்லது ஜாவா (Java) பயன்பாட்டு நிரலாக்க இடைமுகத்திலிருந்து (API) இயக்க முடியும்.
நடைமுறை எடுத்துக்காட்டு: தாய்லாந்து இயல்மொழி ஆய்வு கருவித்தொகுப்பு
NLTK என்பது இயல்மொழி ஆய்வுக்கு பைதான் மொழியில் எழுதப்பட்டது. இது ஒருங்குறியை ஆதரிப்பதால் தமிழுக்கும் ஓரளவு பயன்படுத்த முடியும். இதிலுள்ள தேடுகுறித்தொடர் நிரலகம் ஒருங்குறியை ஆதரிக்கவில்லை. ஆகவே தமிழில் பெயரிட்ட உருபொருள் அடையாளம் காணப் பயன்படாது. இந்த NLTK போல TLTK என்று தாய்லாந்து இயல்மொழி ஆய்வு கருவித்தொகுப்பு தயாரித்துள்ளார்கள். இதில் வாக்கியத்திலிருந்து சொற்களைப் பிரித்தெடுத்தல், சொல்வகைக் குறியீடு செய்தல், பெயரிட்ட உருபொருள் அடையாளம் காணுதல் போன்ற பல வேலைகளுக்கு கருவிகள் உள்ளன.
————-
இத்தொடரில் அடுத்த கட்டுரை: இயந்திர மொழிபெயர்ப்பு
விதி சார்ந்த இயந்திர மொழிபெயர்ப்பு. இயந்திர மொழிபெயர்ப்பு செய்முறை வரிசை. புள்ளிவிவர இயந்திர மொழிபெயர்ப்பு. கலப்பு இயந்திர மொழிபெயர்ப்பு. நரம்பியல் இயந்திர மொழிபெயர்ப்பு. வரைபடச் செயலகம் (GPU) சில்லு உள்ள கணினி தேவை. இயந்திர மொழிபெயர்ப்பு அணுகல்களில் நல்லதும் கெட்டதும். இருமொழித் தொகுப்புகள்.