Vượt ra ngoài n-gram: word embedding

Khai thác đặc trưng cho NLP bằng Python

Rounak Banik

Data Scientist

Vấn đề với BoW và tf-idf

'I am happy'
'I am joyous'
'I am sad'
Khai thác đặc trưng cho NLP bằng Python

Word embedding

  • Ánh xạ từ vào không gian vector n chiều
  • Tạo bằng học sâu và lượng dữ liệu rất lớn
  • Phân biệt mức độ tương tự giữa hai từ
  • Dùng để phát hiện từ đồng nghĩa và trái nghĩa
  • Nắm bắt quan hệ phức tạp
    • King-QueenMan-Woman
    • France-ParisRussia-Moscow
  • Phụ thuộc vào mô hình spacy; độc lập với dữ liệu bạn dùng
Khai thác đặc trưng cho NLP bằng Python

Word embedding với spaCy

import spacy

# Tải mô hình và tạo đối tượng Doc
nlp = spacy.load('en_core_web_lg')
doc = nlp('I am happy')
# Tạo vector từ cho từng token
for token in doc:
  print(token.vector)
[-1.0747459e+00  4.8677087e-02  5.6630421e+00  1.6680446e+00
 -1.3194644e+00 -1.5142369e+00  1.1940931e+00 -3.0168812e+00
 ...
Khai thác đặc trưng cho NLP bằng Python

Độ tương đồng giữa từ

doc = nlp("happy joyous sad")
for token1 in doc:
  for token2 in doc:
    print(token1.text, token2.text, token1.similarity(token2))
happy happy 1.0
happy joyous 0.63244456
happy sad 0.37338886
joyous happy 0.63244456
joyous joyous 1.0
joyous sad 0.5340932
...
Khai thác đặc trưng cho NLP bằng Python

Độ tương đồng giữa văn bản

# Tạo các đối tượng doc
sent1 = nlp("I am happy")
sent2 = nlp("I am sad")
sent3 = nlp("I am joyous")
# Tính độ tương đồng giữa sent1 và sent2
sent1.similarity(sent2)
0.9273363837282105
# Tính độ tương đồng giữa sent1 và sent3
sent1.similarity(sent3)
0.9403554938594568
Khai thác đặc trưng cho NLP bằng Python

Hãy thực hành!

Khai thác đặc trưng cho NLP bằng Python

Preparing Video For Download...