# coding:utf-8 # 安装方法:1、pip install fasttext; 2 平替 pip install fasttext-wheel; # 3 安装预编译文件(安装轮子) pip install fasttext-xxx.whl; 4 编译安装源代码文件,需要编译软件(最麻烦) import fasttext # 1 获取训练数据,已完成 # 2 词向量的训练保存加载 def dm_fasttext_train_save_load(): # 01 训练模型,不设置任何参数 my_model = fasttext.train_unsupervised('./data/fil9') print('训练词向量 OK') # 02 保存模型 my_model.save_model('./data/fil9.bin') print('保存模型 OK') # 03 加载模型 my_model = fasttext.load_model('./data/fil9.bin') print('加载模型 OK') # 3 查看单词对应的词向量 # 通过get_word_vector方法来获得指定词汇的词向量, 默认词向量训练出来是1个单词100特征 def dm_fasttext_get_word_vector(): # 01 加载模型 my_model = fasttext.load_model("./data/fil9.bin") # 02 查询某个词汇的词向量 result = my_model.get_word_vector("donkey") print(f'donkey的词向量是{result}') print(f'donkey的词向量类型是{type(result)}') print(f'donkey的词向量形状是{result.shape}') # 4 检验模型效果 # 查找"运动"的邻近单词, 可以发现"体育网", "运动汽车", "运动服"等 def dm_fasttext_get_nearest_neighbors(): # 01 加载模型 my_model = fasttext.load_model("data/fil9.bin") # 02 查询sports的临近单词 results1 = my_model.get_nearest_neighbors("sports") print(f'sports的邻居-->{results1}') # 查询music的临近单词 results2 = my_model.get_nearest_neighbors("music") print(f'music的邻居-->{results2}') # 查询music的临近单词 results3 = my_model.get_nearest_neighbors("dog") print(f'dog的邻居-->{results3}') # 5 模型超参数设定 # 无监督训练模式 model 可选 'skipgram'(默认) or 'cbow' # 词嵌入维度 dim 默认 100 # 循环轮次 epoch 默认 5 # 学习率 lr 默认 0.05,建议 [0.01,1] def dm_fasttext_train_args(): # 训练模型 设置超参数 my_model = fasttext.train_unsupervised('./data/fil9', "cbow", epoch=1, lr=0.1, dim=300, thread=8) # # 保存模型 # my_model.save_model('./data/fil9.bin') if __name__ == '__main__': dm_fasttext_train_save_load() # dm_fasttext_get_word_vector() # dm_fasttext_get_nearest_neighbors() # dm_fasttext_train_args()