spaCy के साथ RegEx

spaCy के साथ Natural Language Processing

Azadeh Mobasher

Principal Data Scientist

RegEx क्या है?

 

  • कई NLP कार्यों के लिए नियम-आधारित सूचना निष्कर्षण उपयोगी है
  • जटिल स्ट्रिंग मैचिंग पैटर्न के लिए Regular expression (RegEx) का उपयोग होता है
  • RegEx पैटर्न को ढूँढता और निकालता है या मिलते पैटर्न को बदलता है

RegEx: लिंक और फ़ोन सूचना निष्कर्षण

spaCy के साथ Natural Language Processing

RegEx की खूबियाँ और सीमाएँ

फायदे:

  • जानकारी निकालने के लिए मज़बूत नियम लिखने देता है
  • स्ट्रिंग्स में कई तरह के वेरिएशन ढूँढने देता है
  • तेज़ चलता है
  • ज़्यादातर प्रोग्रामिंग भाषाओं द्वारा समर्थित

कमियाँ:

  • शुरुआती के लिए सिंटैक्स चुनौतीपूर्ण
  • पैटर्न टेक्स्ट में किन-किन तरीकों से आ सकता है, यह जानना पड़ता है
spaCy के साथ Natural Language Processing

Python में RegEx

 

  • Python में RegEx लाइब्रेरी re पहले से आती है.
  • re पैकेज का पहला कदम एक pattern तय करना है।
  • फिर उसी pattern से मैचिंग कंटेंट ढूँढते हैं।

 

import re

pattern = r"((\d){3}-(\d){3}-(\d){4})"
text = "Our phone number is 832-123-5555 and their phone number is 425-123-4567."
spaCy के साथ Natural Language Processing

Python में RegEx

 

  • हम re पैकेज का .finditer() मेथड इस्तेमाल करते हैं
iter_matches = re.finditer(pattern, text)

for match in iter_matches: start_char = match.start() end_char = match.end()
print ("Start character: ", start_char, "| End character: ", end_char, "| Matching text: ", text[start_char:end_char])
>>> Start character:  20 | End character:  32 | Matching text:  832-123-5555
Start character:  59 | End character:  71 | Matching text:  425-123-4567
spaCy के साथ Natural Language Processing

spaCy में RegEx

  • spaCy में RegEx तीन पाइपलाइन कंपोनेंट्स में: Matcher, PhraseMatcher और EntityRuler.
text = "Our phone number is 832-123-5555 and their phone number is 425-123-4567."

nlp = spacy.blank("en") patterns = [{"label": "PHONE_NUMBER", "pattern": [{"SHAPE": "ddd"}, {"ORTH": "-"}, {"SHAPE": "ddd"}, {"ORTH": "-"}, {"SHAPE": "dddd"}]}]
ruler = nlp.add_pipe("entity_ruler") ruler.add_patterns(patterns) doc = nlp(text) print ([(ent.text, ent.label_) for ent in doc.ents])
>>> [('832-123-5555', 'PHONE_NUMBER'), ('425-123-4567', 'PHONE_NUMBER')]
spaCy के साथ Natural Language Processing

अभ्यास करते हैं!

spaCy के साथ Natural Language Processing

Preparing Video For Download...