SpaCy का परिचय
SpaCy एक उन्नत प्राकृतिक भाषा प्रसंस्करण (Natural Language Processing, NLP) लाइब्रेरी है, जिसे विशेष रूप से प्रोडक्शन उपयोग के लिए डिज़ाइन किया गया है। Explosion AI टीम द्वारा विकसित, यह लाइब्रेरी अपनी उच्च प्रदर्शन, सटीकता और उपयोग में आसानी के कारण औद्योगिक NLP समाधानों के लिए डी-फैक्टो मानक बन गई है।
SpaCy के मुख्य लाभ
आर्किटेक्चर और प्रदर्शन
SpaCy Cython प्रोग्रामिंग भाषा पर बनी है, जो टेक्स्ट डेटा प्रोसेसिंग में असाधारण गति प्रदान करती है। लाइब्रेरी ऑप्टिमाइज़्ड एल्गोरिदम और डेटा स्ट्रक्चर का उपयोग करती है, जो मानक हार्डवेयर पर प्रति मिनट लाखों टोकन प्रोसेस करने में सक्षम है।
बहुभाषी समर्थन
लाइब्रेरी 20 से अधिक भाषाओं का समर्थन करती है, जिसमें हिंदी, अंग्रेज़ी, चीनी, जापानी, अरबी और कई अन्य शामिल हैं। प्रत्येक भाषा के लिए विशेष प्री-ट्रेंड मॉडल उपलब्ध हैं, जो विशिष्ट भाषाई विशेषताओं के लिए ऑप्टिमाइज़ किए गए हैं।
रेडी-टू-यूज़ मॉडल
SpaCy विभिन्न आकारों (small, medium, large) के प्री-ट्रेंड मॉडल प्रदान करता है, जिससे आप अपने कार्य के लिए गति और सटीकता के बीच सर्वोत्तम संतुलन चुन सकते हैं।
SpaCy की स्थापना और कॉन्फ़िगरेशन
बेसिक लाइब्रेरी इंस्टॉल करना
pip install spacy
भाषा मॉडल डाउनलोड करना
अंग्रेज़ी के लिए:
python -m spacy download en_core_web_sm
python -m spacy download en_core_web_md
python -m spacy download en_core_web_lg
हिंदी के लिए:
python -m spacy download xx_ent_wiki_sm
python -m spacy download xx_sent_ud_sm
कनेक्ट और इनिशियलाइज़ करना
import spacy
# मॉडल लोड करें
nlp = spacy.load("en_core_web_sm")
# टेक्स्ट प्रोसेस करें
doc = nlp("Apple is looking at buying a startup in the UK.")
SpaCy पाइपलाइन के मुख्य घटक
टोकनाइज़ेशन
SpaCy स्वचालित रूप से टेक्स्ट को टोकन में विभाजित करता है, भाषा की विशेषताओं, विराम चिह्नों और विशेष वर्णों को ध्यान में रखते हुए:
doc = nlp("Don't worry, it's working!")
for token in doc:
print(token.text, token.is_alpha, token.is_punct, token.like_num)
मॉर्फोलॉजिकल विश्लेषण
प्रत्येक टोकन में समृद्ध मॉर्फोलॉजिकल जानकारी होती है:
for token in doc:
print(f"शब्द: {token.text}")
print(f"लेम्मा: {token.lemma_}")
print(f"शब्द भेद: {token.pos_}")
print(f"टैग: {token.tag_}")
print(f"मॉर्फोलॉजिकल विशेषताएँ: {token.morph}")
सिंटैक्स विश्लेषण
SpaCy प्रत्येक वाक्य के लिए डिपेंडेंसी ट्री बनाता है:
for token in doc:
print(f"{token.text} <- {token.dep_} <- {token.head.text}")
print(f"चिल्ड्रन: {[child.text for child in token.children]}")
लेम्माटाइज़ेशन और स्टेमिंग
SpaCy में लेम्माटाइज़ेशन
SpaCy बॉक्स से बाहर उच्च गुणवत्ता वाला लेम्माटाइज़ेशन प्रदान करता है:
doc = nlp("The cats are running and jumping")
for token in doc:
print(f"{token.text} -> {token.lemma_}")
स्टेमिंग के विकल्प
हालाँकि SpaCy सीधे स्टेमिंग शामिल नहीं करता, आप इसे अन्य लाइब्रेरीज़ के साथ एकीकृत कर सकते हैं:
from nltk.stem import PorterStemmer
stemmer = PorterStemmer()
def add_stemming(doc):
for token in doc:
token._.stem = stemmer.stem(token.text)
return doc
# कस्टम एट्रीब्यूट के रूप में जोड़ें
spacy.tokens.Token.set_extension("stem", default=None)
शब्द भेद पहचान
यूनिवर्सल POS टैग
SpaCy यूनिवर्सल POS टैग सिस्टम का उपयोग करता है