เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

PhraseMatcher ใน spaCy

เมื่อต้องประมวลผลข้อความที่ไม่มีโครงสร้าง มักจะมีรายการและพจนานุกรมขนาดใหญ่ที่ต้องการสแกนและจับคู่กับข้อความที่กำหนด patterns ของ Matcher นั้นสร้างขึ้นด้วยมือ และต้องเขียนโค้ดแต่ละ token แยกกัน หากมีรายการวลียาว ๆ Matcher ก็ไม่ใช่ตัวเลือกที่ดีที่สุดอีกต่อไป ในกรณีนี้ คลาส PhraseMatcher จะช่วยจับคู่กับพจนานุกรมขนาดใหญ่ได้อย่างมีประสิทธิภาพ

ในแบบฝึกหัดนี้ จะฝึกดึง patterns ที่มี shape ตรงกับหลายคำโดยใช้คลาส PhraseMatcher

โมเดล en_core_web_sm โหลดไว้แล้วและพร้อมใช้งานในชื่อ nlp คลาส PhraseMatcher ถูก import มาแล้ว และมีสตริง text กับรายการ terms พร้อมให้ใช้งาน

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

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

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้างออบเจ็กต์จากคลาส PhraseMatcher โดยระบุอาร์กิวเมนต์ attr ให้ตรงกับ shape ของ terms ที่กำหนด
  • สร้าง patterns เพื่อเพิ่มเข้าไปในออบเจ็กต์ PhraseMatcher
  • ค้นหาคำที่ตรงกับ patterns ที่กำหนด แล้วแสดง index ของ token เริ่มต้นและสิ้นสุด พร้อมกับส่วนของ text ที่จับคู่ได้

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

text = "There are only a few acceptable IP addresse: (1) 127.100.0.1, (2) 123.4.1.0."
terms = ["110.0.0.0", "101.243.0.0"]

# Initialize a PhraseMatcher class to match to shapes of given terms
matcher = ____(nlp.____, attr = ____)

# Create patterns to add to the PhraseMatcher object
patterns = [nlp.make_doc(____) for term in terms]
matcher.____("IPAddresses", patterns)

# Find matches to the given patterns and print start and end characters and matches texts
doc = ____
matches = ____
for match_id, start, end in matches:
    print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)
แก้ไขและรันโค้ด