如何使用Tensorflow和Python来获取句子中每个单词的代码点?
要获取句子中每个单词的代码点,首先要检查句子是否是单词的开头。然后,检查字符索引是否从所有句子的字符列表的特定索引处开始。一旦验证了这一点,就可使用以下方法获取每个单词中每个字符的代码点。
脚本标识符可帮助确定单词边界和要添加的位置。在句子的开头和每个字符的脚本与其前一个字符不同的位置上添加单词边界。起始偏移量可用于构建一个RaggedTensor。此RaggedTensor将包含来自所有批次的单词列表。
让我们了解如何使用Python表示Unicode字符串,并使用Unicode等效项操纵它们。首先,我们将Unicode字符串根据脚本检测分成标记,使用标准字符串操作的Unicode等效项。
我们使用Google Colaboratory运行下面的代码。Google Colab或Colaboratory可在浏览器上运行Python代码,不需要任何配置,并且可免费访问GPU(图形处理单元)。Colaboratory是基于Jupyter Notebook构建的。
print("检查句子是否是单词的开头")
sentence_char_starts_word = tf.concat(
[tf.fill([sentence_char_script.nrows(), 1], True),
tf.not_equal(sentence_char_script[:, 1:], sentence_char_script[:, :-1])],
axis=1)
print("检查字符索引是否从所有句子的字符列表的特定索引处开始")
word_starts = tf.squeeze(tf.where(sentence_char_starts_word.values), axis=1)
print(word_starts)
print("获取每个单词中每个字符的代码点")
word_char_codepoint = tf.RaggedTensor.from_row_starts(
values=sentence_char_codepoint.values,
row_starts=word_starts)
print(word_char_codepoint)
代码来源:https://www.tensorflow.org/tutorials/load_data/unicode
输出
检查句子是否是单词的开头
检查字符索引是否从所有句子的字符列表的特定索引处开始
tf.Tensor([ 0 5 7 12 13 15], shape=(6,), dtype=int64)
获取每个单词中每个字符的代码点
<tf.RaggedTensor [[72, 101, 108, 108, 111], [44, 32], [116, 104, 101, 114, 101], [46], [19990, 30028], [12371, 12435, 12395, 12385, 12399]]>
解释
- 脚本标识符有助于确定单词边界应添加的位置。
- 在每个句子的开头以及每个字符的脚本与其前一个字符不同的位置上添加单词边界。
- 接下来,这些起始偏移量可以用于构建RaggedTensor。
- 此RaggedTensor包含所有批次的单词列表。
更多Python相关文章,请阅读:Python 教程
极客教程