如何对字符串张量执行正则表达式操作?通常,我只会使用python字符串,但在使用Tensorflow服务时,我需要输入为字符串张量。所以我创建了一个字符串占位符,我只是在图中注入另一个图层,我在其中占用了占位符并准备好将它传递给模型。
我已经看过使用py_func
,但我仍然无法对类似字节的对象执行模式操作。
有没有办法在张量上执行这些操作?我不能在占位符上执行eval(),因为只有在加载并运行savedModel时才会输入数据。
我一直用于测试的代码:
def remove_urls(vTEXT):
vTEXT = re.sub(r'(https|http)?:\/\/(\w|\.|\/|\?|\=|\&|\%)*\b', 'url', vTEXT, flags=re.MULTILINE)
return(vTEXT)
input_string_ph = tf.constant("This is string https:www.someurl.com")
input_string_lower = tf.py_func(lambda x: x.lower(), [input_string_ph], tf.string, stateful=False)
# input_string_no_url = tf.py_func(lambda x: remove_urls(x), [input_string_lower], tf.string, stateful=False)
sess = tf.InteractiveSession()
print (input_string_no_url.eval())
答案 0 :(得分:0)
似乎字符串张量返回一个字节值而不是py_func
中的字符串值,因此在remove_urls
内,您应该使用decode
def remove_urls(vTEXT):
vTEXT = vTEXT.decode('utf-8')
vTEXT = re.sub(r'(https|http)?:\/\/(\w|\.|\/|\?|\=|\&|\%)*\b', 'url', vTEXT, flags=re.MULTILINE)
return(vTEXT)
答案 1 :(得分:0)
例如您可以像这样使用apply
运算符从字符串中删除子字符串并检查是否成功:
!apply(dframe[-1] > 1, 2, any)