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
,輸入將依空白字元和標點符號分割,並且所有標點符號將保留為 tokens。如果為 False
,輸入應在呼叫 tokenizer 之前分割(「預先分詞」),並作為完整單字的密集或參差張量傳遞。當 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)