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: 整数。要训练的词汇表的最大大小。
  • model_type: 字符串。模型算法必须是 "unigram""bpe""word""char" 之一。默认为 "unigram"
  • proto_output_file: 字符串。如果提供,它将用作传递给 model_writer 的 model_file。如果为 None,则 model_file 将是 io.BytesIO 对象。默认为 None
  • lowercase: 布尔值。如果为 True,则输入文本将在分词之前转换为小写。默认为 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)