কম্পিউটার টিউটোরিয়াল

পাইথন - spaCy দিয়ে PoS ট্যাগিং এবং লেমাটাইজেশন

spaCy একটি আধুনিক, দ্রুত এবং প্রোডাকশন-রেডি NLP লাইব্রেরি। এটি বড় স্কেলের ইনফরমেশন এক্সট্র্যাকশন, পาร์্ট-অফ-স্পিচ (PoS) ট্যাগিং, লেমাটাইজেশন, নেমড এন্টিটি রিকগনিশন (NER) এবং ডিপ লার্নিং-এর জন্য টেক্সট প্রিপ্রসেসিং-এ ব্যাপকভাবে ব্যবহৃত হয়।

ইনস্টলেশন

pip install spacy
python -m spacy download en_core_web_sm  # ইংরেজি স্মল মডেল

উদাহরণ: PoS ট্যাগিং

import spacy

# মডেল লোড
nlp = spacy.load("en_core_web_sm")

# টেক্সট প্রসেস
text = """My name is Vishesh. I love to work on data science problems. 
Please check out my github profile!"""
doc = nlp(text)

# টোকেন এবং PoS ট্যাগ প্রিন্ট
print("Token -> PoS Tag")
for token in doc:
    print(f"{token.text:<15} {token.pos_}")

# শুধু Verb টোকেনগুলো ফিল্টার
verbs = [token.text for token in doc if token.pos_ == "VERB"]
print("\nVerbs:", verbs)

আউটপুট (আংশিক)

Token -> PoS Tag
My              PRON
name            NOUN
is              AUX
Vishesh         PROPN
.               PUNCT
I               PRON
love            VERB
to              PART
work            VERB
on              ADP
data            NOUN
science         NOUN
problems        NOUN
.               PUNCT
Please          VERB
check           VERB
out             ADP
my              PRON
github          PROPN
profile         NOUN
!               PUNCT

Verbs: ['love', 'work', 'Please', 'check']

উদাহরণ: লেমাটাইজেশন (Lemmatization)

লেমাটাইজেশন হলো শব্দের রূপান্তরকে এর মূল/ডিকশনারি রূপে (লেমা) ফেরত দেয়া। উদাহরণ: running → run, better → good, mice → mouse। স্টেমিং (stemming) এর চেয়ে এটি আরও নির্ভুল কারণ এটি কনটেক্সট এবং PoS বিবেচনা করে।

import spacy
nlp = spacy.load("en_core_web_sm")

text = """My name is Vishesh. I love to work on data science problems. 
Please check out my github profile!"""
doc = nlp(text)

print("Token -> Lemma")
for token in doc:
    print(f"{token.text:<15} {token.lemma_}")

আউটপুট (আংশিক)

Token -> Lemma
My              my
name            name
is              be
Vishesh         Vishesh
.               .
I               I
love            love
to              to
work            work
on              on
data            data
science         science
problem         problem
.               .
please          please
check           check
out             out
my              my
github          github
profile         profile
!               !

spaCy vs NLTK vs TextBlob

ফিচারspaCyNLTKTextBlob
গতি★★★★★ (Cython-অপ্টিমাইজড)★★☆☆☆★★★☆☆
সঠিকতা★★★★★★★★★☆★★★☆☆
API ডিজাইনআধুনিক, অবজেক্ট-ওরিয়েন্টেডক্লাসিক, ফাংশনালসিম্পল, বিগিনার-ফ্রেন্ডলি
ডিপ লার্নিং ইন্টিগ্রেশনসহজ (Transformers পাইপলাইন)জটিলসীমিত
মডেল আকারsm/md/lg/trfবিভিন্ন প্যাকেজএকটি মডেল

প্রো টিপস

  • token.lemma_ লেমা দেয়, token.lemma (আন্ডারস্কোর ছাড়া) হ্যাশ ভ্যালু দেয়।
  • token.pos_ কর্স-grained PoS (NOUN, VERB), token.tag_ ফাইন-grained (NN, VBZ, JJ) দেয়।
  • বড় টেক্সটের জন্য nlp.pipe(texts, batch_size=1000) ব্যবহার করুন (পারালেল প্রসেসিং)।
  • কাস্টম কম্পোনেন্ট যোগ করতে nlp.add_pipe() ব্যবহার করুন।
  1. পাইথন এবং Scrapy দিয়ে ওয়েব স্ক্রেপিং

  2. পাইথনে OpenCV ব্যবহার করে ইমেজ অ্যাডিশন ও ব্লেন্ডিং

  3. পাইথনে cx_Freeze ব্যবহার করে এক্সিকিউটেবল বানানো

  4. Mac-এ Python 3 আপগ্রেড ও ব্যবহার করা