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