Nvtext 标准化#

group nvtext_normalize

函数

std::unique_ptr<cudf::column> normalize_spaces(cudf::strings_column_view const &input, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过规范化输入列中每个字符串的空白,返回一个新的字符串列。

规范化字符串会将任意数量的空白字符(字符代码点 <= ' ')替换为单个空格 ' ',并去除字符串开头和结尾的空白。

Example:
s = ["a b", "  c  d\n", "e \t f "]
t = normalize_spaces(s)
t is now ["a b","c d","e f"]

在第 i 行的空输入元素会在输出列的第 i 行产生一个相应的空条目。

Parameters:
  • input – 要标准化的字符串列

  • mr – 用于分配返回列的设备内存的设备内存资源

  • stream – 用于设备内存操作和内核启动的CUDA流

Returns:

规范化字符串的新字符串列。

std::unique_ptr<cudf::column> normalize_characters(cudf::strings_column_view const &input, bool do_lower_case, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

对字符串字符进行规范化以便进行分词。

这使用了内置在nvtext::subword_tokenize函数中的标准化器,其中包括:

  • 在标点符号(Unicode类别以“P”开头)以及某些ASCII符号(如“^”和“$”)周围添加填充

  • CJK Unicode块字符周围添加填充

  • 将空白字符(例如 "\t", "\n", "\r")更改为空格 " "

  • 移除控制字符(Unicode类别“Cc”和“Cf”)

这里的填充过程在字符前后各添加一个空格。关于unicode类别的详细信息可以在这里找到:https://unicodebook.readthedocs.io/unicode.html#categories

如果 do_lower_case = true,小写化也会去除重音符号。重音符号无法从大写字符中去除而不进行小写化,而小写化也无法在不去除重音符号的情况下进行。然而,如果重音字符已经是小写,则只去除重音符号。

s = ["éâîô\teaio", "ĂĆĖÑÜ", "ACENU", "$24.08", "[a,bb]"]
s1 = normalize_characters(s,true)
s1 is now ["eaio eaio", "acenu", "acenu", " $ 24 . 08", " [ a , bb ] "]
s2 = normalize_characters(s,false)
s2 is now ["éâîô eaio", "ĂĆĖÑÜ", "ACENU", " $ 24 . 08", " [ a , bb ] "]

在第 i 行的空输入元素会在输出列的第 i 行产生一个相应的空条目。

此函数需要大约16倍于输入字符串列中字符字节数的工作内存。

Parameters:
  • input – 要标准化的输入字符串

  • do_lower_case – 如果为true,大写字符将转换为小写,并且这些字符的重音将被去除。如果为false,重音和大写字符将不会被转换。

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 分配任何返回对象的内存资源

Returns:

标准化字符串列