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)