RegEx với EntityRuler trong spaCy
Regular expressions (RegEx) được dùng cho trích xuất thông tin dựa trên luật với các mẫu khớp chuỗi phức tạp. RegEx có thể được dùng để truy xuất các mẫu hoặc thay thế các mẫu khớp trong một chuỗi bằng các mẫu khác. Trong bài tập này, bạn sẽ luyện tập dùng EntityRuler trong spaCy để tìm địa chỉ email trong text đã cho.
Gói spaCy đã được nhập sẵn để bạn sử dụng. Bạn có thể dùng \d để khớp các mẫu chuỗi biểu diễn một metacharacter khớp bất kỳ chữ số nào từ 0 đến 9.
Một mẫu spaCy có thể dùng REGEX làm thuộc tính. Trong trường hợp này, một mẫu sẽ có dạng [{"TEXT": {"REGEX": "<a given pattern>"}}].
Bài tập này là một phần của khóa học
Xử lý ngôn ngữ tự nhiên với spaCy
Hướng dẫn bài tập
- Định nghĩa một mẫu để khớp số điện thoại dạng
8888888888dùng choEntityRuler. - Tải một mô hình tiếng Anh trống của
spaCyvà thêm một thành phầnEntityRulervào pipeline. - Thêm mẫu đã biên soạn vào thành phần
EntityRuler. - Chạy mô hình và in ra bộ tuple gồm văn bản và kiểu của các thực thể cho
textđã cho.
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.
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.____])