description: Tokenizer used for BERT.
Tokenizer used for BERT.
Inherits From: TokenizerWithOffsets,
Tokenizer,
SplitterWithOffsets,
Splitter, Detokenizer
text.BertTokenizer(
vocab_lookup_table,
suffix_indicator='##',
max_bytes_per_word=100,
max_chars_per_token=None,
token_out_type=dtypes.int64,
unknown_token='[UNK]',
split_unknown_characters=False,
lower_case=False,
keep_whitespace=False,
normalization_form=None,
preserve_unused_token=False,
basic_tokenizer_class=BasicTokenizer
)
This tokenizer applies an end-to-end, text string to wordpiece tokenization. It first applies basic tokenization, followed by wordpiece tokenization.
See WordpieceTokenizer for details on the subword tokenization.
For an example of use, see https://www.tensorflow.org/text/guide/bert_preprocessing_guide
detokenize(
token_ids
)
Convert a Tensor or RaggedTensor of wordpiece IDs to string-words.
See
WordpieceTokenizer.detokenize
for details.
Note:
BertTokenizer.tokenize/BertTokenizer.detokenize
does not round trip losslessly. The result of detokenize will not, in general,
have the same content or offsets as the input to tokenize. This is because the
"basic tokenization" step, that splits the strings into words before applying
the WordpieceTokenizer, includes irreversible steps like lower-casing and
splitting on punctuation. WordpieceTokenizer on the other hand is
reversible.
Note: This method assumes wordpiece IDs are dense on the interval [0, vocab_size).
>>> import pathlib
>>> pathlib.Path('/tmp/tok_vocab.txt').write_text(
... "they ##' ##re the great ##est".replace(' ', '\n'))
>>> tokenizer = BertTokenizer(
... vocab_lookup_table='/tmp/tok_vocab.txt')
>>> text_inputs = tf.constant(['greatest'.encode('utf-8')])
>>> tokenizer.detokenize([[4, 5]])
<tf.RaggedTensor [[b'greatest']]>
| Args | |
|---|---|
| `token_ids` | A `RaggedTensor` or `Tensor` with an int dtype. |
| Returns | |
|---|---|
| A `RaggedTensor` with dtype `string` and the same rank as the input `token_ids`. |
split(
input
)
Alias for
Tokenizer.tokenize.
split_with_offsets(
input
)
Alias for
TokenizerWithOffsets.tokenize_with_offsets.
tokenize(
text_input
)
Tokenizes a tensor of string tokens into subword tokens for BERT.
>>> import pathlib
>>> pathlib.Path('/tmp/tok_vocab.txt').write_text(
... "they ##' ##re the great ##est".replace(' ', '\n'))
>>> tokenizer = BertTokenizer(
... vocab_lookup_table='/tmp/tok_vocab.txt')
>>> text_inputs = tf.constant(['greatest'.encode('utf-8') ])
>>> tokenizer.tokenize(text_inputs)
<tf.RaggedTensor [[[4, 5]]]>
| Args | |
|---|---|
| `text_input` | input: A `Tensor` or `RaggedTensor` of untokenized UTF-8 strings. |
| Returns | |
|---|---|
| A `RaggedTensor` of tokens where `tokens[i1...iN, j]` is the string contents (or ID in the vocab_lookup_table representing that string) of the `jth` token in `input[i1...iN]` |
tokenize_with_offsets(
text_input
)
Tokenizes a tensor of string tokens into subword tokens for BERT.
>>> import pathlib
>>> pathlib.Path('/tmp/tok_vocab.txt').write_text(
... "they ##' ##re the great ##est".replace(' ', '\n'))
>>> tokenizer = BertTokenizer(
... vocab_lookup_table='/tmp/tok_vocab.txt')
>>> text_inputs = tf.constant(['greatest'.encode('utf-8')])
>>> tokenizer.tokenize_with_offsets(text_inputs)
(<tf.RaggedTensor [[[4, 5]]]>,
<tf.RaggedTensor [[[0, 5]]]>,
<tf.RaggedTensor [[[5, 8]]]>)
| Args | |
|---|---|
| `text_input` | input: A `Tensor` or `RaggedTensor` of untokenized UTF-8 strings. |
| Returns | |
|---|---|
| A tuple of `RaggedTensor`s where the first element is the tokens where `tokens[i1...iN, j]`, the second element is the starting offsets, the third element is the end offset. (Please look at `tokenize` for details on tokens.) |