huggingface实战bert-base-chinese模型(训练+预测)


前言

Hugging Face是一家人工智能公司,致力于提供自然语言处理(NLP)模型和工具的开源库。他们的开源库包括了BERT等各种预训练模型的实现,以及用于训练、微调和部署这些模型的工具。在本文中,我们将探讨如何使用Hugging Face的库来构建一个BERT分类模型,该模型能够对文本进行分类,例如情感分析、文本分类等任务。我们将介绍如何使用Hugging Face提供的transformers库来构建、训练和评估BERT分类模型。通过本文的学习,您将能够掌握使用Hugging Face构建BERT分类模型的关键步骤和技巧,为NLP任务提供强大的解决方案。同时,我也将介绍掩码mask预测模型方法。最终,我也将数据、模型文件、代码等内容公开。


一、bert模型词汇映射说明

在BERT中,和是特殊的词元(token),用于在输入序列中标记特定的位置和边界。

:它是表示序列开头的特殊词元,全称为"classification"。在BERT中,输入序列的第一个位置被标记为,用于表示整个序列的概括信息。在训练过程中,BERT模型学习使用位置的表示来进行各种分类任务,例如文本分类、情感分析等。在编码后的表示中,位置的向量通常用作整个序列的汇总表示。

:它是表示序列分割的特殊词元,全称为"separator"。在BERT中,输入的文本序列可以由多个片段(segments)组成,例如两个句子或一个问题和一个回答。为了将这些片段分隔开,词元用于标记不同片段的边界。它出现在片段之间和序列的末尾,用于告知BERT模型输入序列的结构。

:它表示填充(padding)的词元,在输入序列中用于填充长度不足的片段或序列。填充是为了使所有输入序列具有相同的长度,以便进行批量处理。

:它表示掩蔽(mask)的词元,在预训练阶段用于生成掩蔽语言模型(Masked Language Model,MLM)任务。在训练过程中,输入序列中的一部分词元会被随机选择并替换为词元,模型需要预测被掩蔽的词元。

5 :它表示未知(unknown)的词元,用于表示在预训练期间未见过的词汇。当输入序列中出现未登录词(out-of-vocabulary)时,这些词元将被替换为词元。
博客链接:这里

二、bert模型输入解读

在这里,我们假设有个句子“这位姐姐对这本书几近痴迷。我不好这一口,没有耐心看它。纯粹表扬一下这次送书的效率和质量。起码书的品相不错,好过我前两次购书。希望以后能保持。”,包含标点符号。我们探讨该句子在模型中的输入或映射ids与vocab.txt对应关系。同时,也再次说明input_ids与attention_mask的含义。

1、input_ids说明

这里可以从input_ids看到tokenizer的输出是将你的文本根据模型的词汇表转化为对应的id。同时观察到所有句子都以101开头,102结尾,这两个id分别对应 [CLS], [SEP] token。

2、attention_mask说明

attention_mask有id的地方取值为1,没有id地方取值为0,表示模型需要处理token,在有掩码训练可根据这个决定哪些token不训练,如训练过程中的掩码率是15%。

3、token_type_ids说明

token_type_ids这里主要表示是否是两个句子拼接在一起,如果不是拼接的句子,那么这个值则全为0,若2个句子需要拼接,第二个句子为的token_type_ids为全1 ,如[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1]],0是第一个句子位置,1是第二个句子位置。

4、模型输入与vocab映射内容

该模型是个文本分类模型,标签只有2个类0或1,模型输入input_ids、attention_mask、token_type_ids、token_type_ids,我已在上面做了解释。这几个变量都为[batch,max_length],表示batch与文本长度,不足需pad填充,一般为0,其具体结果如下:

sents[0]= 这位姐姐对这本书几近痴迷。我不好这一口,没有耐心看它。纯粹表扬一下这次送书的效率和质量。起码书的品相不错,好过我前两次购书。希望以后能保持。
input_ids[0]= [ 101 6821  855 1995 1995 2190 6821 3315  741 1126 6818 4590 6837  511
 2769  679 1962 6821  671 1366 8024 3766 3300 5447 2552 4692 2124  511
 5283 5122 6134 2813  671  678 6821 3613 6843  741 4638 3126 4372 1469
 6574 7030  511 6629 4772  741 4638 1501 4685  679 7231 8024 1962 6814
 2769 1184  697 3613 6579  741  511 2361 3307  809 1400 5543  924 2898
  511  102    0    0    0    0    0    0    0    0    0    0    0    0
    0    0    0    0    0    0    0    0    0    0    0    0    0    0
    0    0]
attention_mask[0]= [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  • 22
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的语言模型,它可以用于各种自然语言处理任务,例如文本分类、命名实体识别、问答等等。bert-base-chinese是针对中文语言的BERT训练模型。 使用bert-base-chinese模型,可以按照以下步骤进行: 1. 安装相应的Python库,例如transformers库,可以使用pip install transformers进行安装。 2. 加载bert-base-chinese模型,可以使用transformers库中的BertModel类和BertTokenizer类。BertTokenizer类可以将输入文本转换为模型输入的格式,BertModel类则是BERT模型的实现。 3. 对文本进行预处理,包括分词、截断、填充等操作,将文本转换为模型输入的格式。 4. 调用BertModel类进行预测,得到模型的输出结果。 以下是一个使用bert-base-chinese模型进行文本分类的示例代码: ```python from transformers import BertTokenizer, BertModel import torch # 加载bert-base-chinese模型和tokenizer tokenizer = BertTokenizer.from_pretrained('bert-base-chinese') model = BertModel.from_pretrained('bert-base-chinese') # 输入文本 text = "这是一段测试文本" # 对文本进行预处理 inputs = tokenizer(text, return_tensors='pt') input_ids = inputs['input_ids'] attention_mask = inputs['attention_mask'] # 调用BertModel类进行预测 outputs = model(input_ids, attention_mask=attention_mask) ``` 在以上示例代码中,我们首先加载了bert-base-chinese模型和tokenizer,然后将文本转换为模型输入的格式,最后调用BertModel类进行预测。在预测过程中,我们可以得到模型的输出结果outputs,可以使用这些输出结果进行各种自然语言处理任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tangjunjun-owen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值