从 Tensorflow 2 中的 tf.Tensor 中使用正则表达式提取字符串?
Extracting string with regex from a tf.Tensor in Tensorflow 2?
我在 TF2 中保存带有签名的 tf.keras 模型,以便通过 TFServing 为其提供服务。在签名函数中,我想用正则表达式提取一些实体。
我的输入是一个数据类型为 tf.string 的张量。我不能在其中使用 numpy(),导致“张量对象没有属性 numpy”。 tf.py_function() 在 TFServing 中也不可用。
所以我只剩下tensorflow操作了。我将如何提取带有模式的子字符串?
@tf.function
def serve_fn(input):
# Returns Today's date is . Tomorrow is another day. But I need 11/2020
output = tf.strings.regex_replace("Today's date is 11/2020. Tomorrow is another day.", pattern=r'[\d]{2}/[\d]{4}', rewrite=" ")
# model inference ...
return {'output': output}
那将 return 内容为“今天的日期。明天又是新的一天。”的张量。
模式会是什么样子,return只是日期?如果我没记错的话,tf.strings.regex_replace 使用不支持前瞻的 re2。是否还有其他解决方案?
提前致谢
您可以使用
tf.strings.regex_replace("Today's date is 11/2020. Tomorrow is another day.", pattern=r'.*?(\d{2}/\d{4}).*', rewrite=r'')
见RE2 regex demo。详情:
.*?(\d{2}/\d{4}).*
匹配除换行字符以外的 0 个或多个字符,尽可能少,(\d{2}/\d{4})
捕获 到第 1 组任意两个数字,/
然后是任意四位数字,然后将行的其余部分与 .*
匹配(贪婪地,尽可能多)
</code> 是对第 1 组值的引用。参见<a href="https://www.tensorflow.org/api_docs/python/tf/strings/regex_replace" rel="nofollow noreferrer"><code>regex_replace
reference:regex_rewrite
"支持反斜杠转义数字(</code>到<code>
)可以插入匹配相应括号组的文本。".
我在 TF2 中保存带有签名的 tf.keras 模型,以便通过 TFServing 为其提供服务。在签名函数中,我想用正则表达式提取一些实体。
我的输入是一个数据类型为 tf.string 的张量。我不能在其中使用 numpy(),导致“张量对象没有属性 numpy”。 tf.py_function() 在 TFServing 中也不可用。
所以我只剩下tensorflow操作了。我将如何提取带有模式的子字符串?
@tf.function
def serve_fn(input):
# Returns Today's date is . Tomorrow is another day. But I need 11/2020
output = tf.strings.regex_replace("Today's date is 11/2020. Tomorrow is another day.", pattern=r'[\d]{2}/[\d]{4}', rewrite=" ")
# model inference ...
return {'output': output}
那将 return 内容为“今天的日期。明天又是新的一天。”的张量。
模式会是什么样子,return只是日期?如果我没记错的话,tf.strings.regex_replace 使用不支持前瞻的 re2。是否还有其他解决方案?
提前致谢
您可以使用
tf.strings.regex_replace("Today's date is 11/2020. Tomorrow is another day.", pattern=r'.*?(\d{2}/\d{4}).*', rewrite=r'')
见RE2 regex demo。详情:
.*?(\d{2}/\d{4}).*
匹配除换行字符以外的 0 个或多个字符,尽可能少,(\d{2}/\d{4})
捕获 到第 1 组任意两个数字,/
然后是任意四位数字,然后将行的其余部分与.*
匹配(贪婪地,尽可能多)</code> 是对第 1 组值的引用。参见<a href="https://www.tensorflow.org/api_docs/python/tf/strings/regex_replace" rel="nofollow noreferrer"><code>regex_replace
reference:regex_rewrite
"支持反斜杠转义数字(</code>到<code>
)可以插入匹配相应括号组的文本。".