前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fasttext工具介绍及迁移学习概念(包含训练词向量)

fasttext工具介绍及迁移学习概念(包含训练词向量)

作者头像
用户10950404
发布2024-08-06 10:28:04
1340
发布2024-08-06 10:28:04
举报
文章被收录于专栏:人工智能

1.fasttext介绍

1.1 fasttext作用

作为NLP工程领域常用的工具包, fasttext有两大作用:

  • 进行文本分类
  • 训练词向量

1.2 fasttext工具包的优势

  • 正如它的名字, 在保持较高精度的情况下, 快速的进行训练和预测是fasttext的最大优势.
  • fasttext优势的原因:
  • fasttext工具包中内含的fasttext模型具有十分简单的网络结构.
  • 使用fasttext模型训练词向量时使用层次softmax结构, 来提升超多类别下的模型性能.
  • 由于fasttext模型过于简单无法捕捉词序特征, 因此会进行n-gram特征提取以弥补模型缺陷提升精度.

1.3下载fasttext

代码语言:javascript
复制
pip install fasttext

2.迁移学习概念

💡有关迁移学习的相关概念:

  • 预训练模型(Pretrained model)
  • 微调(Fine-tuning)
  • 微调脚本(Fine-tuning script)

2.1 预训练模型(Pretrained model):

  • 一般情况下预训练模型都是大型模型,具备复杂的网络结构,众多的参数量,以及在足够大的数据集下进行训练而产生的模型. 在NLP领域,预训练模型往往是语言模型,因为语言模型的训练是无监督的,可以获得大规模语料,同时语言模型又是许多典型NLP任务的基础,如机器翻译,文本生成,阅读理解等,常见的预训练模型有BERT, GPT, roBERTa, transformer-XL等.

2.2 微调(Fine-tuning):

  • 根据给定的预训练模型,改变它的部分参数或者为其新增部分输出结构后,通过在小部分数据集上训练,来使整个模型更好的适应特定任务.

2.3 微调脚本(Fine-tuning script):

  • 实现微调过程的代码文件。这些脚本文件中,应包括对预训练模型的调用,对微调参数的选定以及对微调结构的更改等,同时,因为微调是一个训练过程,它同样需要一些超参数的设定,以及损失函数和优化器的选取等, 因此微调脚本往往也包含了整个迁移学习的过程.
  • 关于微调脚本的说明:
    • 一般情况下,微调脚本应该由不同的任务类型开发者自己编写,但是由于目前研究的NLP任务类型(分类,提取,生成)以及对应的微调输出结构都是有限的,有些微调方式已经在很多数据集上被验证是有效的,因此微调脚本也可以使用已经完成的规范脚本.

3.迁移学习的两种方式

  • 直接使用预训练模型,进行相同任务的处理,不需要调整参数或模型结构,这些模型开箱即用。但是这种情况一般只适用于普适任务, 如:fasttest工具包中预训练的词向量模型。另外,很多预训练模型开发者为了达到开箱即用的效果,将模型结构分各个部分保存为不同的预训练模型,提供对应的加载方法来完成特定目标.
  • 更加主流的迁移学习方式是发挥预训练模型特征抽象的能力,然后再通过微调的方式,通过训练更新小部分参数以此来适应不同的任务。这种迁移方式需要提供小部分的标注数据来进行监督学习.

💡关于迁移方式的说明: 直接使用预训练模型的方式, 我们下面通过fasttext的词向量迁移中学习

4.训练词向量

4.1 词向量的相关知识:

  • 用向量表示文本中的词汇(或字符)是现代机器学习中最流行的做法, 这些向量能够很好的捕捉语言之间的关系, 从而提升基于词向量的各种NLP任务的效果.

4.2 练词向量的过程

  • 第一步: 获取数据
  • 第二步: 训练词向量
  • 第三步: 模型超参数设定
  • 第四步: 模型效果检验
  • 第五步: 模型的保存与重加载

4.3训练词向量

  • 数据集采用英语维基百科的部分网页信息
代码语言:javascript
复制
# 代码运行在python解释器中
# 导入fasttext
>>> import fasttext
# 使用fasttext的train_unsupervised(无监督训练方法)进行词向量的训练
# 它的参数是数据集的持久化文件路径'data/fil9'
# 注意,该行代码执行耗时很长
>>> model1 = fasttext.train_unsupervised('data/fil9') 

# 可以使用以下代码加载已经训练好的模型
>>> model = fasttext.load_model("data/fil9.bin")

# 有效训练词汇量为124M, 共218316个单词
Read 124M words
Number of words:  218316
Number of labels: 0
Progress: 100.0% words/sec/thread:   53996 lr:  0.000000 loss:  0.734999 ETA:   0h 0m
  • 查看对应的词向量
代码语言:javascript
复制
# 通过get_word_vector方法来获得指定词汇的词向量
>>> model.get_word_vector("the")

array([-0.03087516,  0.09221972,  0.17660329,  0.17308897,  0.12863874,
        0.13912526, -0.09851588,  0.00739991,  0.37038437, -0.00845221,
        ...
       -0.21184735, -0.05048715, -0.34571868,  0.23765688,  0.23726143],
      dtype=float32)

💡后期相关的参数可以再做调整 ,使用预训练模型的方式比较简单, 接下来的迁移学习实践将主要讲解通过微调的方式进行迁移学习.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.fasttext介绍
    • 1.1 fasttext作用
      • 1.2 fasttext工具包的优势
        • 1.3下载fasttext
        • 2.迁移学习概念
          • 2.1 预训练模型(Pretrained model):
            • 2.2 微调(Fine-tuning):
              • 2.3 微调脚本(Fine-tuning script):
              • 3.迁移学习的两种方式
                • 4.训练词向量
                  • 4.1 词向量的相关知识:
                    • 4.2 练词向量的过程
                      • 4.3训练词向量
                      相关产品与服务
                      机器翻译
                      机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档