KerasHub: 预训练模型 / API 文档 / 分词器 / 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 是文件名列表,则文件格式必须是纯文本文件,并且文本将在训练期间逐行读取。

参数

  • data:一个 tf.data.Dataset,或文件名列表。
  • vocabulary_size:int。要训练的词汇表的最大大小。
  • model_type:str。模型算法必须是 "unigram""bpe""word""char" 之一。默认为 "unigram"
  • proto_output_file:str。如果提供,它将用作传递给模型写入器的 model_file。如果为 None,则 model_file 将是 io.BytesIO 对象。默认为 None
  • lowercase:bool。如果为 True,则在分词之前将输入文本转换为小写。默认为 False

返回

一个包含序列化 SentencePiece proto 的 bytes 对象,如果提供了 proto_output_file 则为 None

示例

基本用法(来自数据集)。

>>> 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)