RegEx với spaCy

Xử lý ngôn ngữ tự nhiên với spaCy

Azadeh Mobasher

Principal Data Scientist

RegEx là gì?

 

  • Trích xuất thông tin dựa trên luật (IR) hữu ích cho nhiều tác vụ NLP
  • Biểu thức chính quy (RegEx) dùng cho các mẫu khớp chuỗi phức tạp
  • RegEx tìmthu hồi mẫu hoặc thay thế mẫu khớp

RegEx: trích xuất liên kết và số điện thoại

Xử lý ngôn ngữ tự nhiên với spaCy

Điểm mạnh và yếu của RegEx

Ưu điểm:

  • Cho phép viết luật vững để truy xuất thông tin
  • Tìm được nhiều biến thể trong chuỗi
  • Chạy nhanh
  • Được hầu hết ngôn ngữ lập trình hỗ trợ

Nhược điểm:

  • Cú pháp khó cho người mới
  • Cần biết mọi cách mẫu có thể xuất hiện trong văn bản
Xử lý ngôn ngữ tự nhiên với spaCy

RegEx trong Python

 

  • Python đi kèm thư viện RegEx, re.
  • Bước đầu khi dùng gói re là định nghĩa pattern.
  • Dùng pattern để tìm nội dung khớp.

 

import re

pattern = r"((\d){3}-(\d){3}-(\d){4})"
text = "Our phone number is 832-123-5555 and their phone number is 425-123-4567."
Xử lý ngôn ngữ tự nhiên với spaCy

RegEx trong Python

 

  • Dùng phương thức .finditer() từ gói re
iter_matches = re.finditer(pattern, text)

for match in iter_matches: start_char = match.start() end_char = match.end()
print ("Start character: ", start_char, "| End character: ", end_char, "| Matching text: ", text[start_char:end_char])
>>> Start character:  20 | End character:  32 | Matching text:  832-123-5555
Start character:  59 | End character:  71 | Matching text:  425-123-4567
Xử lý ngôn ngữ tự nhiên với spaCy

RegEx trong spaCy

  • RegEx trong ba thành phần pipeline: Matcher, PhraseMatcherEntityRuler.
text = "Our phone number is 832-123-5555 and their phone number is 425-123-4567."

nlp = spacy.blank("en") patterns = [{"label": "PHONE_NUMBER", "pattern": [{"SHAPE": "ddd"}, {"ORTH": "-"}, {"SHAPE": "ddd"}, {"ORTH": "-"}, {"SHAPE": "dddd"}]}]
ruler = nlp.add_pipe("entity_ruler") ruler.add_patterns(patterns) doc = nlp(text) print ([(ent.text, ent.label_) for ent in doc.ents])
>>> [('832-123-5555', 'PHONE_NUMBER'), ('425-123-4567', 'PHONE_NUMBER')]
Xử lý ngôn ngữ tự nhiên với spaCy

Ayo berlatih!

Xử lý ngôn ngữ tự nhiên với spaCy

Preparing Video For Download...