bert模型tokenizer
时间: 2025-01-14 15:56:08 浏览: 101
### 如何使用 BERT 模型的 Tokenizer 进行文本预处理
为了正确地将输入数据送入 BERT 模型,需要先对其进行特定形式的编码。这通常涉及以下几个方面:
#### 加载分词器
加载已经训练好的 BERT 分词器可以通过指定模型路径来完成。对于中文版 RoBERTa 模型而言,可以采用如下方式初始化分词器[^1]。
```python
from transformers import BertTokenizer
model_name = 'E:\\Programming\\PyCharm\\NLP\\preTrainBert\\hfl\\chinese-roberta-wwm-ext'
tokenizer = BertTokenizer.from_pretrained(model_name)
```
#### 编码单句文本
当准备向 BERT 输入单一语句时,在实际操作前需对该句话做适当转换。具体来说就是给定一句字符串类型的文本后,调用 `encode_plus` 方法可实现自动添加特殊标记 `[CLS]` 和 `[SEP]` 并返回字典格式的结果,其中包含了 token IDs 列表以及 attention mask 等信息[^2]。
```python
text = "你好,世界"
encoding = tokenizer.encode_plus(
text,
add_special_tokens=True, # 添加 '[CLS]' 和 '[SEP]'
max_length=8, # 填充 & 截断至固定长度
padding='max_length', # 是否填充序列到最大长度,默认为False
truncation=True, # 当超过最大长度时是否截断,默认为False
return_attention_mask=True # 返回注意力掩码
)
input_ids = encoding['input_ids'] # 获取 input ids 数组
attention_masks = encoding['attention_mask'] # 获取 attention masks 数组
print(input_ids)
print(attention_masks)
```
#### 处理多条记录的数据集
如果面对的是由多个样本构成的数据集合,则应当遍历整个列表并对每一条记录执行上述相同的操作。考虑到效率问题,建议利用批量处理的方式一次性获取所有实例对应的张量表示[^4]。
```python
texts = ["我喜欢自然语言处理", "机器学习真有趣"]
encodings_dict = tokenizer.batch_encode_plus(
texts,
add_special_tokens=True,
max_length=10,
pad_to_max_length=True,
return_attention_mask=True,
return_tensors='pt' # 将输出转成 PyTorch Tensor 类型
)
batch_input_ids = encodings_dict['input_ids']
batch_attention_masks = encodings_dict['attention_mask']
print(batch_input_ids)
print(batch_attention_masks)
```
阅读全文
相关推荐


















