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
參數控制,該參數應為整數或字串類型。
參數
字串
路徑,或帶有序列化 SentencePiece proto 的 位元組
物件。有關格式的更多詳細資訊,請參閱 SentencePiece 儲存庫。sequence_length
。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)
將字串的輸入張量轉換為輸出標記。
參數
detokenize
方法SentencePieceTokenizer.detokenize(inputs)
將詞彙轉換回字串。
參數
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 轉換為字串詞彙。