1

我有带字符串的张量(tf.string),我想通过正则表达式拆分这些字符串并进行一些预处理。

例如我有功能

py_split(x):
    x = x.lower()
    x = re.split(r"(http:\/\/)|(https:\/\/)|(\W)", x)
    return x

我需要在 tensorflow-transform 图中使用它,以便将来与 tf serving 一起使用。

但是 TF 不允许我使用与 python 中的普通字符串相同的 tf.string。

如何在不使用 C++ 制作新的 TF op 的情况下解决我的问题?

PS我使用TensorFlow 1.13

4

1 回答 1

1

有点棘手,因为 TensorFlow(至少据我所知)没有正则表达式拆分功能。

如果有一个字符可以确保您的输入字符串不包含,您可以使用tf.strings.regex_replace()and做一个稍微混乱的解决方法tf.strings.split()。我们首先使用regex_replacein order 用我们的特殊字符替换匹配,然后使用splitsplit 特殊字符

例如,如果我们可以确定我们的输入字符串永远不会包含 char |,那么我们可以进行如下操作:

def split(x):
  x = tf.strings.regex_replace(x, "(http:\/\/)|(https:\/\/)|(\W)", "|")
  return tf.strings.split(tf.expand_dims(x, 0), '|').values

所以,split("http://www.bbc.co.uk")比如说,给我们:

[b'', b'www', b'bbc', b'co', b'uk']
于 2019-06-16T10:37:37.013 回答