In word2vec si possono trovare analogie, come segue
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)]
Ora utilizzando alcuni contrari standard come (buono, cattivo), (ricchi, poveri), trovare più tali elenchi dei contrari più vicini. Successivamente è possibile utilizzare la media dei vettori di questo elenco.
Perché è necessaria la media dei vettori qui? – Salamander
Ad esempio, il tuo gruppo di seme di contrari è 'ss = [('ricco', 'povero'), ('buono', 'cattivo')]'. Ora, per trovare l'antonimo di 'sad', puoi fare qualcosa come' antonym_candidates = [model.most_similar (positivo = [ss [0] [0], 'triste'], negativo = [ss [0] [1]]), model.most_similar (positivo = [ss [1] [0], 'triste'], negativo = [ss [1] [1]])] '. Ora per scegliere il miglior antonimo, puoi (1) prendere la parola più vicina/più frequente (2) prendere (pesata) la media dei vettori di tutti i possibili candidati e trovare la parola nel vocabolario più vicino a questo vettore – kampta
Quindi, in quel caso, Devo creare una serie di contrari noti. Ho ragione? – Salamander