Nhận dạng thực thể có tên trên văn bản đã chuyển giọng nói thành văn bản

Xử lý Ngôn ngữ Nói bằng Python

Daniel Bourke

Machine Learning Engineer/YouTube Creator

Cài đặt spaCy

# Cài đặt spaCy
$ pip install spacy
# Tải mô hình ngôn ngữ spaCy
$ python -m spacy download en_core_web_sm
Xử lý Ngôn ngữ Nói bằng Python

Sử dụng spaCy

import spacy

# Tải mô hình ngôn ngữ spaCy nlp = spacy.load("en_core_web_sm")
# Tạo một doc của spaCy
text = ("I'd like to talk about a smartphone I ordered on July 31st "
        "from your Sydney store, my order number is 4093829. I spoke "
        "to one of your customer service team, Georgia, yesterday.")
doc = nlp(text)
Xử lý Ngôn ngữ Nói bằng Python

Token trong spaCy

# Hiển thị các token và vị trí
for token in doc:
  print(token.text, token.idx)
I 0
'd 1
like 4
to 9
talk 12
about 17
a 23
smartphone 25...
Xử lý Ngôn ngữ Nói bằng Python

Câu trong spaCy

# Hiển thị các câu trong doc
for sentence in doc.sents:
  print(sentence)
I'd like to talk about a smartphone I ordered on July 31st from your Sydney store, 
my order number is 4093829.
I spoke to one of your customer service team, Georgia, yesterday.
Xử lý Ngôn ngữ Nói bằng Python

Thực thể có tên trong spaCy

Một số thực thể có tên dựng sẵn của spaCy:

  • PERSON Con người, kể cả hư cấu.
  • ORG Công ty, cơ quan, tổ chức, v.v.
  • GPE Quốc gia, thành phố, bang/tỉnh.
  • PRODUCT Vật thể, phương tiện, thực phẩm, v.v. (Không bao gồm dịch vụ.)
  • DATE Ngày hoặc giai đoạn tuyệt đối/tương đối.
  • TIME Thời điểm nhỏ hơn một ngày.
  • MONEY Giá trị tiền tệ, gồm đơn vị.
  • CARDINAL Số đếm không thuộc loại khác.
Xử lý Ngôn ngữ Nói bằng Python

Thực thể có tên trong spaCy

# Tìm thực thể có tên trong doc
for entity in doc.ents:
  print(entity.text, entity.label_)
July 31st DATE
Sydney GPE
4093829 CARDINAL
one CARDINAL
Georgia GPE
yesterday DATE
Xử lý Ngôn ngữ Nói bằng Python

Tùy chỉnh thực thể có tên

# Kiểm tra pipeline của spaCy
print(nlp.pipe_names)
['tok2vec', 'tagger', 'parser',
 'attribute_ruler', 'lemmatizer', 'ner']
Xử lý Ngôn ngữ Nói bằng Python

Thay đổi pipeline

# Thêm entity_ruler vào pipeline, trước ner
ruler = nlp.add_pipe("entity_ruler", before="ner")
# Thêm mẫu token vào ruler
ruler.add_patterns([{"label":"PRODUCT", "pattern": "smartphone"}])
# Kiểm tra pipeline đã cập nhật
nlp.pipe_names
Xử lý Ngôn ngữ Nói bằng Python

Thay đổi pipeline

['tok2vec', 'tagger', 'parser', 'attribute_ruler',
 'lemmatizer', 'entity_ruler', 'ner']
Xử lý Ngôn ngữ Nói bằng Python

Kiểm thử pipeline mới

# Tạo lại doc với pipeline mới
doc = nlp(text)
# Kiểm thử quy tắc thực thể mới
for entity in doc.ents:
  print(entity.text, entity.label_)
smartphone PRODUCT
July 31st DATE
Sydney GPE
4093829 CARDINAL
one CARDINAL
Georgia GPE
yesterday DATE
Xử lý Ngôn ngữ Nói bằng Python

Cùng tăng tốc và luyện tập spaCy!

Xử lý Ngôn ngữ Nói bằng Python

Preparing Video For Download...