Tạo thực thể có tên tùy chỉnh trong spaCy
Nếu các thực thể có tên tích hợp sẵn của spaCy là chưa đủ, bạn có thể tự tạo bằng thành phần pipeline entity_ruler của spaCy.
Thành phần entity_ruler cho phép bạn tạo các thực thể của riêng mình và thêm chúng vào một pipeline của spaCy.
Bạn bắt đầu bằng cách thêm thành phần này vào pipeline hiện có với nlp.add_pipe(), đặt nó before thành phần "ner" để các quy tắc của bạn được áp dụng trước. add_pipe() trả về chính thành phần vừa được thêm.
Sau đó, bạn có thể gọi add_patterns() trên thành phần này và truyền vào một từ điển chứa pattern văn bản mà bạn muốn gán nhãn thực thể.
Vì Acme là một công ty công nghệ, bạn quyết định gắn nhãn mẫu "smartphone" với thẻ thực thể "PRODUCT".
spaCy đã được import và nlp đang nạp sẵn mô hình en_core_web_sm. Vì thay đổi pipeline sẽ không ảnh hưởng đến các doc đã tồn tại, bạn sẽ tạo lại doc từ văn bản đã chuyển âm của tệp call_4_channel_2.wav file sau khi thành phần mới đã sẵn sàng.
Bài tập này là một phần của khóa học
Xử lý Ngôn ngữ Nói bằng Python
Hướng dẫn bài tập
- Thêm thành phần
"entity_ruler"vào pipelinenlp, trước thành phần"ner", và gán vàoruler. - Thêm
"smartphone"làm giá trị cho khóa"pattern". - In ra các thuộc tính của thực thể có trong
doc.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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_)