Semantische gelijkenis meten met spaCy

Natural Language Processing met spaCy

Azadeh Mobasher

Principal Data Scientist

De methode voor semantische gelijkenis

 

  • Proces van tekstanalyse om overeenkomsten te vinden
  • Deelt teksten in voorgedefinieerde categorieën in of vindt relevante teksten
  • Similariteitsscore meet hoe gelijk twee teksten zijn

 

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?
Natural Language Processing met spaCy

Similariteitsscore

  • Een maat gedefinieerd voor teksten
  • Voor gelijkenis: gebruik cosinusgelijkenis en woordvectoren
  • Cosinusgelijkenis ligt tussen 0 en 1

Cosinusgelijkenis en vectoren

Natural Language Processing met spaCy

Token-similariteit

  • spaCy berekent similariteitsscores tussen Token-objecten
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
Natural Language Processing met spaCy

Span-similariteit

  • spaCy berekent semantische gelijkenis van twee Span-objecten
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
Natural Language Processing met spaCy

Doc-similariteit

  • spaCy berekent similariteitsscores tussen twee documenten
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
  • Hoge cosinusgelijkenis duidt op sterke semantische overeenkomst
  • Doc-vectoren zijn standaard het gemiddelde van woordvectoren
Natural Language Processing met spaCy

Zinssimilariteit

  • spaCy vindt content die past bij een gegeven trefwoord
  • Vergelijkbare klantvragen zoeken bij het woord 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
Natural Language Processing met spaCy

Laten we oefenen!

Natural Language Processing met spaCy

Preparing Video For Download...