2019 年 6 月 10 日 — 作者:Robby Neale,软件工程师
TensorFlow 提供了大量操作,这些操作对从图像和视频构建模型非常有用。但是,许多模型都从文本开始,并且从这些模型构建的语言模型在将文本馈送到模型之前需要一些预处理。例如,文本分类教程 使用 IMDB 集,从已经转换为整数 ID 的文本数据开始…
tokenizer = tensorflow_text.WhitespaceTokenizer()
tokens = tokenizer.tokenize(['everything not saved will be lost.', u'Sad☹'.encode('UTF-8')])
print(tokens.to_list())
[['everything', 'not', 'saved', 'will', 'be', 'lost.'], ['Sad\xe2\x98\xb9']]
初始版本还包含一个 Unicode 脚本分词器,它根据 Unicode 脚本边界来分割 UTF-8 字符串。Unicode 脚本是字符和符号的集合,这些字符和符号在历史上具有相关的语言派生。查看国际组件 for Unicode (ICU) 的 UScriptCode 值,了解完整的枚举集。值得注意的是,这类似于空格分词器,最明显的区别是它会将标点符号 USCRIPT_COMMON
从语言文本(例如 USCRIPT_LATIN
、USCRIPT_CYRILLIC
等)中分离出来。tokenizer = tensorflow_text.UnicodeScriptTokenizer()
tokens = tokenizer.tokenize(['everything not saved will be lost.', u'Sad☹'.encode('UTF-8')])
print(tokens.to_list())
[['everything', 'not', 'saved', 'will', 'be', 'lost', '.'], ['Sad', '\xe2\x98\xb9']]
TF.Text 发布中提供的最后一个分词器是 WordPiece 分词器。它是一个无监督文本分词器,需要预定的词汇表才能将标记进一步拆分为子词(前缀和后缀)。WordPiece 通常用于 BERT 模型。def _CreateTable(vocab, num_oov=1):
init = tf.lookup.KeyValueTensorInitializer(
vocab,
tf.range(tf.size(vocab, out_type=tf.int64), dtype=tf.int64),
key_dtype=tf.string,
value_dtype=tf.int64)
return tf.lookup.StaticVocabularyTable(
init, num_oov, lookup_key_dtype=tf.string)
vocab_table = _CreateTable(["great", "they", "the", "##'", "##re", "##est"])
tokens = [["they're", "the", "greatest"]]
tokenizer = tensorflow_text.WordpieceTokenizer(
vocab_table, token_out_type=tf.string)
result = tokenizer.tokenize(tokens)
print(result.to_list())
[[['they', "##'", '##re'], ['the'], ['great', '##est']]]
这些分词器都对 UTF-8 编码字符串进行分词,并且包含一个选项用于获取原始字符串的字节偏移量。这允许调用者知道为每个创建的标记创建的原始字符串中的字节对齐。tokenizer = tensorflow_text.UnicodeScriptTokenizer()
(tokens, offset_starts, offset_limits) = tokenizer.tokenize_with_offsets(['everything not saved will be lost.', u'Sad☹'.encode('UTF-8')])
print(tokens.to_list())
print(offset_starts.to_list())
print(offset_limits.to_list())
[['everything', 'not', 'saved', 'will', 'be', 'lost', '.'], ['Sad', '\xe2\x98\xb9']]
[[0, 11, 15, 21, 26, 29, 33], [0, 3]]
[[10, 14, 20, 25, 28, 33, 34], [3, 6]]
pip install tensorflow-text
2019 年 6 月 10 日 — 作者:Robby Neale,软件工程师
TensorFlow 提供了大量操作,这些操作对从图像和视频构建模型非常有用。但是,许多模型都从文本开始,并且从这些模型构建的语言模型在将文本馈送到模型之前需要一些预处理。例如,文本分类教程 使用 IMDB 集,从已经转换为整数 ID 的文本数据开始…