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"
。默认为 "##"
。返回值
返回词汇表术语列表。
示例
基本用法(来自 Dataset)。
>>> 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)
自定义分割用法(来自 Dataset)。
>>> 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)