# BERTweet

## BERTweet

[BERTweet](https://huggingface.co/papers/2005.10200) 与 [BERT-base](./bert) 采用相同的架构，但它是像 [RoBERTa](./roberta) 一样在英文推文上预训练的。它在词性标注、命名实体识别和文本分类等推文相关任务上表现非常出色。

您可以在 [VinAI Research](https://huggingface.co/vinai?search_models=BERTweet) 组织下找到所有原始的 BERTweet 检查点。

> [!TIP]
> 有关如何将 BERTweet 应用于不同语言任务的更多示例，请参阅 [BERT](./bert) 文档。

以下示例演示了如何使用 [Pipeline](/docs/transformers/main/zh/main_classes/pipelines#transformers.Pipeline)、[AutoModel](/docs/transformers/main/zh/model_doc/auto#transformers.AutoModel) 以及命令行来预测 `<mask>` 标记。

```python
from transformers import pipeline

pipeline = pipeline(
    task="fill-mask",
    model="vinai/bertweet-base",
    device=0
)
pipeline("Plants create <mask> through a process known as photosynthesis.")
```

```python
import torch

from transformers import AutoModelForMaskedLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(
   "vinai/bertweet-base",
)
model = AutoModelForMaskedLM.from_pretrained(
    "vinai/bertweet-base",
    device_map="auto"
)
inputs = tokenizer("Plants create <mask> through a process known as photosynthesis.", return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs)
    predictions = outputs.logits

masked_index = torch.where(inputs['input_ids'] == tokenizer.mask_token_id)[1]
predicted_token_id = predictions[0, masked_index].argmax(dim=-1)
predicted_token = tokenizer.decode(predicted_token_id)

print(f"The predicted token is: {predicted_token}")
```

## 备注

- 请使用 [AutoTokenizer](/docs/transformers/main/zh/model_doc/auto#transformers.AutoTokenizer) 或 [BertweetTokenizer](/docs/transformers/main/zh/model_doc/bertweet#transformers.BertweetTokenizer)，因为它们预加载了针对推文特定标记（如话题标签（#）、提及（@）、表情符号和常见缩写）进行适配的自定义词汇表。请确保同时安装 [emoji](https://pypi.org/project/emoji/) 库。
- 输入应在右侧进行填充（`padding="max_length"`），因为 BERT 使用绝对位置嵌入。

## BertweetTokenizer[[transformers.BertweetTokenizer]]

#### transformers.BertweetTokenizer[[transformers.BertweetTokenizer]]

```python
transformers.BertweetTokenizer(vocab_file, merges_file, normalization = False, bos_token = '<s>', eos_token = '</s>', sep_token = '</s>', cls_token = '<s>', unk_token = '<unk>', pad_token = '<pad>', mask_token = '<mask>', **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bertweet/tokenization_bertweet.py#L51)

**参数：**

vocab_file (`str`) : 词汇表文件的路径。

merges_file (`str`) : 合并文件的路径。

normalization (`bool`，*可选*，默认为 `False`)：是否应用归一化预处理。

bos_token (`str`, *可选*, 默认为 `"<s>"`) : 预训练期间使用的序列起始标记。可用作序列分类标记。 在使用特殊标记构建序列时，序列起始处使用的并非此标记，而是 `cls_token`。

eos_token (`str`, *可选*, 默认为 `"</s>"`) : 序列结束标记。 在使用特殊标记构建序列时，序列结束使用的标记并非此标记，而是 `sep_token`。

sep_token (`str`，*可选*，默认为 `"</s>"`)：分隔符标记，用于从多个序列构建序列时，例如用于序列分类的两个序列，或用于问答的文本和问题。它也用作使用特殊标记构建的序列的最后一个标记。

cls_token (`str`，*可选*，默认为 `"<s>"`)：用于执行序列分类（对整个序列进行分类，而非逐 token 分类）的分类器 token。当使用特殊 token 构建序列时，它是序列的第一个 token。

unk_token (`str`，*可选*，默认为 `"<unk>"`)：未知标记。不在词汇表中的标记无法转换为 ID，因此会被设置为该标记。

pad_token (`str`，*可选*，默认为 `"<pad>"`)：用于填充的标记，例如在对长度不同的序列进行批处理时。

mask_token (`str`，*可选*，默认为 `"<mask>"`)：用于掩码值的标记。这是在通过掩码语言建模训练该模型时所使用的标记。模型将尝试预测此标记。

使用字节对编码（Byte-Pair-Encoding）构建 BERTweet 分词器。

该分词器继承自 [PreTrainedTokenizer](/docs/transformers/main/zh/main_classes/tokenizer#transformers.PythonBackend)，后者包含了大部分主要方法。用户应参考该父类以获取有关这些方法的更多信息。

#### add_from_file[[transformers.BertweetTokenizer.add_from_file]]

```python
add_from_file(f)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bertweet/tokenization_bertweet.py#L332)

从文本文件加载现有的字典，并将其符号添加到当前实例中。

#### convert_tokens_to_string[[transformers.BertweetTokenizer.convert_tokens_to_string]]

```python
convert_tokens_to_string(tokens)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bertweet/tokenization_bertweet.py#L291)

将单个字符串中的标记序列（字符串）进行转换。

#### normalizeToken[[transformers.BertweetTokenizer.normalizeToken]]

```python
normalizeToken(token)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bertweet/tokenization_bertweet.py#L264)

对推文中的标记进行归一化

#### normalizeTweet[[transformers.BertweetTokenizer.normalizeTweet]]

```python
normalizeTweet(tweet)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bertweet/tokenization_bertweet.py#L230)

规范化原始推文

#### save_vocabulary[[transformers.BertweetTokenizer.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bertweet/tokenization_bertweet.py#L302)

将词汇表和合并文件保存到目录中。

