如何使用Tensorflow和Python获取句子中每个单词的代码点?


要获取句子中每个单词的代码点,首先检查句子是否是单词的开头。然后,检查字符索引是否从扁平化字符列表(来自所有句子)中单词的特定索引开始。验证后,使用以下方法获取每个单词中每个字符的代码点。

脚本标识符有助于确定单词边界以及应添加位置。在句子的开头以及每个脚本与其前一个字符不同的字符处添加单词边界。可以使用起始偏移量构建RaggedTensor。这个RaggedTensor将包含所有批次中的单词列表。

阅读更多: 什么是TensorFlow以及Keras如何与TensorFlow一起创建神经网络?

让我们了解如何使用Python表示Unicode字符串,以及如何使用Unicode等价物来操作它们。首先,我们借助Unicode等价的标准字符串操作,根据脚本检测将Unicode字符串分成标记。

我们使用Google Colaboratory运行以下代码。Google Colab或Colaboratory有助于通过浏览器运行Python代码,无需任何配置,并可免费访问GPU(图形处理单元)。Colaboratory构建于Jupyter Notebook之上。

print("Check if sentence is the start of the word")
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("Check if index of character starts from specific index of word in flattened list of characters from all sentences")
word_starts = tf.squeeze(tf.where(sentence_char_starts_word.values), axis=1)
print(word_starts)
print("Get the code point of every character in every word")
word_char_codepoint = tf.RaggedTensor.from_row_starts(
   values=sentence_char_codepoint.values,
   row_starts=word_starts)
print(word_char_codepoint)

代码来源:https://tensorflowcn.cn/tutorials/load_data/unicode

输出

Check if sentence is the start of the word
Check if index of character starts from specific index of word in flattened list of characters from all sentences
tf.Tensor([ 0   5   7 12 13 15], shape=(6,), dtype=int64)
Get the code point of every character in every word
<tf.RaggedTensor [[72, 101, 108, 108, 111], [44, 32], [116, 104, 101, 114, 101], [46], [19990, 30028], [12371, 12435, 12395, 12385, 12399]]>

解释

  • 脚本标识符有助于确定应在何处添加单词边界。
  • 在每个句子的开头以及每个脚本与其前一个字符不同的字符处添加单词边界。
  • 接下来,可以使用这些起始偏移量来构建RaggedTensor。
  • 此RaggedTensor包含所有批次中的单词列表。

更新于: 2021年2月20日

83 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告