KerasHub:預訓練模型 / API 文件 / Tokenizers / compute_sentence_piece_proto 函數

compute_sentence_piece_proto 函數

[原始碼]

compute_sentence_piece_proto 函數

keras_hub.tokenizers.compute_sentence_piece_proto(
    data, vocabulary_size, model_type="unigram", proto_output_file=None, lowercase=False
)

用於訓練 SentencePiece 詞彙表的工具。

從輸入資料集或檔案名稱清單訓練 SentencePiece 詞彙表。

如果 data 是檔案名稱清單,檔案格式必須為純文字檔,並且在訓練期間會逐行讀取文字。

引數

  • datatf.data.Dataset,或檔案名稱清單。
  • vocabulary_size:int。要訓練的詞彙表的最大大小。
  • model_type:str。模型演算法必須是 "unigram""bpe""word""char" 其中之一。預設為 "unigram"
  • proto_output_file:str。如果提供,它將用作傳遞給 model_writer 的 model_file。如果為 None,model_file 將為 io.BytesIO 物件。預設為 None
  • lowercase:bool。如果為 True,輸入文字將在 Tokenization 之前轉換為小寫。預設為 False

返回

一個包含序列化 SentencePiece proto 的 bytes 物件;如果提供了 proto_output_file,則返回 None

範例

基本用法(來自 Dataset)。

>>> inputs = tf.data.Dataset.from_tensor_slices(["Drifting Along"])
>>> proto = keras_hub.tokenizers.compute_sentence_piece_proto(
...     inputs, vocabulary_size=15)
>>> tokenizer = keras_hub.tokenizers.SentencePieceTokenizer(proto=proto)
>>> outputs = inputs.map(tokenizer)
>>> for output in outputs:
...     print(output)
tf.Tensor([ 4  8 12  5  9 14  5  6 13  4  7 10 11  6 13],
shape=(15,), dtype=int32)

基本用法(使用檔案)。

with open("test.txt", "w+") as f: f.write("Drifting Along\n")
inputs = ["test.txt"]
proto = keras_hub.tokenizers.compute_sentence_piece_proto(
     inputs, vocabulary_size=15, proto_output_file="model.spm")
tokenizer = keras_hub.tokenizers.SentencePieceTokenizer(proto="model.spm")
ds = tf.data.Dataset.from_tensor_slices(["the quick brown fox."])
ds = ds.map(tokenizer)

搭配小寫的用法

>>> inputs = tf.data.Dataset.from_tensor_slices(["Drifting Along"])
>>> proto = keras_hub.tokenizers.compute_sentence_piece_proto(
...     inputs, vocabulary_size=15, lowercase=True)
>>> tokenizer = keras_hub.tokenizers.SentencePieceTokenizer(proto=proto)
>>> outputs = inputs.map(tokenizer)
>>> for output in outputs:
...     print(output)
tf.Tensor([ 4  8 12  5  9 14  5  6 13  4  7 10 11  6 13],
shape=(15,), dtype=int32)