Đặc trưng ngôn ngữ

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

Azadeh Mobasher

Principal Data Scientist

Gán nhãn POS

  • Thẻ POS phụ thuộc vào ngữ cảnh, từ xung quanh và thẻ của chúng
import spacy
nlp = spacy.load("en_core_web_sm")
text = "My cat will fish for a fish tomorrrow in a fishy way."
print([(token.text, token.pos_, spacy.explain(token.pos_)) 
        for token in nlp(text)])

Ví dụ gán nhãn POS

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

Tầm quan trọng của POS?

 

  • Độ chính xác cao hơn cho nhiều tác vụ NLP

 

I will fish tomorrow.

I ate fish.

 

  • Trường hợp dùng trong hệ dịch

 

verb -> pescaré

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

Tầm quan trọng của POS?

 

  • Phân định nghĩa từ (WSD) là bài toán quyết định nghĩa nào của một từ trong câu.
  • Xác định nghĩa từ rất quan trọng trong dịch máy, v.v.

Ví dụ WSD

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

Phân định nghĩa từ

import spacy
nlp = spacy.load("en_core_web_sm")

verb_text = "I will fish tomorrow."
noun_text = "I ate fish."


print([(token.text, token.pos_) for token in nlp(verb_text) if "fish" in token.text], "\n") print([(token.text, token.pos_) for token in nlp(noun_text) if "fish" in token.text])
[('fish', 'VERB', 'verb')] 
[('fish', 'NOUN', 'noun')]
Xử lý ngôn ngữ tự nhiên với spaCy

Phân tích phụ thuộc

  • Khai thác cú pháp của câu
  • Liên kết giữa hai token
  • Tạo thành cây

Ví dụ phân tích phụ thuộc

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

Phân tích phụ thuộc và spaCy

 

  • Nhãn phụ thuộc mô tả loại quan hệ cú pháp giữa hai token

 

Dependency label Mô tả
nsubj Chủ ngữ danh từ
root Gốc
det Hạn định từ
dobj Tân ngữ trực tiếp
aux Trợ động từ
Xử lý ngôn ngữ tự nhiên với spaCy

Phân tích phụ thuộc và displaCy

  • displaCy có thể vẽ cây phụ thuộc
doc = nlp("We understand the differences.")

spacy.displacy.serve(doc, style="dep")

Ví dụ bộ phân tích phụ thuộc với displaCy

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

Phân tích phụ thuộc và spaCy

  • Thuộc tính .dep_ để lấy nhãn phụ thuộc của token

 

doc = nlp("We understand the differences.")
print([(token.text, token.dep_, spacy.explain(token.dep_)) for token in doc])
[('We', 'nsubj', 'nominal subject'), ('understand', 'ROOT', 'root'),
('the', 'det', 'determiner'), ('differences', 'dobj', 'direct object'),
('.', 'punct', 'punctuation')]
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...