我想弄清楚BERT
预处理的作用。我是说,这是怎么做的。但是我找不到一个好的解释。如果有人知道,我将非常感激,一个更好的和深入解释的解决方案的链接。另一方面,如果有人想在这里解决这个问题,我也会非常感激!
我的问题是,BERT
如何在数学上将字符串输入转换为固定大小的数字向量?接下来的逻辑步骤是什么?
BERT提供了自己的标记器。由于BERT是一个预训练模型,它期望以特定格式输入数据,因此需要以下内容:
- 一个特殊的标记,
[SEP]
,用于标记句子的结束,或者两句分隔 - 一个特殊令牌,
[CLS]
,在这是课文的开始。这个令牌用于分类任务,但是无论你的应用程序是什么,BERT都希望它。 - 符合BERT中使用的固定词汇表的令牌
- 令牌id,来自BERT的令牌器
- 表示序列中哪些元素是令牌,哪些是填充元素的掩码id
- 用于区分不同句子的片段id
- 位置嵌入用于显示序列 中的标记位置
.
from transformers import BertTokenizer
# Load pre-trained model tokenizer (vocabulary)
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
# An example sentence
text = "Sentence to embed"
# Add the special tokens.
marked_text = "[CLS] " + text + " [SEP]"
# Split the sentence into tokens.
tokenized_text = tokenizer.tokenize(marked_text)
# Map the token strings to their vocabulary indices.
indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text)
看看这个优秀的教程,了解更多的细节。