在上面的word2vec中,可以训练得到每个item的vec,当然也可根据每个item的vector计算他们之间的相似度,我推荐直接采用similar by vector,这样可以由query得到topk个最接近的词,如下:
similar_by_vector(vector, topn=10, restrict_vocab=None) method of gensim.models.word2vec.Word2Vec instance
Deprecated, use self.wv.similar_by_vector() instead.
下面三者得到的结果是一样的,无论是比较vector,还是word,归根结底比较的还是向量。
sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]]
...
model.similar_by_vector(model.wv['cat'])
#[('cat', 0.9999999403953552), ('say', 0.06181219592690468), ('dog', 0.05950310826301575), ('meow', 0.011392313987016678), ('woof', -0.1317243129014969)]
model.similarity('cat','say')
#0.061812192
model