spaCy ile RegEx

spaCy ile Natural Language Processing

Azadeh Mobasher

Principal Data Scientist

RegEx nedir?

 

  • Birçok NLP görevi için kural tabanlı bilgi çıkarımı (IR) yararlıdır
  • Düzenli ifadeler (RegEx), karmaşık dize eşleştirme kalıplarında kullanılır
  • RegEx, kalıpları bulur ve çıkarır ya da eşleşenleri değiştirir

RegEx: bağlantı ve telefon bilgisi çıkarımı

spaCy ile Natural Language Processing

RegEx'in güçlü ve zayıf yanları

Artılar:

  • Bilgi çıkarmak için sağlam kurallar yazmayı sağlar
  • Dizelerdeki pek çok varyansı bulmamıza olanak tanır
  • Hızlı çalışır
  • Programlama dilleri tarafından desteklenir

Eksiler:

  • Başlangıç için sözdizimi zorludur
  • Bir kalıbın metinde geçebileceği tüm biçimleri bilmeyi gerektirir
spaCy ile Natural Language Processing

Python'da RegEx

 

  • Python, re adlı bir RegEx kitaplığıyla gelir.
  • re paketini kullanmanın ilk adımı bir pattern tanımlamaktır.
  • Oluşan kalıp, eşleşen içeriği bulmak için kullanılır.

 

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 ile Natural Language Processing

Python'da RegEx

 

  • re paketinden .finditer() yöntemini kullanırız
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 ile Natural Language Processing

spaCy'de RegEx

  • Üç boru hattı bileşeninde RegEx: Matcher, PhraseMatcher ve 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 ile Natural Language Processing

Hadi pratik yapalım!

spaCy ile Natural Language Processing

Preparing Video For Download...