使用 BERT 进行文本分类 (01/3)

摄影:Max Chen on Unsplash

一、说明

这是使用 BERT 语言模型的一系列文本分类演示的第一部分。以文本的分类作为例,演示它们的调用过程。

二、什么是伯特?

BERT代表 来自变压器的双向编码器表示。

首先,转换器是一种深度学习模型,它使用自我注意机制,根据每个单词与其他单词的关系对其进行加权。根据注意力得分,模型可以"注意"序列中的有价值的部分。其次,BERT是双向的,这意味着它在训练时会同时考虑左上下文和右上下文。从这个意义上说,BERT模型可以从两个方向理解上下文。

**三、**BERT BASE 和 BERT LARGE

BERT BASE:更少的变压器块和隐藏层大小,具有与OpenAI GPT相同的模型大小。[12个变压器块,12个注意头,768个隐藏层尺寸]

BERT LARGE:庞大的网络,其注意力层是BERT BASE的两倍,在NLP任务上实现了最先进的结果。[24个变压器块,16个注意头,1024隐藏层尺寸]

区别:Bert base的参数比Bert large少,因此可以用更少的计算机内存使用。Bert large具有更多的参数,因此它比Bert基数更准确。

四、伯特输入和输出

输入:[CLS]令牌序列[SEP]

  • CLS\] 代表 分类令牌

  • 可以输入BERT模型的令牌的最大大小为512。因此,如果令牌小于 512,我们可以使用填充来填充空令牌;如果序列中的令牌长度超过 512,那么我们需要截断令牌。
  • BERT 模型的输出将是每个令牌中大小为 768 的嵌入向量。然后,这些令牌将成为分类器的输入。

五、 尝试一个简单的文本

拥抱脸是一个很棒的学习场所。它提供语言模型、数据集,您甚至可以在那里学习自然语言处理!浏览其网站以获取更多信息:
拥抱面孔 - 构建未来的 AI 社区。
构建、训练和部署由机器学习中的参考开源提供支持的先进模型。超过。。。
huggingface.co

让我们从拥抱脸中导出一个语言模型,看看它对一个简单的句子有什么作用。我们需要先导入自动标记器来启动语言模型。

bh 复制代码
pip install transformers
from transformers import AutoTokenizer
tokenizer= AutoTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-v2')
acd 复制代码
example_text = '今日は一日サッカーをしました'
##('I played soccer for the whole day')##
BERT_input = tokenizer(example_text,padding='max_length', max_length = 20, 
                       truncation=True, return_tensors="pt")


print(BERT_input['input_ids'])
print(BERT_input['token_type_ids'])
print(BERT_input['attention_mask'])
acd 复制代码
tensor([[    2, 13711,   897,  1031,  2719, 11731,   932,   873, 13276,   881,
             3,     0,     0,     0,     0,     0,     0,     0,     0,     0]])
tensor([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

六、解释

  • 填充 :将每个序列填充到指定的最大长度。
  • max_length:每个序列的最大长度。在这个例子中,我们使用 20,但对于我们的实际数据集,我们将使用 512,这是 BERT 允许的最大序列长度。
  • 截断 :如果为 True,则每个序列中超过最大长度的标记将被截断。
  • return_tensors:将返回的张量类型。如果你使用 Pytorch,那么你将使用 pt。如果你使用Tensorflow,那么你需要使用tf。

七 什么是input_ids

我们可以解码令牌以查看input_ids是什么。

bh 复制代码
example_text = tokenizer.decode(bert_input.input_ids[0])
print(example_text)
acd 复制代码
[CLS] 今日 は 一 日 サッカー を し まし た [SEP] [PAD] [PAD] [PAD] [PAD] [PAD] [PAD] [PAD] [PAD] [PAD]

八、 什么是token_type_ids和attention_mask?

  • token_type_ids是一个二进制掩码,用于标识哪些令牌属于哪个序列。因为我们只有一个序列,所以所有代币都属于类 0。
  • attention_mask是一个二进制掩码,如果令牌是实词,则为 [CLS]、[SEP] 或填充。如果令牌是实词 [CLS]、[SEP],则掩码将为 1。否则,掩码将为 0。

九、总结

在这篇文章中,我简要介绍了BERT是什么,并使用一个简单的文本来显示使用BERT的标记化结果。达门·

相关推荐
eBest数字化转型方案3 分钟前
2025年快消品行业渠道数字化营销系统全景透视与选型策略
人工智能
kkcodeer19 分钟前
大模型Prompt原理、编写原则与技巧以及衡量方法
人工智能·prompt·ai大模型
DevSecOps选型指南29 分钟前
SBOM风险预警 | NPM前端框架 javaxscript 遭受投毒窃取浏览器cookie
前端·人工智能·前端框架·npm·软件供应链安全厂商·软件供应链安全工具
rocksun31 分钟前
MCP利用流式HTTP实现实时AI工具交互
人工智能·mcp
xiaok1 小时前
docker network create langbot-network这条命令在dify输入还是在langbot中输入
人工智能
It_张1 小时前
LLM(大语言模型)的工作原理 图文讲解
人工智能·语言模型·自然语言处理
Darach1 小时前
坐姿检测Python实现
人工智能·python
xiaok1 小时前
LangBot 和消息平台均运行在 Docker 容器中
人工智能
queeny1 小时前
Datawhale AI夏令营 科大讯飞AI大赛(大模型技术) Task3 心得
人工智能