Я не уверен, какой набор данных быстрого текста вы используете, но я скачал вики-новости размером 1M, 300 из здесь , и, используя приведенный ниже пример кода, я определил отрицательное косинусное сходство.
Так что, возможно, вам просто нужно попытаться найти больше векторов слов, хотя я не думаю, что вы делаете что-то неправильно как таковое.
import io
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
ffp = "/path/to//wiki-news-300d-1M.vec"
def load_vectors(fname):
fin = io.open(fname, 'r', encoding='utf-8', newline='\n', errors='ignore')
n, d = map(int, fin.readline().split())
data = {}
for ix, line in enumerate(fin):
tokens = line.rstrip().split(' ')
data[tokens[0]] = list(map(float, tokens[1:]))
if ix > 1000:
break
return data
data = load_vectors(ffp)
word_vectors = np.asarray(list(data.values()))
r = cosine_similarity(word_vectors[300:500, :], word_vectors[100:200])
print(r.min())
print(np.count_nonzero(r < 0))