2016-11-30 2 views
1

Я использовал gensim для обучения модели Word2Vec и хотел бы запросить близлежащие термины. Но вместо того, чтобы просто получить слова, которые находятся ближе всего по всем направлениям:Перемещение в векторном пространстве Word2Vec в определенном направлении

model = models.Word2Vec.load('MyModel')  # load up my trained model 
nearest = model.most_similar(['mushroom'])  # nearby words all around 

Я хочу, чтобы двигаться в определенном направлении и расстоянии в векторном пространстве и получить ближайшее слово, по существу:

nearest = nearest_by_vector(word, direction_vector) 

Моя векторная математика ужасная (т. Е. Несуществующая), особенно с таким количеством измерений в моей модели.

ответ

0

Я думаю, что ваш вопрос заключается в нахождении векторов, которые ближе всего к расстоянию (эвклидовое расстояние), а не ближе к векторам. Это по существу проблема Nearest Neighbor Search. Алгоритмом поиска наихудшего случая/грубой силы будет линейный поиск. Но вы можете использовать различные расширенные библиотеки или структуры данных, которые найдут этих ближайших соседей более оптимальным и экономичным способом.

Смежные вопросы