KerasHub:預訓練模型 / API 文件 / Tokenizers / SentencePieceTokenizer

SentencePieceTokenizer

[原始碼]

SentencePieceTokenizer 類別

keras_hub.tokenizers.SentencePieceTokenizer(
    proto=None,
    sequence_length=None,
    dtype="int32",
    add_bos=False,
    add_eos=False,
    **kwargs
)

SentencePiece 分詞器層。

此層提供 SentencePiece 分詞的實作,如 SentencePiece 論文SentencePiece 套件中所述。分詞將完全在 Tensorflow 圖中執行,並可以儲存在 keras.Model 中。

預設情況下,此層將輸出 tf.RaggedTensor,其中輸出的最後一個維度在空格分割和子詞分詞後是不規則的。如果設定了 sequence_length,此層將輸出一個密集 tf.Tensor,其中所有輸入都已填充或截斷為 sequence_length。輸出 dtype 可以透過 dtype 參數控制,該參數應為整數或字串類型。

參數

  • proto:SentencePiece proto 檔案的 string 路徑,或包含序列化 SentencePiece proto 的 bytes 物件。有關格式的更多詳細資訊,請參閱 SentencePiece 儲存庫
  • sequence_length:如果設定,輸出將轉換為密集張量,並填充/修剪,使所有輸出都為 sequence_length
  • add_bos:將句子開頭符號添加到結果中。
  • add_eos:將句子結尾符號添加到結果中。如果輸出長度超過指定的 sequence_length,符號始終會被截斷。

參考文獻

範例

從位元組。

def train_sentence_piece_bytes(ds, size):
    bytes_io = io.BytesIO()
    sentencepiece.SentencePieceTrainer.train(
        sentence_iterator=ds.as_numpy_iterator(),
        model_writer=bytes_io,
        vocab_size=size,
    )
    return bytes_io.getvalue()

# Train a sentencepiece proto.
ds = tf.data.Dataset.from_tensor_slices(["the quick brown fox."])
proto = train_sentence_piece_bytes(ds, 20)
# Tokenize inputs.
tokenizer = keras_hub.tokenizers.SentencePieceTokenizer(proto=proto)
ds = ds.map(tokenizer)

從檔案。

def train_sentence_piece_file(ds, path, size):
    with open(path, "wb") as model_file:
        sentencepiece.SentencePieceTrainer.train(
            sentence_iterator=ds.as_numpy_iterator(),
            model_writer=model_file,
            vocab_size=size,
        )

# Train a sentencepiece proto.
ds = tf.data.Dataset.from_tensor_slices(["the quick brown fox."])
proto = train_sentence_piece_file(ds, "model.spm", 20)
# Tokenize inputs.
tokenizer = keras_hub.tokenizers.SentencePieceTokenizer(proto="model.spm")
ds = ds.map(tokenizer)

[原始碼]

tokenize 方法

SentencePieceTokenizer.tokenize(inputs)

將字串的輸入張量轉換為輸出符號。

參數

  • inputs:輸入張量,或輸入張量的 dict/list/tuple。
  • *args:其他位置引數。
  • **kwargs:其他關鍵字引數。

[原始碼]

detokenize 方法

SentencePieceTokenizer.detokenize(inputs)

將符號轉換回字串。

參數

  • inputs:輸入張量,或輸入張量的 dict/list/tuple。
  • *args:其他位置引數。
  • **kwargs:其他關鍵字引數。

[原始碼]

get_vocabulary 方法

SentencePieceTokenizer.get_vocabulary()

取得分詞器詞彙表。


[原始碼]

vocabulary_size 方法

SentencePieceTokenizer.vocabulary_size()

取得分詞器詞彙表的整數大小。


[原始碼]

token_to_id 方法

SentencePieceTokenizer.token_to_id(token)

將字串符號轉換為整數 ID。


[原始碼]

id_to_token 方法

SentencePieceTokenizer.id_to_token(id)

將整數 ID 轉換為字串符號。