ByteTokenizer
類別keras_hub.tokenizers.ByteTokenizer(
lowercase=True,
sequence_length=None,
normalization_form=None,
errors="replace",
replacement_char=65533,
dtype="int32",
**kwargs
)
原始位元組 Tokenizer。
此 Tokenizer 是一種無需詞彙表的 Tokenizer,它會將文字 Token 化為 [0, 256) 範圍內的原始位元組。
Tokenizer 的輸出可以使用 sequence_length
參數進行填充和截斷,或保持不截斷。確切的輸出結果將取決於輸入張量的秩。
如果輸入是字串批次:預設情況下,此層將輸出一個 tf.RaggedTensor
,其中輸出的最後一個維度是不規則的。如果設定了 sequence_length
,此層將輸出一個密集的 tf.Tensor
,其中所有輸入都已填充或截斷至 sequence_length
。
如果輸入是純量字串:這裡有兩種情況。如果設定了 sequence_length
,則輸出將是形狀為 [sequence_length]
的密集 tf.Tensor
。否則,輸出將是形狀為 [None]
的密集 tf.Tensor
。
輸出 dtype 可以透過 dtype
參數控制,該參數應為整數類型(「int16」、「int32」等)。
引數
detokenize()
行為。值為 'strict'
將導致操作在任何無效的輸入格式上產生 InvalidArgument
錯誤。值為 'replace'
將導致 Tokenizer 使用 replacement_char
程式碼點替換輸入中任何無效的格式。值為 'ignore'
將導致 Tokenizer 跳過輸入中任何無效的格式,並且不產生相應的輸出字元。errors
設定為「replace」時要使用的替換字元(行為與 https://tensorflow.dev.org.tw/api_docs/python/tf/strings/unicode_transcode 相同)。(U+FFFD)是 65533
。預設值為 65533
。範例
基本用法。
>>> tokenizer = keras_hub.tokenizers.ByteTokenizer()
>>> outputs = tokenizer("hello")
>>> np.array(outputs)
array([104, 101, 108, 108, 111], dtype=int32)
不規則輸出。
>>> inputs = ["hello", "hi"]
>>> tokenizer = keras_hub.tokenizers.ByteTokenizer()
>>> seq1, seq2 = tokenizer(inputs)
>>> np.array(seq1)
array([104, 101, 108, 108, 111])
>>> np.array(seq2)
array([104, 105])
密集輸出。
>>> inputs = ["hello", "hi"]
>>> tokenizer = keras_hub.tokenizers.ByteTokenizer(sequence_length=8)
>>> seq1, seq2 = tokenizer(inputs)
>>> np.array(seq1)
array([104, 101, 108, 108, 111, 0, 0, 0], dtype=int32)
>>> np.array(seq2)
array([104, 105, 0, 0, 0, 0, 0, 0], dtype=int32)
Token 化,然後批次處理以獲得不規則輸出。
>>> tokenizer = keras_hub.tokenizers.ByteTokenizer()
>>> ds = tf.data.Dataset.from_tensor_slices(["hello", "fun"])
>>> ds = ds.map(tokenizer)
>>> ds = ds.apply(tf.data.experimental.dense_to_ragged_batch(2))
>>> ds.take(1).get_single_element()
<tf.RaggedTensor [[104, 101, 108, 108, 111], [102, 117, 110]]>
批次處理,然後 Token 化以獲得不規則輸出。
>>> tokenizer = keras_hub.tokenizers.ByteTokenizer()
>>> ds = tf.data.Dataset.from_tensor_slices(["hello", "fun"])
>>> ds = ds.batch(2).map(tokenizer)
>>> ds.take(1).get_single_element()
<tf.RaggedTensor [[104, 101, 108, 108, 111], [102, 117, 110]]>
Token 化,然後批次處理以獲得密集輸出(提供 sequence_length
)。
>>> tokenizer = keras_hub.tokenizers.ByteTokenizer(sequence_length=5)
>>> ds = tf.data.Dataset.from_tensor_slices(["hello", "fun"])
>>> ds = ds.map(tokenizer)
>>> ds = ds.apply(tf.data.experimental.dense_to_ragged_batch(2))
>>> ds.take(1).get_single_element()
<tf.Tensor: shape=(2, 5), dtype=int32, numpy=
array([[104, 101, 108, 108, 111],
[102, 117, 110, 0, 0]], dtype=int32)>
批次處理,然後 Token 化以獲得密集輸出。(提供 sequence_length
)。
>>> tokenizer = keras_hub.tokenizers.ByteTokenizer(sequence_length=5)
>>> ds = tf.data.Dataset.from_tensor_slices(["hello", "fun"])
>>> ds = ds.batch(2).map(tokenizer)
>>> ds.take(1).get_single_element()
<tf.Tensor: shape=(2, 5), dtype=int32, numpy=
array([[104, 101, 108, 108, 111],
[102, 117, 110, 0, 0]], dtype=int32)>
反 Token 化。
>>> inputs = [104, 101, 108, 108, 111]
>>> tokenizer = keras_hub.tokenizers.ByteTokenizer()
>>> tokenizer.detokenize(inputs)
'hello'
使用無效位元組進行反 Token 化。
>>> # The 255 below is invalid utf-8.
>>> inputs = [104, 101, 255, 108, 108, 111]
>>> tokenizer = keras_hub.tokenizers.ByteTokenizer(
... errors="replace", replacement_char=88)
>>> tokenizer.detokenize(inputs)
'heXllo'
tokenize
方法ByteTokenizer.tokenize(inputs)
將字串的輸入張量轉換為輸出 Token。
引數
detokenize
方法ByteTokenizer.detokenize(inputs)
將 Token 轉換回字串。
引數
get_vocabulary
方法ByteTokenizer.get_vocabulary()
取得 Tokenizer 詞彙表作為字串術語列表。
vocabulary_size
方法ByteTokenizer.vocabulary_size()
取得 Tokenizer 詞彙表的整數大小。
token_to_id
方法ByteTokenizer.token_to_id(token)
將字串 Token 轉換為整數 ID。
id_to_token
方法ByteTokenizer.id_to_token(id)
將整數 ID 轉換為字串 Token。