Đo độ tương đồng ngữ nghĩa với spaCy

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

Azadeh Mobasher

Principal Data Scientist

Phương pháp tương đồng ngữ nghĩa

 

  • Quy trình phân tích văn bản để xác định mức độ giống nhau
  • Phân loại văn bản vào nhóm đã định sẵn hoặc phát hiện văn bản liên quan
  • Điểm tương đồng đo mức giống nhau giữa hai đoạn văn bản

 

What is the cheapest flight from Boston to Seattle?
Which airline serves Denver, Pittsburgh and Atlanta?
What kinds of planes are used by American Airlines?
Xử lý ngôn ngữ tự nhiên với spaCy

Điểm tương đồng

  • Một thang đo áp dụng cho văn bản
  • Đo tương đồng bằng Cosine similarityvector từ
  • Cosine similarity nằm trong khoảng từ 0 đến 1

Cosine similarity and vectors

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

Tương đồng token

  • spaCy tính điểm tương đồng giữa các đối tượng Token
nlp = spacy.load("en_core_web_md")
doc1 = nlp("We eat pizza")
doc2 = nlp("We like to eat pasta")

token1 = doc1[2] token2 = doc2[4] print(f"Similarity between {token1} and {token2} = ", round(token1.similarity(token2), 3))
>>> Similarity between pizza and pasta =  0.685
Xử lý ngôn ngữ tự nhiên với spaCy

Tương đồng span

  • spaCy tính tương đồng ngữ nghĩa của hai đối tượng Span
doc1 = nlp("We eat pizza")
doc2 = nlp("We like to eat pasta")

span1 = doc1[1:]
span2 = doc2[1:]

print(f"Similarity between \"{span1}\" and \"{span2}\" = ", round(span1.similarity(span2), 3))
>>> Similarity between "eat pizza" and "like to eat pasta" =  0.588
print(f"Similarity between \"{doc1[1:]}\" and \"{doc2[3:]}\" = ",
        round(doc1[1:].similarity(doc2[3:]), 3))
>>> Similarity between "eat pizza" and "eat pasta" =  0.936
Xử lý ngôn ngữ tự nhiên với spaCy

Tương đồng Doc

  • spaCy tính điểm tương đồng giữa hai tài liệu
nlp = spacy.load("en_core_web_md")

doc1 = nlp("I like to play basketball")
doc2 = nlp("I love to play basketball")
print("Similarity score :", round(doc1.similarity(doc2), 3))
>>> Similarity score : 0.975
  • Cosine similarity cao cho thấy nội dung rất giống nhau về ngữ nghĩa
  • Vector Doc mặc định là trung bình của các vector từ
Xử lý ngôn ngữ tự nhiên với spaCy

Độ tương đồng câu

  • spaCy tìm nội dung liên quan cho một từ khóa
  • Tìm câu hỏi khách hàng tương tự với từ price:
sentences = nlp("What is the cheapest flight from Boston to Seattle? 
                 Which airline serves Denver, Pittsburgh and Atlanta? 
                 What kinds of planes are used by American Airlines?")

keyword = nlp("price")

for i, sentence in enumerate(sentences.sents): print(f"Similarity score with sentence {i+1}: ", round(sentence.similarity(keyword), 5))
>>> Similarity score with sentence 1:  0.26136
Similarity score with sentence 2:  0.14021
Similarity score with sentence 3:  0.13885
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...