compute_word_piece_vocabulary 函数keras_hub.tokenizers.compute_word_piece_vocabulary(
data,
vocabulary_size,
vocabulary_output_file=None,
lowercase=False,
strip_accents=False,
split=True,
split_on_cjk=True,
suffix_indicator="##",
reserved_tokens=["[PAD]", "[CLS]", "[SEP]", "[UNK]", "[MASK]"],
)
用于训练 WordPiece 词汇表的实用工具。
从输入数据集或文件名列表训练 WordPiece 词汇表。
对于自定义数据加载和预分词 (split=False),输入 data 应为 tf.data.Dataset。如果 data 是文件名列表,则文件格式必须是纯文本文件,并且文本将在训练期间逐行读取。
参数
tf.data.Dataset 或文件名列表。None。True,则在分词前将输入文本转换为小写。默认为 False。True,则在分词前从文本中删除所有重音符号。默认为 False。True,输入将按空格和标点符号进行分割,并且所有标点符号都将保留为词元。如果为 False,则在调用分词器之前应将输入分割(“预分词”),并作为密集或不规则的全词张量传递。当 data 是文件名列表时,split 必须为 True。默认为 True。True,输入将按 CJK 字符进行分割,即中文、日文、韩文和越南字符 (https://en.wikipedia.org/wiki/CJK_Unified_Ideographs_(Unicode_block))。请注意,这仅适用于 split 为 True 的情况。默认为 True。"##ing"。默认为 "##"。返回
返回词汇表术语列表。
示例
基本用法(来自数据集)。
>>> inputs = tf.data.Dataset.from_tensor_slices(["bat sat pat mat rat"])
>>> vocab = compute_word_piece_vocabulary(inputs, 13)
>>> vocab
['[PAD]', '[CLS]', '[SEP]', '[UNK]', '[MASK]', 'a', 'b', 'm', 'p', 'r', 's', 't', '##at']
>>> tokenizer = keras_hub.tokenizers.WordPieceTokenizer(
... vocabulary=vocab,
... oov_token="[UNK]",
... )
>>> outputs = inputs.map(tokenizer.tokenize)
>>> for x in outputs:
... print(x)
tf.Tensor([ 6 12 10 12 8 12 7 12 9 12], shape=(10,), dtype=int32)
基本用法(来自文件名)。
with open("test.txt", "w+") as f:
f.write("bat sat pat mat rat\n")
inputs = ["test.txt"]
vocab = keras_hub.tokenizers.compute_word_piece_vocabulary(inputs, 13)
自定义分割用法(来自数据集)。
>>> def normalize_and_split(x):
... "Strip punctuation and split on whitespace."
... x = tf.strings.regex_replace(x, r"\p{P}", "")
... return tf.strings.split(x)
>>> inputs = tf.data.Dataset.from_tensor_slices(["bat sat: pat mat rat.\n"])
>>> split_inputs = inputs.map(normalize_and_split)
>>> vocab = compute_word_piece_vocabulary(
... split_inputs, 13, split=False,
... )
>>> vocab
['[PAD]', '[CLS]', '[SEP]', '[UNK]', '[MASK]', 'a', 'b', 'm', 'p', 'r', 's', 't', '##at']
>>> tokenizer = keras_hub.tokenizers.WordPieceTokenizer(vocabulary=vocab)
>>> inputs.map(tokenizer.tokenize)
自定义分割用法(来自文件名)。
def normalize_and_split(x):
"Strip punctuation and split on whitespace."
x = tf.strings.regex_replace(x, r"\p{P}", "")
return tf.strings.split(x)
with open("test.txt", "w+") as f:
f.write("bat sat: pat mat rat.\n")
inputs = tf.data.TextLineDataset(["test.txt"])
split_inputs = inputs.map(normalize_and_split)
vocab = keras_hub.tokenizers.compute_word_piece_vocabulary(
split_inputs, 13, split=False
)
tokenizer = keras_hub.tokenizers.WordPieceTokenizer(vocabulary=vocab)
inputs.map(tokenizer.tokenize)