软文兼职,自助建站优化,优秀个人网站设计,网站友链查询摄影#xff1a;Max Chen on Unsplash 一、说明 这是使用 BERT 语言模型的一系列文本分类演示的第一部分。以文本的分类作为例#xff0c;演示它们的调用过程。
二、什么是伯特#xff1f; BERT 代表 来自变压器的双向编码器表示。 首先#xff0c;转换器是一种深度学习模… 摄影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] 代表 分类令牌[SEP] 让 BERT 知道哪个令牌属于哪个序列可以输入BERT模型的令牌的最大大小为512。因此如果令牌小于 512我们可以使用填充来填充空令牌;如果序列中的令牌长度超过 512那么我们需要截断令牌。BERT 模型的输出将是每个令牌中大小为 768 的嵌入向量。然后这些令牌将成为分类器的输入。
五、 尝试一个简单的文本 拥抱脸是一个很棒的学习场所。它提供语言模型、数据集您甚至可以在那里学习自然语言处理浏览其网站以获取更多信息 拥抱面孔 - 构建未来的 AI 社区。 构建、训练和部署由机器学习中的参考开源提供支持的先进模型。超过。。。 huggingface.co 让我们从拥抱脸中导出一个语言模型看看它对一个简单的句子有什么作用。我们需要先导入自动标记器来启动语言模型。
pip install transformers
from transformers import AutoTokenizer
tokenizer AutoTokenizer.from_pretrained(cl-tohoku/bert-base-japanese-v2)
example_text 今日は一日サッカーをしました
##(I played soccer for the whole day)##
BERT_input tokenizer(example_text,paddingmax_length, max_length 20, truncationTrue, return_tensorspt)print(BERT_input[input_ids])
print(BERT_input[token_type_ids])
print(BERT_input[attention_mask])
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是什么。
example_text tokenizer.decode(bert_input.input_ids[0])
print(example_text)
[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的标记化结果。达门·