Как получить антонимы через word2vec?

В настоящее время я работаю над моделью word2vec, используя gensim в Python, и хочу написать функцию, которая может помочь мне найти антонимы и синонимы данного слова. Например: антоним ( "грустный" ) = "счастливым" синоним ( "расстройство" ) = "Разъяренный"

Есть ли способ сделать это в word2vec?

Ответ 1

В word2vec вы можете найти аналоги, следующий путь

model = gensim.models.Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)

model.most_similar(positive=['good', 'sad'], negative=['bad'])
[(u'wonderful', 0.6414928436279297),
 (u'happy', 0.6154338121414185),
 (u'great', 0.5803680419921875),
 (u'nice', 0.5683973431587219),
 (u'saddening', 0.5588893294334412),
 (u'bittersweet', 0.5544661283493042),
 (u'glad', 0.5512036681175232),
 (u'fantastic', 0.5471092462539673),
 (u'proud', 0.530515193939209),
 (u'saddened', 0.5293528437614441)]

Теперь, используя некоторые стандартные антонимы, такие как (хорошие, плохие), (богатые, бедные), находят несколько таких списков ближайших антонимов. После этого вы можете использовать среднее значение векторов этого списка.

Ответ 2

Я думаю, что можно получить антоним, используя Король-мужчина + женщина = королева аналогии. здесь королева (антоним короля и синоним женщины) - результат, возвращающийся из обученной модели word2vec. пусть мы скажем, что есть слово X и его синоним Y. и также есть антоним Y, который является Z. тогда мы можем сказать X-Y + Z = антоним (X) и синоним (Z).