当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.strings.ngrams用法及代码示例


基于 data 创建一个 n-grams 的张量。

用法

tf.strings.ngrams(
    data, ngram_width, separator=' ', pad_values=None, padding_width=None,
    preserve_short_sequences=False, name=None
)

参数

  • data 包含 ngram 的源数据的张量或 RaggedTensor。
  • ngram_width 要创建的 ngram 的宽度。如果这是一个列表或元组,则 op 将按列表顺序返回所有指定元组的 ngram。值必须是大于 0 的非张量整数。
  • separator ngram 元素之间使用的分隔符字符串。必须是字符串常量,而不是张量。
  • pad_values (left_pad_value、right_pad_value) 的元组、单个字符串或无。如果为 None,则不会添加任何填充;如果是单个字符串,则该字符串将用于左右填充。值必须是 Python 字符串。
  • padding_width 如果设置,padding_width填充值将添加到每个序列的两侧。默认为ngram_width-1。必须大于
    1. (请注意,无论该值如何,都不会填充 1-gram。)
  • preserve_short_sequences 如果为真,则确保为每个输入序列生成至少一个 ngram。特别是,如果输入序列比 min(ngram_width) + 2*pad_width 短,则生成包含整个序列的单个 ngram。如果为 false,则不会为这些短输入序列生成 ngram。
  • name 操作名称。

返回

  • ngram 的 RaggedTensor。如果 data.shape=[D1...DN, S] ,则 output.shape=[D1...DN, NUM_NGRAMS] ,其中 NUM_NGRAMS=S-ngram_width+1+2*padding_width

抛出

  • TypeError 如果 pad_values 设置为无效类型。
  • ValueError 如果 pad_values , padding_widthngram_width 设置为无效值。

基于 data 创建一个 n-grams 的张量。 n-grams 是通过使用 separatordata 的内轴连接 width 相邻字符串的窗口来创建的。

如果需要,可以使用pad_values 参数在序列的开始和结束处填充输入数据。如果设置,pad_values 应该包含字符串元组或单个字符串;元组的第 0 个元素将用于填充序列的左侧,元组的第一个元素将用于填充序列的右侧。 padding_width 参数控制每边添加多少填充值;它默认为 ngram_width-1

如果此操作被配置为没有填充,或者如果它被配置为添加填充且 padding_width 设置为小于 ngram_width-1,则序列或序列加填充可能小于 ngram宽度。在这种情况下,不会为该序列生成任何 ngram。这可以通过设置 preserve_short_sequences 来防止,这将导致操作始终为每个非空序列生成至少一个 ngram。

例子:

tf.strings.ngrams(["A", "B", "C", "D"], 2).numpy()
array([b'A B', b'B C', b'C D'], dtype=object)
tf.strings.ngrams(["TF", "and", "keras"], 1).numpy()
array([b'TF', b'and', b'keras'], dtype=object)

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.strings.ngrams。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。