Bootstrap

word2vec

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