การสร้างชื่อเฉพาะ (named entity) แบบกำหนดเองใน spaCy
หากชื่อเฉพาะ (named entities) ที่มีอยู่ในตัวของ spaCy ยังไม่เพียงพอ คุณสามารถสร้างชื่อเฉพาะของตัวเองได้โดยใช้คอมโพเนนต์ entity_ruler ของ spaCy
คอมโพเนนต์ entity_ruler ช่วยให้คุณสร้างเอนทิตีของตัวเองและเพิ่มเข้าไปใน pipeline ของ spaCy ได้
เริ่มต้นด้วยการเพิ่มคอมโพเนนต์นี้เข้าไปใน pipeline ที่มีอยู่ด้วย nlp.add_pipe() โดยวางไว้ before คอมโพเนนต์ "ner" เพื่อให้กฎของคุณถูกนำไปใช้ก่อน add_pipe() จะคืนค่าคอมโพเนนต์ที่เพิ่มเข้าไป
จากนั้นสามารถเรียก add_patterns() บนคอมโพเนนต์นี้ และส่งดิกชันนารีของ pattern ข้อความที่ต้องการติดป้ายด้วยเอนทิตี
เนื่องจาก Acme เป็นบริษัทเทคโนโลยี คุณจึงตัดสินใจติดป้ายรูปแบบ "smartphone" ด้วยแท็กเอนทิตี "PRODUCT"
มีการนำเข้า spaCy แล้ว และ nlp เก็บโมเดล en_core_web_sm ที่โหลดไว้แล้ว เนื่องจากการเปลี่ยนแปลง pipeline ไม่มีผลต่อ doc ที่มีอยู่ก่อนแล้ว คุณจะต้องสร้าง doc ใหม่จากข้อความที่ถอดเสียงของ call_4_channel_2.wav file อีกครั้งหลังจากเพิ่มคอมโพเนนต์ใหม่เรียบร้อยแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Spoken Language Processing ด้วย Python
คำแนะนำการฝึกหัด
- เพิ่มคอมโพเนนต์
"entity_ruler"เข้าไปใน pipeline ของnlpโดยวางไว้ก่อนคอมโพเนนต์"ner"แล้วบันทึกไว้ในตัวแปรruler - เพิ่ม
"smartphone"เป็นค่าของคีย์"pattern" - พิมพ์แอตทริบิวต์ของเอนทิตีที่อยู่ใน
doc
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Add an entity_ruler component to the pipeline, before ner
ruler = nlp.add_pipe(____, before=____)
# Define pattern for new entity
ruler.add_patterns([{"label": "PRODUCT", "pattern": ____}])
# Recreate the doc so it uses the updated pipeline
doc = nlp(call_4_channel_2_text)
# Test new entity
for entity in doc.____:
print(entity.text, entity.label_)