RegEx กับ spaCy

การประมวลผลภาษาธรรมชาติด้วย spaCy

Azadeh Mobasher

Principal Data Scientist

RegEx คืออะไร?

 

  • การดึงข้อมูลแบบใช้กฎ (IR) มีประโยชน์ในงาน NLP หลายประเภท
  • Regular expression (RegEx) ใช้สำหรับจับคู่สตริงที่ซับซ้อน
  • RegEx ค้นหา และ ดึง รูปแบบ หรือแทนที่รูปแบบที่ตรงกัน

RegEx: การดึงข้อมูลลิงก์และเบอร์โทรศัพท์

การประมวลผลภาษาธรรมชาติด้วย spaCy

จุดแข็งและจุดอ่อนของ RegEx

ข้อดี:

  • เขียนกฎที่แข็งแกร่งเพื่อดึงข้อมูลได้
  • รองรับความหลากหลายของสตริงได้หลายรูปแบบ
  • ทำงานได้เร็ว
  • รองรับโดยภาษาโปรแกรมมิงทั่วไป

ข้อเสีย:

  • ไวยากรณ์ค่อนข้างยากสำหรับผู้เริ่มต้น
  • ต้องทราบรูปแบบทั้งหมดที่อาจปรากฏในข้อความ
การประมวลผลภาษาธรรมชาติด้วย spaCy

RegEx ใน Python

 

  • Python มีไลบรารี RegEx ชื่อ 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

RegEx ใน Python

 

  • ใช้เมธอด .finditer() จากแพ็กเกจ re
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

RegEx ใน spaCy

  • RegEx ใน pipeline 3 ส่วน ได้แก่ 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

มาฝึกกันเถอะ!

การประมวลผลภาษาธรรมชาติด้วย spaCy

Preparing Video For Download...