இயற்கை மொழி செயலாக்கம் (NLP), காட்சிப்படுத்தல் ஆகியவற்றிற்கு spaCy யைப் பயன்படுத்துதல்

spaCy என்பது ஒரு திறமூல பைதான் நூலகமாகும், இது உரைகளிலான தரவை இயந்திர நட்பு வில்லைகளாக பிரித்திட உதவுகிறது. உரையை சுத்தம் செய்வதற்கும் செயலாக்குவதற்கும் காட்சிப்படுத்துவதற்கும் பயன்படுத்தக்கூடிய பலவிதமான கருவிகள் இதில் உள்ளன, மேலும்இது இயற்கையான மொழி செயலாக்கத்திற்கு உதவுகிறது.
இயற்கையான மொழி செயலாக்கம் (Natural language processing (NLP)) என்பது உரைவடிவிலான தரவுகளை பயன்படுத்திகொள்ளும்போதான இயந்திர கற்றலுக்கு (machine learning (ML)) ஒரு முக்கியமான முன்னோடியாகும். உரைகளிலான தரவானது பெரும்பாலும் கட்டமைக்கப்படாதது மேலும் இயந்திர கற்றல் மாதிரியைப் பயன்படுத்துவதற்கு முன்பு அந்த உரைகளை சுத்தம்செய்தல், செயலாக்கம் செய்தல் , வில்லைகளாக்குதல் ஆகிய பணிகளை செய்யவேண்டிய தேவைஏற்படுகிறது. பைத்தானில் NLTK, TextBlob , Gensim என்பன போன்ற பல்வேறு வகையான NLP நூலகங்கள் கட்டணமில்லாமல் கிடைக்கின்றன. இருப்பினும், உரையை செயலாக்குவதற்கும், உரையின் கட்டமைப்பைப் புரிந்துகொள்வதற்கு அழகான காட்சிப் படுத்தல்களைப் பயன்படுத்துவதற்கும் ஆன spaCyஆனது மிகவும் தனித்துவமாக விளங்குகின்றது. இந்த spaCyஆனது Cython எனும் கணினிமொழியால் உருவாக்கப்பட்ட நூலகமாகும்; எனவே அதன் பெயரில் இந்த கணினி மொழியினுடைய பெயரின் முதலிரண்டு( Cy) எழுத்துகளையும் சேர்த்து கொள்ளப்பட்டது ’.
இயந்திர கற்றல், NLP ஆகியவற்றில் தங்களுக்கான பணியை தேடுபவர்கள் கண்டிப்பாக இந்த spaCyஐப்பற்றி தெரிந்து கொள்ளுமாறு பரிந்துரைக்கப்படுகின்றது.
SpaCy ஐ நிறுவுகை செய்தல்
பைத்தானில் உள்ள பெரும்பாலான இயந்திர கற்றல் நூலகங்களைப் போலவே, spaCy ஐ நிறுவுகைசெய்வதற்கு எளிய pip எனும் நிறுவுகை கட்டளை தேவைப்படுகிறது. ஒரு புதிய நூலகத்துடன் பரிசோதனை செய்யும் போது அதனை எளிமையாக செயல்டுத்திடுவதற்காக ஒரு மெய்நிகர் சூழலைப் பயன்படுத்திடுமாறு பரிந்துரைக்கப் படுகிறது,, மெய்நிகர் சூழல் இல்லாமல் கூட spaCyஐ நிறுவுகைசெய்திடலாம். அதற்காக, ஒரு முனைமத்தைத் திறந்து பின்வரும் குறிமுறைவரிகளை செயல்படுத்திடுக:
pip install spacy
python -m spacy download en_core_web_sm
பயன்படுத்தக்கூடிய வெவ்வேறு மாதிரிகள் spaCy இல் உள்ளன. இதனுடைய செந்தர மாதிரி en_core_web_sm ஆகும். குறிமுறைவரிகளை செயல்படுத்திடும் பகுதிக்கு, பைதானின் ஒருங்கிணைந்த மேம்படுத்திடும்சூழலை (IDE) தேர்ந்தெடுப்பது நல்லது.மேலும் பயன்படுத்தி கொள்ள வசதியாக இருக்கும் வேறு எந்தவொரு பைதானின் ஒருங்கிணைந்த மேம்படுத்திடும் சூழலை (IDE)யையும் பயன்படுத்திகொள்ளலாம். அவ்வாறான IDE சூழலிற்கு வந்துசேர்ந்ததும், பின்வரும் குறிமுறைவரிகளை இயக்குவதன் மூலம் நிறுவுகைபணி வெற்றிகரமாக செய்யப்பட்டுள்ளதாவென சரிபார்த்திடுக
import spacy
myspacy = spacy.load(‘en_core_web_sm’)
நாம் உருவாக்கிய spaCy எனும் பொருளானது en_core_web_sm என்ற மொழி மாதிரியின் ஒரு எடுத்துக் காட்டாகும். உரையில் NLP செய்ய இந்த நிகழ்வைப் பயன்படுத்திடுக.
உரையைப் படித்தலும் வில்லைகாளாக்குதலும்
இதற்கான அடிப்படைகளிலிருந்து ஆரம்பிக்கலாம். முதலில் ஒருசில மாதிரி உரையை உருவாக்கியபின்னர் அதை spaCyஆனது புரிந்து கொள்ளக்கூடிய ஒரு பொருளாக மாற்றிடுக உரைக்கு வில்லைகளாக்குதலை பயன்படுத்திடுக. வில்லைகளாக்குதல் என்பது NLP இன் ஒரு முக்கிய பண்பாகும், ஏனெனில் இது ஒரு உரையை தனித்தனி அலகுகளாக உடைக்க உதவுகிறது. NER குறிச்சொல், POS குறிச்சொல் போன்ற உரைக்கான செயலிகளைப் பயன்படுத்துவதற்கு இது மிகவும் முக்கியமானது
#reading and tokenizing(வில்லைகளாகஆக்குதல்) text
some_text = “This is some example text that I will be using to demonstrate the features of spacy.”
read_text = myspacy(some_text)
print([token.text for token in read_text])
இக்குறிமுறைவரிகளின் வெளியீடு பின்வருமாறு இருக்கும்:
[‘This’, ‘is’, ‘some’, ‘example’, ‘text’, ‘that’, ‘I’, ‘will’, ‘be’, ‘using’, ‘to’, ‘demonstrate’, ‘the’, ‘features’, ‘of’, ‘spacy’, ‘.’]
ஒரு கோப்பிலிருந்து உரையை நாம் பின்வரும் குறிமுறைகளைகொண்டு படிக்கலாம்:
#reading and tokenizing text from a file
file_name = ‘sample_text.txt’
sample_file = open(file_name).read()
read_text = myspacy(sample_file)
print([token.text for token in read_text])

சொற்றொடர்களை கண்டறிதல்
சொற்றொடர்களைக் கண்டறிவதே NLP நூலகங்களின் முக்கிய வசதியாகும். ஒரு சொற்றொடரின் தொடக்கத்தையும் முடிவையும் கண்டுபிடிப்பதன் மூலம், உரையை மொழியியல் ரீதியாக அர்த்தமுள்ள அலகுகளாக உடைக்கலாம், இது இயந்திர கற்றல் மாதிரிகளைப் பயன்படுத்துவதற்கு மிகவும் முக்கியமானதாகும். ஆங்கில இலக்கண அடிப்படையிலான குறிச்சொல்லிற்கும் பெயரிடப்பட்ட நிறுவன அங்கீகாரத்தின் பகுதிகளைப் பயன்படுத்துவதற்கும் இது உதவுகிறது. spaCy இல் சொற்றொடரை பிரித்தெடுப்பிற்குப் பயன்படுத்தக்கூடிய சொற்றொடரின் பண்பு உள்ளது.
#sentence detection
sample_passage = “This is an example of a passage. A passage contains many sentences. Sentences are denoted using the dot sign. It is important to detect sentences in nlp.”
read_text = myspacy(sample_passage)
sentences = list(read_text.sents)
for sentence in sentences:
print(sentence)
பின்வரும் வெளியீட்டில் நாம் காணக்கூடியது போன்று, மாதிரி_உரையை வெற்றிகரமாக சொற்றொடராக உடைத்துள்ளோம்.இது ஒரு பத்தியின் எடுத்துக்காட்டாகும.ஒரு பத்தியில் பல சொற்றொடர்கள் உள்ளன.
சொற்றொடர்கள் புள்ளி அடையாளத்தைப் பயன்படுத்தி குறிக்கப்படுகின்றன. NLP இல் சொற்றொடர்களைக் கண்டறிவது முக்கியமான செயலாகும்.
நிறுத்த சொற்களை நீக்குதல்
NLP இன் ஒரு முக்கியமான செயல்பாடு, நிறுத்த சொற்களை உரையிலிருந்து அகற்றுவதாகும். நிறுத்த சொற்கள் என்பது ஒரு மொழியில் பொதுவாக மீண்டும் மீண்டும் பயன்படுத்திகொள்ளப்படும் சொற்களாகும். ஆங்கிலத்தில், ‘are’, ‘they’, ‘and’, ‘is’, ‘the’, போன்ற சொற்கள் பொதுவான நிறுத்த சொற்களாகும். நிறுத்த சொற்களைப் பயன்படுத்தாமல் அர்த்தமுள்ள சொற்றொடர்களை நம்மால் உருவாக்க முடியாது. இருப்பினும், இயந்திரக் கற்றலுக்கு வரும்போது, நிறுத்த சொற்களை அதிர்வெண் எண்ணிக்கையை சிதைக்க முனைவதால் அவற்றை அகற்றுவது முக்கியம், இதனால் மாதிரியின் துல்லியத்தை பாதித்திடாமல் செய்திடலாம்.
SpaCyஆனது அதன் நூலகத்தில் ஆங்கிலத்திற்கான நிறுத்த சொற்களின் பட்டியலைக் கொண்டுள்ளது. துல்லியமாகச் சொல்வதென்றால், ஆங்கிலத்தில் 326 நிறுத்த சொற்கள் உள்ளன. SpaCy இன் is_stop எனும் பண்பியல்பை பயன்படுத்தி அவற்றை உரையிலிருந்து அகற்றலாம்
#removing stopwords
print([token.text for token in read_text if not token.is_stop])
After removing the stop words, the following will be the output of our sample text.
[‘example’, ‘passage’, ‘.’, ‘passage’, ‘contains’, ‘sentences’, ‘.’, ‘Sentences’, ‘denoted’, ‘dot’, ‘sign’, ‘.’, ‘important’, ‘detect’, ‘sentences’, ‘nlp’, ‘.’]
உரையில் Lemmatisationசெய்தல்
லெம்மடிசேஷன் என்பது ஒரு சொல்லின் அடிப்படையில் உருவாகிய வடிவங்களைக் குறைக்கும் செயல்முறையாகும். எடுத்துக்காட்டாக,‘characterisation’, ‘characteristic’ , ‘characterise’ ஆகிய அனைத்தும் ‘character’ என்ற செல்லின் அடிப்படையிலான உருவாகிய வடிவங்களாகும். இங்கு, ‘character’ என்பது Lemma அல்லது வேர்ச் சொல் ஆகும். உரையை இயல்பாக்குவதற்கு Lemmatisationசெய்தல் அவசியம்ஆகும். உரையை Lemmatis செய்ய SpaCy இல் உள்ள lemma_ propertyஎனும் பண்பை பயன்படுத்தி கொள்க.
#lemmatisation of text for word in read_text:
print(word, word.lemma_)
பின்வருவது ஒரு மாதிரி உரையின் சுறுசுறுப்பான வெளியீடாகும். இந்த சொல்லை அதன் Lemmatis செய்யப்பட்ட வடிவத்துடன் வெளியிடுக. பக்க இடத்தைப் பாதுகாக்க, மாதிரி உரையிலிருந்து ஒரு சொற்றொடரின் வெளியீடாகப் பகிரப்படுகின்றது.
Sentences sentence are be denoted denote using use the dot dot sign sign
. .
சொல் அதிர்வெண்ணைக் கண்டறிதல்
ஒரு இயந்திர கற்றல் மாதிரியைப் பயன்படுத்திடும்போது ஒவ்வொரு சொல்லும் ஒரு உரையில் நிகழும் அதிர்வெண் முக்கிய தகவலாக இருக்கலாம். இது ஒரு உரையில் கலந்துரையாடலின் முக்கிய தலைப்பைக் கண்டுபிடிக்க நமக்கு உதவுகிறது மேலும் தேடுபொறிகள் பயனாளர்களுக்கு பொருத்தமான தகவல்களை வழங்க உதவுகிறது. இந்த மாதிரி உரையில் சொற்களின் அதிர்வெண்ணைக் கண்டுபிடிக்க, சேகரிப்பு தொகுதியிலிருந்து எதிர் முறையை பதிவிறக்கம் செய்திடுக
#finding word frequency
from collections import Counter
word_frequency = Counter(read_text)
print(word_frequency)
மாதிரி உரையில் சொற்களின் அதிர்வெண்ணிற்கான வெளியீடு பின்வருமாறு:
Counter({This: 1, is: 1, an: 1, example: 1, of: 1, a: 1, passage: 1, .: 1, A: 1, passage: 1, contains: 1, many: 1, sentences: 1, .: 1, Sentences: 1, are: 1, denoted: 1, using: 1, the: 1, dot: 1, sign: 1, .: 1, It: 1, is: 1, important: 1, to: 1, detect: 1, sentences: 1, in: 1, nlp: 1, .: 1})
POSஎனும் குறிச்சொல்
ஆங்கில இலக்கணத்தின் அடிப்படையான (Parts of speech (POS)) எனும்குறிச்சொல் ஒரு சொற்றொடரை உடைப்பதற்கும் சொற்றொடருன் ஒவ்வொரு சொல்லும் என்ன பங்கு வகிக்கிறது என்பதைப் புரிந்துகொள்ளவும் உதவுகிறது. ஆங்கில மொழியின் அடிப்படைஇலக்கணத்தில் பெயர்ச்சொல்(noun), பிரதிபெயர்(pronoun), பெயரடை(adjective), வினைச்சொல்(verb), வினையுரிச்சொல்(adverb), முன்னடைச்சொல்(preposition), கூட்டிடைச்சொல்( conjunction) , ஆச்சரியவுரை(interjection ). ஆகிய எட்டு பகுதிகள் உள்ளன, ,
POS எனும் குறிச்சொல்லில், கொடுக்கப்பட்ட சொற்றொடரின் சூழலில் அந்த சொல் எந்தப் பகுதியைக் குறிக்கிறது என்பதை வரையறுக்கின்றது .ஒரு சொற்றொடரில் ஒவ்வொரு சொல்லிலும் ஒரு குறிச்சொல்லைப் பயன்படுத்திடுக. Spacy இல், இரண்டு பண்புகளைப் பயன்படுத்திடுக – posஎனும் குறிச்சொல்லானது கரடுமுரடான ஆங்கில இலக்கணத்தின் அடிப்படைகளையும் நேர்த்தியான ஆங்கில இலக்கணத்தின் அடிப்படைகளையும் கொடுக்கின்றது, . Spacy.explain () எனும் முறையானது கொடுக்கப்பட்ட குறிச்சொல்லின் விளக்கத்தை வழங்குகிறது.
#POS tagging
for word in read_text:
print(word, word.tag_, word.pos_, spacy.explain(word.pos_))
மாதிரி உரையின் POS எனும் குறிச்சொல்லின் வெளியீடு பின்வருமாறு அமைகின்றது. பக்கத்தைப் பாதுகாப்பதற்காக இங்கு வெளியீட்டின் ஒருபகுதி மட்டுமே வழங்கப்பட்டுள்ளது.
This DT DET determiner
is VBZ AUX auxiliary
an DT DET determiner
example NN NOUN noun
of IN ADP adposition
a DT DET determiner
passage NN NOUN noun
Visualising POS tagging using displaCy
SpaCy என்பது displaCy எனப்படும் உள்ளமைக்கப்பட்ட காட்சியாக்கங்களுடன் வருகிறது, இதைப் பயன்படுத்தி ஆங்கில இலக்கணத்தின் அடிப்படையான POS எனும் குறிச்சொல் , பெயரிடப்பட்ட நிறுவன அங்கீகாரம் (named entity recognition (NER)) ஆகியவற்றைசெயற்படுத்தலாம் மற்றும் காட்சிப்படுத்தலாம். மாதிரி உரைக்கு POS எனும் குறிச்சொல்லைக் காண, பின்வரும் குறிமுறைவரிகளை இயக்குக:
#using displacy for POS tag visualisation
from spacy import displacy
sample_text = “This is an example sentence.”
read_text = myspacy(sample_text)
displacy.serve(read_text, style=”dep”)
DisplaCy ஐப் பயன்படுத்தி NER ஐ காட்சிப்படுத்துதல்
பெயரிடப்பட்ட நிறுவன அங்கீகாரம் (NER) என்பது ஒரு உரையில் பெயரிடப்பட்ட நிறுவனங்களை அடையாளம் கண்டு, ஒரு நபரின் பெயர், இருப்பிடம், அமைப்பு, சதவீதம், நேரம் என்பன போன்ற ஒரு முன் வரையறுக்கப்பட்ட வகையுடன் அவற்றைக் குறிக்கும் செயல்முறையாகும். SpaCy க்கு ents எனும் பண்பியல்பு உள்ளது, உரையில் NER ஐப் பயன்படுத்த நாம் இந்த பண்பியில்பை பயன்படுத்தலாம். NER வெளியீட்டைக் காட்சிப்படுத்த dispCy ஐப் பயன்படுத்திடுக.
#using displacy for NER visualisation
sample_text = “Every year, Hyderabd hosts the biggest exhibition in India. It has fun rides and food stalls. At least a million people visit it every year.”
read_text = myspacy(sample_text)
displacy.serve(read_text, style=”ent”)
இந்த கட்டுரையில்,SpaCy மற்றும் அதன் உள்ளமைக்கப்பட்ட காட்சிபடுத்தப்படும் displaCy. ஆகியவற்றைப் பயன்படுத்தி என்எல்பிக்கு பொதுவாகப் பயன்படுத்தப்படும் அடிப்படை செயல்பாடுகள் குறித்து விவாதிக்கப்பட்டது. இந்த SpaCy எனும் நூலகத்தில் இன்னும் பல மேம்பட்ட வசதிகள் உள்ளன, அவை NLP. ஆக இருப்பினும், அந்த வசதிகள் இந்த கட்டுரையின் எல்லைக்கு அப்பாற்பட்டவை. எனவே, SpaCy நூலகத்தைப் பற்றி ஆழமாகப் புரிந்துகொள்ள spacy.io/   ,pypi.org/project/spacy/ ,realpython.com/natural-language-processing-spacy-python/  ஆகிய ஒருசில இணையதளங்கள் பரிந்துரைக்கப்படுகின்றது.

%d bloggers like this: