Я использую эту функцию для вычисления расстояния между двумя векторами a, b размером 300, word2vec, я получаю расстояние между «горячим» и «холодным» равным 1.
Как добавить это значение (1) к вектору, потому что я думал просто new_vec=model['hot']+1, но когда я делаю calc dist(new_vec,model['hot'])=17?
import numpy
def dist(a,b):
return numpy.linalg.norm(a-b)
a=model['hot']
c=a+1
dist(a,c)
17
Я ожидал, что dist(a,c) вернет мне 1!

Вам следует просмотреть, что такое норма. В случае numpy по умолчанию используется норма L-2 (также известная как евклидова норма). Когда вы добавляете 1 к вектору, вызов состоит в том, чтобы добавить 1 ко всем элементам в векторе.
>> vec1 = np.random.normal(0,1,size=300)
>> print(vec1[:5])
... [ 1.18469795 0.04074346 -1.77579852 0.23806222 0.81620881]
>> vec2 = vec1 + 1
>> print(vec2[:5])
... [ 2.18469795 1.04074346 -0.77579852 1.23806222 1.81620881]
Теперь ваш вызов norm говорит sqrt( (a1-b1)**2 + (a2-b2)**2 + ... + (aN-bN)**2 ), где N — длина вектора, a — первый вектор, а b — второй вектор (а ai — i-й элемент в a). Поскольку (a1-b1)**2 == (a2-b2)**2 == ... == (aN-bN)**2 == 1 мы ожидаем, что эта сумма даст N, что в вашем случае равно 300. Таким образом, sqrt(300) = 17.3 является ожидаемым ответом.
>> print(np.linalg.norm(vec1-vec2))
... 17.320508075688775
Чтобы ответить на вопрос «Как добавить значение к вектору»: вы сделали это правильно. Если вы хотите добавить значение к определенному элементу, вы можете сделать vec2[ix] += value, где ix индексирует элемент, который вы хотите добавить. Если вы хотите равномерно добавить значение для всех элементов вектора, которое изменит норму на 1, добавьте np.sqrt(1/300).
Также, возможно, актуальна более часто используемая метрика расстояния для векторов word2vec: косинусное расстояние, которая измеряет угол между двумя векторами.
В этой области не принято «добавлять эту величину к вектору», поэтому, вероятно, было бы полезно увидеть больше Зачем, которое вы хотите сделать. (Если вы хотите, чтобы вектор «указывал в том же направлении, но более сильно», было бы более типично умножить вектор на какой-либо коэффициент. сходство, на которое по определению нет влияет величина векторов, это снова будет нетипичной операцией.)
спасибо за подробное объяснение, если я могу спросить дальше, так как вы упомянули cosine_sim, то если cos_sim('cold','hot')=0,7, как мне добавить эту величину к вектору? как в new_vec=model['hot']+(0.7)