Keras 3 API 文件 / KerasNLP / 分詞器 / SentencePieceTokenizer

SentencePieceTokenizer

[來源]

SentencePieceTokenizer 類別

keras_nlp.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 參數控制,該參數應為整數或字串類型。

參數

  • proto:SentencePiece proto 檔案的 字串 路徑,或帶有序列化 SentencePiece proto 的 位元組 物件。有關格式的更多詳細資訊,請參閱 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_nlp.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_nlp.tokenizers.SentencePieceTokenizer(proto="model.spm")
ds = ds.map(tokenizer)

[來源]

tokenize 方法

SentencePieceTokenizer.tokenize(inputs)

將字串的輸入張量轉換為輸出標記。

參數

  • inputs:輸入張量,或輸入張量的字典/清單/元組。
  • *args:其他位置參數。
  • **kwargs:額外的關鍵字引數。

[來源]

detokenize 方法

SentencePieceTokenizer.detokenize(inputs)

將詞彙轉換回字串。

參數

  • inputs:輸入張量,或輸入張量的字典/清單/元組。
  • *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 轉換為字串詞彙。