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
| ফিচার | spaCy | NLTK | TextBlob |
|---|---|---|---|
| গতি | ★★★★★ (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()ব্যবহার করুন।