index mismatch in "offset_mapping" with TokenizerFast and pre-tokenized input
## Environment info

- `transformers` version: 4.2.2
- Platform: Linux-4.19.112+-x86_64-with-Ubuntu-18.04-bionic
- Python version: 3.6.9
- PyTorch version (GPU?): 1.7.0+cu101 (False)
- Tensorflow version (GPU?): 2.4.0 (False)
- Using GPU in script?: <fill in>
- Using distributed or parallel set-up in script?: <fill in>

## Information

I am not sure if this is the expected behavior or not, but when i use BertTokenizerFast with pre-tokenized input (so i set the parameter "is_split_into_words" to True) i have a mismatch in the offsets_mapping. It considers every token standalone and restart the start index from zero.

## To reproduce

Steps to reproduce the behavior:

```
from transformers import BertTokenizerFast
    
tokenizer = BertTokenizerFast.from_pretrained('bert-base-cased') 

tokenized_one_string = tokenizer(
    ["This is not what i was expecting"],
    return_offsets_mapping=True,
)

tokenized_with_pre_tokenized_input = tokenizer(
    [["This", "is", "not", "what", "i", "was", "expecting"]],
    is_split_into_words=True,
    return_offsets_mapping=True,
)
print(tokenized_one_string["offset_mapping"])
print(tokenized_with_pre_tokenized_input["offset_mapping"])
```

and this is the output:
```
[[(0, 0), (0, 4), (5, 7), (8, 11), (12, 16), (17, 18), (19, 22), (23, 32), (0, 0)]]

[[(0, 0), (0, 4), (0, 2), (0, 3), (0, 4), (0, 1), (0, 3), (0, 9), (0, 0)]]
```
## Expected behavior
I was expected to get the same "offset_mapping" even from the pre-tokenized input.



Hi @simoneorlando

This is indeed intended behavior. The values in `offset_mapping` return a mapping to the original input, and when you provide pre-tokenized input, each of them is treated individually. In this case, you can use the word mapping to know where you should do your extraction:
```python
from transformers import BertTokenizerFast

tokenizer = BertTokenizerFast.from_pretrained("bert-base-cased")

# Pre-tokenized input
labels = ["This", "is", "not", "what", "i", "was", "expecting"]
tokenized_with_pre_tokenized_input = tokenizer(
    labels,
    is_split_into_words=True,
    return_offsets_mapping=True,
)
print(tokenized_with_pre_tokenized_input["offset_mapping"])
for token_id, offsets in enumerate(tokenized_with_pre_tokenized_input["offset_mapping"]):
    word_id = tokenized_with_pre_tokenized_input.token_to_word(token_id)
    if word_id is not None:
        print(offsets, labels[word_id][offsets[0] : offsets[1]])
```
Gives the following output:
```python
[(0, 0), (0, 4), (0, 2), (0, 3), (0, 4), (0, 1), (0, 3), (0, 9), (0, 0)]
(0, 4) This
(0, 2) is
(0, 3) not
(0, 4) what
(0, 1) i
(0, 3) was
(0, 9) expecting
```