BERT 词嵌入预处理是如何工作的
How does BERT word embedding preprocess work
我想弄清楚 BERT
预处理的作用。我的意思是,它是如何完成的。但我找不到很好的解释。如果有人知道,我将不胜感激 link 以获得更好且深入解释的解决方案。
另一方面,如果有人想在这里解决它,我也将万分感谢!
我的问题是,BERT
如何以数学方式将字符串输入转换为固定大小的数字向量?以下是哪些逻辑步骤?
BERT 提供了自己的分词器。由于 BERT 是预训练模型,需要特定格式的输入数据,因此需要满足以下条件:
- 一个特殊的标记,
[SEP]
,用来标记一个句子的结尾,或者
两个句子之间的分隔
- 一个特殊的令牌,
[CLS]
,在
我们正文的开头。此令牌用于分类任务,
但无论您的应用程序是什么,BERT 都期望它。
- 符合BERT中使用的固定词汇表的token
- 令牌的令牌 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)
查看这个优秀的 tutorial 了解更多详情。
我想弄清楚 BERT
预处理的作用。我的意思是,它是如何完成的。但我找不到很好的解释。如果有人知道,我将不胜感激 link 以获得更好且深入解释的解决方案。
另一方面,如果有人想在这里解决它,我也将万分感谢!
我的问题是,BERT
如何以数学方式将字符串输入转换为固定大小的数字向量?以下是哪些逻辑步骤?
BERT 提供了自己的分词器。由于 BERT 是预训练模型,需要特定格式的输入数据,因此需要满足以下条件:
- 一个特殊的标记,
[SEP]
,用来标记一个句子的结尾,或者 两个句子之间的分隔 - 一个特殊的令牌,
[CLS]
,在 我们正文的开头。此令牌用于分类任务, 但无论您的应用程序是什么,BERT 都期望它。 - 符合BERT中使用的固定词汇表的token
- 令牌的令牌 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)
查看这个优秀的 tutorial 了解更多详情。