Вимірювання семантичної схожості зі spaCy

Обробка природної мови (NLP) зі spaCy

Azadeh Mobasher

Principal Data Scientist

Метод семантичної схожості

 

  • Процес аналізу текстів для виявлення схожості
  • Розподіляє тексти за заданими категоріями або знаходить релевантні тексти
  • Оцінка схожості показує, наскільки подібні два фрагменти тексту

 

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?
Обробка природної мови (NLP) зі spaCy

Оцінка схожості

  • Міра для текстів
  • Для вимірювання використовуйте косинусну схожість і векторні подання слів
  • Косинусна схожість — число від 0 до 1

Косинусна схожість і вектори

Обробка природної мови (NLP) зі spaCy

Схожість токенів

  • spaCy обчислює оцінки схожості між об'єктами 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
Обробка природної мови (NLP) зі spaCy

Схожість діапазонів (Span)

  • spaCy обчислює семантичну схожість для двох об'єктів 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
Обробка природної мови (NLP) зі spaCy

Схожість документів (Doc)

  • spaCy обчислює оцінки схожості між двома документами
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
  • Висока косинусна схожість означає високу семантичну подібність
  • Вектори Doc за замовчуванням — це середнє векторів слів
Обробка природної мови (NLP) зі spaCy

Схожість речень

  • spaCy знаходить релевантний вміст до заданого ключового слова
  • Пошук подібних запитань клієнтів до слова 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
Обробка природної мови (NLP) зі spaCy

Давайте потренуємось!

Обробка природної мови (NLP) зі spaCy

Preparing Video For Download...