• 《基于Tensorflow的知识图谱实战》 --- 有趣的词嵌入--word embedding(二)| fastText和预训练词向量


    🎨开发平台:jupyter lab

    🎄运行环境:python3、TensorFlow2.x

    word embedding(词嵌入),常用来进行情感分析、同义词聚类、文章分类和打标签。
    (1)该部分内容介绍:通过多种计算word embedding的方法循序渐进的了解如何获取对应的word embedding,之后通过实战使用word embedding进行文本分类。
    (2)该章节将分为四个部分,分别为:

    • 1.文本数据处理
    • 2.更多的word embedding方法—fastText和预训练词向量
    • 3.针对文本的卷积神经网络模型 — 字符卷积
    • 4.针对文本的卷积神经网络模型 — 词卷积
    • 5.使用卷积对文本分类的补充内容

    1. fastText的原理和基础算法

    优点:相对于传统的word2vec计算方法,fastText计算更快速和更新的一种word embedding方法
    (1)fastText在保持高精度的情况下加快了训练速度和测试速度。
    (2)fastText对word embedding的训练更加精准。
    (3)fastText采用两个重要的算法:N-gram、Hierarchical Softmax。

    1.1 N-gram算法

    常用的方式:1-gram、2-gram、3-gram
    (1)相对于word2vec中采用的CBOW架构,fastText采用的是N-gram架构。
    (2)N理论上可以设置任意值,n为滑动窗口数,逐字向后移动。

    1.2 Hierarchical Softmax算法

    (1)当预料类别较多时,使用Hierarchical Softmax(hs)减轻计算量。
    (2)fastText中的Hierarchical Softmax利用Huffman树实现,将词向量作为叶子结点,之后根据词向量构建Huffman树。

    2. fastText训练以及与tensorflow2.x的协同使用(待完善)

    2.1 fastText函数介绍

    from gensim.models import fastText
    model = fastText(min_count = 5,size = 300,window = 7,workers = 10,iter = 50,seed = 17,sg = 1,hs = 1)
    
    ** 参数介绍
    (1)size(int,optional):word向量的维度
    (2)window(int,optional):一个句子中当前单词和被预测单词的最大距离。
    (3)min_count(int,optional):忽略词频小于此值的单词。
    (4)workers(int,optional):训练模型时使用的线程数。
    (5)sg({0,1},optional):模型的训练算法,1代表skip-gram,0代表CBOW。
    (6)hs({0,1},optional):1采用hierarchical Softmax训练模型,0代表负采样。
    (7iter:模型迭代的次数。
    (8)seed(int,optional):随机数发生器种子。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3. 使用其他预训练参数做Tensorflow词嵌入矩阵(中文)

    对于个人用户或者规模不大的公司来说,做一个庞大的预训练项目是一个费时费力的工程。因此,我们可以借助一些其他工具。
    -在中文部分,腾讯的词向量是一款较为常用并且免费的词嵌入预训练数据。
    链接地址: https://ai.tencet.com/ailab/nlp/embedding/.html

    from gensim.modelsword2vec import KetedVectors
    wv_from_text = KetedVectors.load_word2vec_format(file,binary=False)
    
    • 1
    • 2
  • 相关阅读:
    ABAP BASE64/STRING/XSTRING/BINARY 等之间的转换总结
    浅谈C/S vs. B/S的区别
    阿里云99元的主机到底怎么样?
    从零开始学习SLAM
    LuatOS-SOC接口文档(air780E)--lora - lora驱动模块
    计算机专业课笔记集中整理贴(持续更新中。。。)
    Python-Jenkins 在 Jenkins 中的应用
    C++ vector容器
    详解欧拉计划第456题:包含原点的三角形II
    C语言使用ip代码示例
  • 原文地址:https://blog.csdn.net/d_eng_/article/details/125392881