ஞாயிறு, 25 ஜூலை, 2021

வடிவப் பொருத்தம் (Pattern Matching)

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

தனிப்பட்ட வகைப்படுத்தங்(டோக்கன்)களுடன் பொருந்த, நீங்கள் ஒரு வடிவப் பொருத்தத்தை உருவாக்குகிறீர்கள். நீங்கள் சொற்களின் பட்டியலைப் பொருத்த விரும்பினால், சொற்றொடர் பொருத்தத்தைப் (Phrase Matcher) பயன்படுத்துவது எளிதானதும் சிறந்ததும் ஆகும். எடுத்துக்காட்டாக, வெவ்வேறு உரையில் வெவ்வேறு திறன்பேசி மாதிரிகள் எங்குக் காண்பிக்கப்படுகின்றன என்பதை நீங்கள் கண்டுபிடிக்க விரும்பினால், நீங்கள் ஆர்வமுள்ள மாதிரி பெயர்களுக்கான வடிவங்களை உருவாக்கலாம். முதலில் நீங்கள் சொற்றொடர் பொருத்தக் (Phrase Matcher) கருவியை உருவாக்குகிறீர்கள்.

In [5]:
from spacy.matcher import PhraseMatcher
matcher = PhraseMatcher(nlp.vocab, attr='LOWER')

உங்கள் மாதிரியின் சொற்களஞ்சியத்தைப் பயன்படுத்தி பொருத்த அமைப்பு உருவாக்கப்பட்டது. நீங்கள் முன்பு ஏற்றப்பட்ட சிறிய ஆங்கில மாதிரியை இங்கே பயன்படுத்தலாம். Attr = 'LOWER' அமைப்பது சிறிய எழுத்துக்களில் உள்ள சொற்றொடர்களுடன் பொருந்தும். இது வழக்கு உணர்வற்ற பொருத்தத்தை வழங்குகிறது.

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

In [6]:
terms = ['Galaxy Note', 'iPhone 11', 'iPhone XS', 'Google Pixel']
patterns = [nlp(text) for text in terms]
matcher.add("TerminologyList", patterns)

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

In [7]:
# Borrowed from https://daringfireball.net/linked/2019/09/21/patel-11-pro
text_doc = nlp("Glowing review overall, and some really interesting side-by-side "
               "photography tests pitting the iPhone 11 Pro against the "
               "Galaxy Note 10 Plus and last year’s iPhone XS and Google Pixel 3.") 
matches = matcher(text_doc)
print(matches)
[(3766102292120407359, 17, 19), (3766102292120407359, 22, 24), (3766102292120407359, 30, 32), (3766102292120407359, 33, 35)]

இங்குள்ள போட்டிகள் பொருத்த அமைப்பு ஐடியின் ஒரு துப்பு,  சொற்றொடரின் தொடக்கம் மற்றும் முடிவின் நிலைகள்.

In [8]:
match_id, start, end = matches[0]
print(nlp.vocab.strings[match_id], text_doc[start:end])

(குறிப்பு - இந்த இயற்கை மொழிச் செயலாக்கத்தின் கருத்துக்கள் https://www.kaggle.com/matleonard/intro-to-nlp இந்தத் தளத்திலிருந்து மொழிபெயர்ப்பாக இங்குத் தரப்பெற்றுள்ளது. எனவே ககிள் நிறுவனத்தார்க்கு நன்றி.)

கருத்துகள் இல்லை:

கருத்துரையிடுக

உங்கள் கருத்துகள் வரவேற்கப்படுகின்றன