Měření sémantické podobnosti pomocí spaCy

Zpracování přirozeného jazyka s knihovnou spaCy

Azadeh Mobasher

Principal Data Scientist

Metoda sémantické podobnosti

 

  • Proces analýzy textů za účelem identifikace podobností
  • Zařazuje texty do předdefinovaných kategorií nebo nalézá relevantní texty
  • Skóre podobnosti měří míru podobnosti dvou textů

 

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?
Zpracování přirozeného jazyka s knihovnou spaCy

Skóre podobnosti

  • Metrika definovaná nad texty
  • K měření podobnosti se používá kosinová podobnost a vektory slov
  • Kosinová podobnost nabývá hodnot od 0 do 1

Kosinová podobnost a vektory

Zpracování přirozeného jazyka s knihovnou spaCy

Podobnost tokenů

  • spaCy počítá skóre podobnosti mezi objekty 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
Zpracování přirozeného jazyka s knihovnou spaCy

Podobnost spanů

  • spaCy počítá sémantickou podobnost dvou objektů 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
Zpracování přirozeného jazyka s knihovnou spaCy

Podobnost dokumentů

  • spaCy počítá skóre podobnosti mezi dvěma dokumenty
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
  • Vysoká kosinová podobnost značí sémanticky blízký obsah
  • Vektory Doc jsou ve výchozím nastavení průměrem vektorů slov
Zpracování přirozeného jazyka s knihovnou spaCy

Podobnost vět

  • spaCy nachází obsah relevantní k danému klíčovému slovu
  • Hledání podobných zákaznických dotazů ke slovu cena:
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
Zpracování přirozeného jazyka s knihovnou spaCy

Pojďme si procvičit!

Zpracování přirozeného jazyka s knihovnou spaCy

Preparing Video For Download...