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)