RegEx กับ EntityRuler ใน spaCy
Regular expressions หรือ RegEx ใช้สำหรับดึงข้อมูลแบบอิงกฎเกณฑ์ด้วยรูปแบบการจับคู่สตริงที่ซับซ้อน RegEx ช่วยให้ค้นหา pattern หรือแทนที่ pattern ที่ตรงกันในสตริงด้วย pattern อื่นได้ ในแบบฝึกหัดนี้ จะได้ฝึกใช้ EntityRuler ใน spaCy เพื่อค้นหาที่อยู่อีเมลในตัวแปร text ที่กำหนดให้
นำเข้าแพ็กเกจ spaCy ไว้ให้แล้ว สามารถใช้ \d เพื่อจับคู่รูปแบบสตริงที่แทน metacharacter ซึ่งตรงกับตัวเลขใดก็ได้ตั้งแต่ 0 ถึง 9
pattern ของ spaCy สามารถใช้ REGEX เป็น attribute ได้ ในกรณีนี้ pattern จะมีรูปแบบเป็น [{"TEXT": {"REGEX": "<a given pattern>"}}]
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การประมวลผลภาษาธรรมชาติด้วย spaCy
คำแนะนำการฝึกหัด
- กำหนด pattern สำหรับจับคู่หมายเลขโทรศัพท์ในรูปแบบ
8888888888เพื่อใช้กับEntityRuler - โหลดโมเดลภาษาอังกฤษของ
spaCyแบบ blank แล้วเพิ่มEntityRulercomponent เข้าไปใน pipeline - เพิ่ม pattern ที่กำหนดไว้ลงใน
EntityRulercomponent - รันโมเดลและพิมพ์ tuple ของข้อความและประเภทของ entity สำหรับตัวแปร
textที่กำหนดให้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
text = "Our phone number is 4251234567."
# Define a pattern to match phone numbers
patterns = [{"label": "PHONE_NUMBERS", "pattern": [{"TEXT": {"REGEX": "(____){____}"}}]}]
# Load a blank model and add an EntityRuler
nlp = spacy.____("en")
ruler = nlp.____("entity_ruler")
# Add the compiled patterns to the EntityRuler
ruler.____(patterns)
# Print the tuple of entities texts and types for the given text
doc = ____(____)
print([(ent.____, ent.____) for ent in doc.____])