Я играю с функцией подобия в Spacy и заметил кое-что, чего я не понимаю:
import spacy
nlp = spacy.load('en_core_web_sm')
doc1 = nlp("Honda Civic Toyota")
doc2 = nlp("Honda Civic Toyota car Christian God")
for token in doc1:
print (token.text, doc1[0].similarity(token))
for token in doc2:
print (token.text, doc2[0].similarity(token))
Выход:
Honda 1.0
Civic 0.6631208
Toyota 0.4700994
Honda 1.0
Civic 0.6806056
Toyota 0.54713947
car 0.22469836
Christian 0.5016042
God 0.4778438
Слово Honda сравнивается со всеми другими словами в doc1 и doc2, и можно заметить, что при сравнении Honda с Civic и Toyota сходство отличается в doc1 и doc2.
Насколько я понимаю, сходство вычисляется из консиного сходства вектора слов Glove, который загружается из 'en_core_web_sm'. Если это так, не должно ли сходство между одной и той же парой слов быть одинаковым независимо от контекста?
Я думаю, что я что-то неправильно понимаю, был бы признателен, если бы кто-то мог прояснить это.