Немного сложно, потому что TensorFlow (по крайней мере, насколько мне известно) не имеет функции разделения на регулярные выражения.
Если есть символ, который вы можете быть уверены, что ваши входные строки не будут содержать, вы можете сделатьнемного грязный обходной путь, используя tf.strings.regex_replace()
и tf.strings.split()
.Сначала мы используем regex_replace
, чтобы заменить совпадение нашим специальным символом, а затем split
, чтобы разделить специальный символ
Например, если мы можем быть уверены, что наши входные строки никогда не будут содержать символ |
тогда мы могли бы поступить следующим образом:
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']