2016-10-09 5 views
2

В учебнике примере Spacy в Python результаты apples.similarity(oranges) является 0.39289959293092641 вместо 0.7857989796519943Python для начинающих Spacy: сходство функционирования

Любые причины для этого? Оригинальные документы из учебника https://spacy.io/docs/ Учебник с другим ответом на один я получаю: http://textminingonline.com/getting-started-with-spacy

Благодаря

+2

Можете ли вы хотя бы ссылаться на этот пример? – Eric

ответ

8

Это, кажется, ошибка в Spacy.

Какое-то время vector_norm.

import spacy 
import numpy as np 
nlp = spacy.load("en") 
# using u"apples" just as an example 
apples = nlp.vocab[u"apples"] 
print apples.vector_norm 
# prints 1.4142135381698608, or sqrt(2) 
print np.sqrt(np.dot(apples.vector, apples.vector)) 
# prints 1.0 

Затем vector_norm используется в similarity, которая всегда возвращает значение, которое всегда половина правильного значения.

def similarity(self, other): 
    if self.vector_norm == 0 or other.vector_norm == 0: 
     return 0.0 
    return numpy.dot(self.vector, other.vector)/(self.vector_norm * other.vector_norm) 

Если вы оцениваете оценки подобия для синонимов, возможно, это будет нормально. Но если вам нужна правильная оценка подобия косинуса, результат неверен.

Я представил вопрос here. Надеюсь, скоро он будет исправлен.

2

Благодаря отчету Этана по проблеме трекера, это теперь исправлено.

По умолчанию вы также получите векторы GloVe - так что сходство должно быть более точным.