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分词器层。
该层提供了一种高效的、在图内的WordPiece算法实现,该算法被BERT及其他模型使用。
为了使该层开箱即用,该层将预先对输入进行分词,可选地会进行小写转换、去除重音符号,并根据空格和标点符号拆分输入。这些预分词步骤中的每一步都是不可逆的。detokenize 方法将用空格连接词语,并且不会精确地逆转tokenize操作。
如果需要更自定义的预分词步骤,可以通过传递lowercase=False、strip_accents=False和split=False来配置该层,使其仅应用严格的WordPiece算法。在这种情况下,输入应为预先分词的字符串张量或稀疏张量(ragged tensors)。
分词器输出可以通过 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,将根据空格和标点符号拆分输入,并将所有标点符号保留为token。如果为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()
以字符串token列表的形式获取分词器的词汇表。
vocabulary_size 方法WordPieceTokenizer.vocabulary_size()
获取分词器词汇表的整数大小。
token_to_id 方法WordPieceTokenizer.token_to_id(token)
将字符串标记转换为整数 ID。
id_to_token 方法WordPieceTokenizer.id_to_token(id)
将整数 ID 转换为字符串标记。