Nvtext 编辑距离#

group 编辑 距离

函数

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

计算两个字符串列中各个字符串的编辑距离。

output[i]input[i]targets[i] 之间的编辑距离。此编辑距离计算使用 Levenshtein 算法,详见此处文档: https://www.cuelogic.com/blog/the-levenshtein-algorithm

Example:
s = ["hello", "", "world"]
t = ["hallo", "goodbye", "world"]
d = edit_distance(s, t)
d is now [1, 7, 0]

inputtargets 中的任何空值条目将被忽略,编辑距离计算将视空值条目为空字符串。

targets.size() 必须等于 input.size(),除非 targets.size()==1。在这种情况下,所有 input 都将与单个 targets[0] 字符串进行计算。

抛出:

cudf::logic_error – 如果 targets.size() != input.size()targets.size() != 1

参数:
  • input – 输入字符串的字符串列

  • targets – 用于计算与 input 编辑距离的字符串

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

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

返回:

包含编辑距离值的新列表列

std::unique_ptr<cudf::column> edit_distance_matrix(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())#

计算输入列中所有字符串之间的编辑距离。

这使用 Levenshtein 算法计算两个字符串之间的编辑距离,详见此处文档: https://www.cuelogic.com/blog/the-levenshtein-algorithm

输出本质上是一个 input.size() x input.size() 的整数方阵。对角线 row == col 上的所有值都为 0,因为两个相同字符串的编辑距离为零。对角线上方的值反映在下方,因为编辑距离计算也是可交换的。

Example:
s = ["hello", "hallo", "hella"]
d = edit_distance_matrix(s)
d is now [[0, 1, 1],
          [1, 0, 2]
          [1, 2, 0]]

input 中的空值条目将被忽略,编辑距离计算将视空值条目为空字符串。

输出是一个大小为 input.size() 的列表列,其中每个列表项包含 input.size() 个元素。

抛出:

cudf::logic_error – 如果 strings.size() == 1

参数:
  • input – 输入字符串的字符串列

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

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

返回:

包含编辑距离值的新列表列