word2vec
from gensim.models import KeyedVectors, Word2Vec, word2vec
from gensim.models.word2vec import LineSentence, PathLineSentences
def read_fime(fime_name):
'''准备数据'''
print('准备数据')
train_data = []
with open(fime_name, 'r', encoding='utf-8') as f:
while True:
data = f.readline()
if not data:
break
train_data.append(f.readline())
print(len(train_data))
return train_data
def train_word2vec(train_data):
'''训练模型并保存'''
model = Word2Vec(LineSentence('..\\data\\train_data.txt'), size=128, window=5, alpha=1e-4, negative=5,
iter=100) # 训练模型 LineSentence 加载数据 PathLineSentences 如果文件太大 这个可以一点点加载数据进行训练
model.save("..\\data\\train_appid.model") # 保存模型
model.wv.save_word2vec_format("..\\data\\train_appid.vector",
binary=True) # 保存词向量 binary=True表示保存为二进制, binary=False 非二进制
def obtain_topl():
'''获取模型训练的数据'''
# model = Word2Vec.load('..\\data\\train_appid.model')
model = Word2Vec.load('..\\data\\wiki.zh.text.model') # 加载模型
model = KeyedVectors.load_word2vec_format('..\\data\\train_appid.vector', binary=True) # 加载词向量
sim = model.most_similar('北京下雨啦', topn=10) # 返回相似度集合
model.wv.doesnt_match({'上海', '天津', '重庆', '深圳', '北京'}) # 找出一组集合中不同的类别
model.wv.similarity('北京', '上海') # 计算相似度
print('下雨了')
for item in sim:
print(item[0], item[1])
model.wv.doesnt_match({'上海', '天津', '重庆', '深圳', '北京'}) # 找出一组集合中不同的类别
model.wv.similarity('北京', '上海') # 计算相似度
def obtain_topls():
'''获取模型训练的数据'''
model = Word2Vec.load('..\\data\\train_appid.model')
sim = model.most_similar('555', topn=10) # 返回相似度集合
print('5 168 225 543 555 1376 1639 2302 2599')
for item in sim:
print(item[0], item[1])
if __name__ == '__main__':
# train_data = read_fime('..\\data\\train_data.txt')
# train_word2vec(train_data)
# obtain_topl()
obtain_topls()