WordPieceTokenizer
類別keras_hub.tokenizers.WordPieceTokenizer(
vocabulary=None,
sequence_length=None,
lowercase=False,
strip_accents=False,
split=True,
split_on_cjk=True,
suffix_indicator="##",
oov_token="[UNK]",
special_tokens=None,
special_tokens_in_strings=False,
dtype="int32",
**kwargs
)
WordPiece 分詞器層。
此層提供由 BERT 和其他模型使用的 WordPiece 演算法的高效、圖形內實現。
為了使此層更加易於使用,該層將對輸入進行預先分詞,這將選擇性地將輸入轉換為小寫、刪除重音符號,並根據空格和標點符號分割輸入。這些預先分詞步驟中的每一步都是不可逆的。 detokenize
方法將使用空格連接單詞,並且不會完全反轉 tokenize
。
如果需要更自訂的預先分詞步驟,則可以將層配置為僅應用嚴格的 WordPiece 演算法,方法是傳遞 lowercase=False
、strip_accents=False
和 split=False
。在這種情況下,輸入應該是預先分割的字串張量或不規則張量。
分詞器輸出可以使用 sequence_length
參數進行填充和截斷,或者保持未截斷狀態。確切的輸出將取決於輸入張量的秩。
如果輸入是一批字串(秩 > 0):根據預設,該層將輸出 tf.RaggedTensor
,其中輸出的最後一個維度是不規則的。如果設定了 sequence_length
,則該層將輸出一個密集的 tf.Tensor
,其中所有輸入都已填充或截斷為 sequence_length
。
如果輸入是純量字串(秩 == 0):根據預設,該層將輸出一個形狀為 [None]
的密集 tf.Tensor
。如果設定了 sequence_length
,則輸出將是一個形狀為 [sequence_length]
的密集 tf.Tensor
。
輸出 dtype 可以通過 dtype
參數來控制,該參數應為整數或字串類型。
參數
True
,則輸入文字在標記化之前會轉換為小寫。預設值為 False
。True
,則在標記化之前,所有重音符號都將從文字中移除。預設值為 False
。True
,則輸入將在空格和標點符號處分割,並且所有標點符號都將保留為標記。如果為 False
,則應在呼叫標記器之前分割(「預先標記」)輸入,並作為完整詞彙的密集或不規則張量傳遞。預設值為 True
。split
為 True 時。預設值為 True
。"##"
。"[UNK]"
。參考文獻
範例
不規則輸出。
>>> vocab = ["[UNK]", "the", "qu", "##ick", "br", "##own", "fox", "."]
>>> inputs = "The quick brown fox."
>>> tokenizer = keras_hub.tokenizers.WordPieceTokenizer(
... vocabulary=vocab,
... lowercase=True,
... )
>>> outputs = tokenizer(inputs)
>>> np.array(outputs)
array([1, 2, 3, 4, 5, 6, 7], dtype=int32)
密集輸出。
>>> vocab = ["[UNK]", "the", "qu", "##ick", "br", "##own", "fox", "."]
>>> inputs = ["The quick brown fox."]
>>> tokenizer = keras_hub.tokenizers.WordPieceTokenizer(
... vocabulary=vocab,
... sequence_length=10,
... lowercase=True,
... )
>>> outputs = tokenizer(inputs)
>>> np.array(outputs)
array([[1, 2, 3, 4, 5, 6, 7, 0, 0, 0]], dtype=int32)
字串輸出。
>>> vocab = ["[UNK]", "the", "qu", "##ick", "br", "##own", "fox", "."]
>>> inputs = "The quick brown fox."
>>> tokenizer = keras_hub.tokenizers.WordPieceTokenizer(
... vocabulary=vocab,
... lowercase=True,
... dtype="string",
... )
>>> tokenizer(inputs)
['the', 'qu', '##ick', 'br', '##own', 'fox', '.']
反標記化。
>>> vocab = ["[UNK]", "the", "qu", "##ick", "br", "##own", "fox", "."]
>>> inputs = "The quick brown fox."
>>> tokenizer = keras_hub.tokenizers.WordPieceTokenizer(
... vocabulary=vocab,
... lowercase=True,
... )
>>> tokenizer.detokenize(tokenizer.tokenize(inputs))
'the quick brown fox .'
自訂分割。
>>> vocab = ["[UNK]", "the", "qu", "##ick", "br", "##own", "fox", "."]
>>> inputs = "The$quick$brown$fox"
>>> tokenizer = keras_hub.tokenizers.WordPieceTokenizer(
... vocabulary=vocab,
... split=False,
... lowercase=True,
... dtype='string',
... )
>>> split_inputs = tf.strings.split(inputs, sep="$")
>>> tokenizer(split_inputs)
['the', 'qu', '##ick', 'br', '##own', 'fox']
tokenize
方法WordPieceTokenizer.tokenize(inputs)
將字串的輸入張量轉換為輸出標記。
參數
detokenize
方法WordPieceTokenizer.detokenize(inputs)
將標記轉換回字串。
參數
get_vocabulary
方法WordPieceTokenizer.get_vocabulary()
取得標記器詞彙表作為字串標記的清單。
vocabulary_size
方法WordPieceTokenizer.vocabulary_size()
取得標記器詞彙表的整數大小。
token_to_id
方法WordPieceTokenizer.token_to_id(token)
將字串標記轉換為整數 ID。
id_to_token
方法WordPieceTokenizer.id_to_token(id)
將整數 ID 轉換為字串標記。