The "additional_special_tokens" argument in the ".from_pretrained" method of the tokenizer is not necessarily taken into account.
Author: SaulLu
Pull request: no

## Environment info
<!-- You can run the command `transformers-cli env` and copy-and-paste its output below.
     Don't forget to fill out the missing fields in that output! -->

- `transformers` version: 4.8.2
- Platform: Linux-5.4.104+-x86_64-with-Ubuntu-18.04-bionic
- Python version: 3.7.10
- PyTorch version (GPU?): 1.9.0+cu102 (False)
- Tensorflow version (GPU?): 2.5.0 (False)
- Flax version (CPU?/GPU?/TPU?): not installed (NA)
- Jax version: not installed
- JaxLib version: not installed
- Using GPU in script?: no
- Using distributed or parallel set-up in script?: no

### Who can help

@LysandreJik 
@sgugger 
<!-- Your issue will be replied to more quickly if you can figure out the right person to tag with @
 If you know how to use git blame, that is the easiest way, otherwise, here is a rough guide of **who to tag**.
 Please tag fewer than 3 people.

Models:

- albert, bert, xlm: @LysandreJik
- blenderbot, bart, marian, pegasus, encoderdecoder,  t5: @patrickvonplaten, @patil-suraj
- longformer, reformer, transfoxl, xlnet: @patrickvonplaten
- fsmt: @stas00
- funnel: @sgugger
- gpt2: @patrickvonplaten, @LysandreJik
- rag: @patrickvonplaten, @lhoestq
- tensorflow: @Rocketknight1

Library:

- benchmarks: @patrickvonplaten
- deepspeed: @stas00
- ray/raytune: @richardliaw, @amogkam
- text generation: @patrickvonplaten
- tokenizers: @LysandreJik
- trainer: @sgugger
- pipelines: @LysandreJik

Documentation: @sgugger

Model hub:

- for issues with a model report at https://discuss.huggingface.co/ and tag the model's creator.

HF projects:

- datasets: [different repo](https://github.com/huggingface/datasets)
- rust tokenizers: [different repo](https://github.com/huggingface/tokenizers)

Examples:

- maintained examples (not research project or legacy): @sgugger, @patil-suraj
- research_projects/bert-loses-patience: @JetRunner
- research_projects/distillation: @VictorSanh

 -->

## Information

Model I am using (Bert, XLNet ...): Tapas

The problem arises when using:
* [ ] the official example scripts: (give details below)
* [x] my own modified scripts: (give details below)

The tasks I am working on is:
* [ ] an official GLUE/SQUaD task: (give the name)
* [ ] my own task or dataset: (give details below)

## To reproduce

To easily reproduce the behavior, you can directly open this [Google colab](https://colab.research.google.com/drive/1zKvkdmH2blYO4dx1s6OojTkDQcBGd35L?usp=sharing)

Steps to reproduce the behavior:

1. With the latest version of transformers, initialized a Tapas tokenizer with a new added token `"<special>"`
```
from transformers import TapasTokenizer

added_tokens = ["<special>"]

pretrained_name = "google/tapas-base"
tokenizer_p = TapasTokenizer.from_pretrained(
    pretrained_name, additional_special_tokens=added_tokens
)
```
2. Check if the new added token has been taken into account
```
"<special>" in tokenizer_p.get_vocab()
```
Output: `False`
```
tokenizer_p.additional_special_tokens # I would expect "<special>" in the list
```
Output: `['[EMPTY]']`
```
special_token_id = tokenizer_p.convert_tokens_to_ids(["<special>"])
print(tokenizer_p.convert_ids_to_tokens(special_token_id))
```
Output: `['[UNK]']`
3. See how an input containing `"<special>"` is tokenized
```
import pandas as pd 
query = "Hey this is a <special> token"
data = [
    ["Pos"],
    ["1"],
    ["2"],
]
table = pd.DataFrame.from_records(data[1:], columns=data[0])
p_output = tokenizer_p.encode(table, query)
```
Output: `['[CLS]', 'hey', 'this', 'is', 'a', '<', 'special', '>', 'token', '[SEP]', 'po', '##s', '1', '2']`
<!-- If you have code snippets, error messages, stack traces please provide them here as well.
     Important! Use code tags to correctly format your code. See https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting
     Do not use screenshots, as they are hard to read and (more importantly) don't allow others to copy-and-paste your code.-->

## Expected behavior

I would have hoped that the special token would be taken into account. In other words, I would have hoped to have the following outputs for each of the commands:
```
"<special>" in tokenizer_p.get_vocab()
```
Output: `True`
```
tokenizer_p.additional_special_tokens # I would expect "<special>" in the list
```
Output: `['<special>', '[EMPTY]']`
```
special_token_id = tokenizer_p.convert_tokens_to_ids(["<special>"])
print(tokenizer_p.convert_ids_to_tokens(special_token_id))
```
Output: `['<special>']`
```
import pandas as pd 
query = "Hey this is a <special> token"
data = [
    ["Pos"],
    ["1"],
    ["2"],
]
table = pd.DataFrame.from_records(data[1:], columns=data[0])
p_output = tokenizer_p.encode(table, query)
```
Output: `['[CLS]', 'hey', 'this', 'is', 'a', '<special>', 'token', '[SEP]', 'po', '##s', '1', '2']`
<!-- A clear and concise description of what you would expect to happen. -->

## Explanation ideas

I have the impression that when the `"additional_special_tokens"` key is filled in the `special_tokens_map.json` file then only the associated list is kept for the `additional_special_tokens` attribute. The content in the `additional_special_tokens` argument in ` TapasTokenizer.from_pretrained(pretrained_name, additional_special_tokens=added_tokens)` is then ignored. 

Is this the behavior we want to have? 
From the test [here](https://github.com/huggingface/transformers/blob/master/tests/test_tokenization_common.py#L3125) I have the impression that it is not -- it would fail on "google/tapas-base" of TapasTokenizer which is not tested at the moment but will be as part of the issue #12535.


Comments:
Indeed, it seems the `TapasTokenizer` isn't initialized correctly here; this should be patched!

Seems like the `MBart50TokenizerFast` is facing the same issue. 

One can see here how the special tokens are set according to the lang_codes:
https://github.com/huggingface/transformers/blob/dc42e770b86b737251ce5b83f6b0606fe1cd3548/src/transformers/models/mbart/tokenization_mbart50_fast.py#L144

In contrast to how the regular mbart Tokenizer handles both the additional_special_tokens and the language codes:
https://github.com/huggingface/transformers/blob/dc42e770b86b737251ce5b83f6b0606fe1cd3548/src/transformers/models/mbart/tokenization_mbart.py#L123-L127

This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/master/CONTRIBUTING.md) are likely to be ignored.

Normally the problem should have been solved by the above mentioned PR. Please let me know if this is not the case! :slightly_smiling_face: