PhraseMatcher trong spaCy
Khi xử lý văn bản phi cấu trúc, bạn thường có các danh sách và từ điển dài cần quét và đối sánh trong đoạn văn bản cho trước. Các pattern của Matcher được tạo thủ công và mỗi token cần được mã hóa riêng lẻ. Nếu bạn có một danh sách cụm từ dài, Matcher không còn là lựa chọn tốt nhất. Khi đó, lớp PhraseMatcher giúp bạn đối sánh các từ điển dài. Trong bài tập này, bạn sẽ luyện tập truy xuất các pattern có cùng hình dạng với nhiều thuật ngữ bằng cách dùng lớp PhraseMatcher.
Mô hình en_core_web_sm đã được nạp sẵn và sẵn sàng sử dụng dưới tên nlp. Lớp PhraseMatcher đã được import. Một chuỗi text và một danh sách terms đã được chuẩn bị để bạn sử dụng.
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
- Khởi tạo lớp
PhraseMatchervới mộtattrđể khớp theo hình dạng (shape) của cáctermsđã cho. - Tạo
patternsđể thêm vào đối tượngPhraseMatcher. - Tìm các khớp với những pattern đã cho và in ra chỉ số token bắt đầu và kết thúc, cùng đoạn văn bản khớp trong
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 = "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)