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()