1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
from gensim.models import KeyedVectors
path = '/your/word2vec/path'
# 服务器加载20分钟,个人电脑悠着点
wv_from_text = KeyedVectors.load_word2vec_format(path, binary=False)
wv_from_text.init_sims(replace=True) # 省内存,可以运算most_similar
word = '视频会议'
# 取最相似的20条,后面会有相似度0-1
print(wv_from_text.similar_by_word(word, topn=20, restrict_vocab=None))
# 词向量,先判断词库里有没有这个词
if word in wv_from_text.wv.vocab.keys():
word_vec = wv_from_text[word]
# ngram向量补齐
# 分词
# 计算两个词的距离,这里是余弦距离
print(wv_from_text.distance("喜欢", "讨厌")) # 0.299
print(wv_from_text.distance("喜欢", "爱")) # 0.295
print(wv_from_text.distance("喜欢", "西瓜")) # 0.670
# 相似度,余弦相似度
print(wv_from_text.similarity("喜欢", "爱")) # 0.704
# 计算字符串,这里是余弦相似度。将两句话分词,然后计算文本相似度
print(wv_from_text.n_similarity(['风景', '怡人'],['山美','水美'])) # 0.60
print(wv_from_text.n_similarity(['风景', '怡人'],['上','厕所'])) # 0.43
# 不同类的词
print(wv_from_text.doesnt_match(['a','b','c']))
|