Nvtext Minhash#

MinHashing

函数

std::unique_ptr<cudf::column> minhash(cudf::strings_column_view const &input, uint32_t seed, cudf::device_span<uint32_t const> parameter_a, cudf::device_span<uint32_t const> parameter_b, cudf::size_type width, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回每个字符串的 Minhash 值。

此函数使用 MurmurHash3_x86_32 作为哈希算法。

输入字符串首先使用给定的 seedwidth 个字符的子字符串进行哈希。然后使用以下公式将这些哈希值与 ab 参数值组合:

max_hash = max of uint32
mp = (1 << 61) - 1
hv[i] = hash value of a substring at i
pv[i] = ((hv[i] * a[i] + b[i]) % mp) & max_hash

此计算在每个子字符串上执行,并按如下方式计算最小值:

mh[j,i] = min(pv[i]) for all substrings in row j
                     and where i=[0,a.size())

任何空行条目都会导致相应的空输出行。

抛出:
  • std::invalid_argument – 如果宽度 < 2

  • std::invalid_argument – 如果 parameter_a 为空

  • std::invalid_argument – 如果 parameter_b.size() != parameter_a.size()

  • std::overflow_error – 如果 parameter_a.size() * input.size() 超过列大小限制

参数:
  • input – 用于计算 Minhash 的字符串列

  • seed – 用于哈希算法的种子值

  • parameter_a – 用于排列计算的值

  • parameter_b – 用于排列计算的值

  • width – 每行要哈希的子字符串的字符宽度

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

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

返回:

每种子的每个字符串的 Minhash 值列表列

std::unique_ptr<cudf::column> minhash64(cudf::strings_column_view const &input, uint64_t seed, cudf::device_span<uint64_t const> parameter_a, cudf::device_span<uint64_t const> parameter_b, cudf::size_type width, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回每个字符串的 Minhash 值。

此函数使用 MurmurHash3_x64_128 作为哈希算法。

输入字符串首先使用给定的 seedwidth 个字符的子字符串进行哈希。然后使用以下公式将这些哈希值与 ab 参数值组合:

max_hash = max of uint64
mp = (1 << 61) - 1
hv[i] = hash value of a substring at i
pv[i] = ((hv[i] * a[i] + b[i]) % mp) & max_hash

此计算在每个子字符串上执行,并按如下方式计算最小值:

mh[j,i] = min(pv[i]) for all substrings in row j
                     and where i=[0,a.size())

任何空行条目都会导致相应的空输出行。

抛出:
  • std::invalid_argument – 如果宽度 < 2

  • std::invalid_argument – 如果 parameter_a 为空

  • std::invalid_argument – 如果 parameter_b.size() != parameter_a.size()

  • std::overflow_error – 如果 parameter_a.size() * input.size() 超过列大小限制

参数:
  • input – 用于计算 Minhash 的字符串列

  • seed – 用于哈希算法的种子值

  • parameter_a – 用于排列计算的值

  • parameter_b – 用于排列计算的值

  • width – 每行要哈希的子字符串的字符宽度

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

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

返回:

每种子的每个字符串的 Minhash 值列表列

std::unique_ptr<cudf::column> minhash_ngrams(cudf::lists_column_view const &input, cudf::size_type ngrams, uint32_t seed, cudf::device_span<uint32_t const> parameter_a, cudf::device_span<uint32_t const> parameter_b, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回每个输入行的 Minhash 值。

此函数使用 MurmurHash3_x86_32 作为哈希算法。

输入行首先使用给定的 seed 在字符串的 ngrams 滑动窗口上进行哈希。然后使用以下公式将这些哈希值与 ab 参数值组合:

max_hash = max of uint32
mp = (1 << 61) - 1
hv[i] = hash value of a ngrams at i
pv[i] = ((hv[i] * a[i] + b[i]) % mp) & max_hash

此计算在每组 ngrams 上执行,并按如下方式计算最小值:

mh[j,i] = min(pv[i]) for all ngrams in row j
                     and where i=[0,a.size())

任何空行条目都会导致相应的空输出行。

抛出:
  • std::invalid_argument – 如果 ngrams < 2

  • std::invalid_argument – 如果 parameter_a 为空

  • std::invalid_argument – 如果 parameter_b.size() != parameter_a.size()

  • std::overflow_error – 如果 parameter_a.size() * input.size() 超过列大小限制

参数:
  • input – 用于计算 Minhash 的字符串列

  • ngrams – 每行内要哈希的字符串数量

  • seed – 用于哈希算法的种子值

  • parameter_a – 用于排列计算的值

  • parameter_b – 用于排列计算的值

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

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

返回:

每种子的每个字符串的 Minhash 值列表列

std::unique_ptr<cudf::column> minhash64_ngrams(cudf::lists_column_view const &input, cudf::size_type ngrams, uint64_t seed, cudf::device_span<uint64_t const> parameter_a, cudf::device_span<uint64_t const> parameter_b, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回每个输入行的 Minhash 值。

此函数使用 MurmurHash3_x64_128 作为哈希算法。

输入行首先使用给定的 seed 在字符串的 ngrams 滑动窗口上进行哈希。然后使用以下公式将这些哈希值与 ab 参数值组合:

max_hash = max of uint64
mp = (1 << 61) - 1
hv[i] = hash value of a ngrams at i
pv[i] = ((hv[i] * a[i] + b[i]) % mp) & max_hash

此计算在每组 ngrams 上执行,并按如下方式计算最小值:

mh[j,i] = min(pv[i]) for all ngrams in row j
                     and where i=[0,a.size())

任何空行条目都会导致相应的空输出行。

抛出:
  • std::invalid_argument – 如果 ngrams < 2

  • std::invalid_argument – 如果 parameter_a 为空

  • std::invalid_argument – 如果 parameter_b.size() != parameter_a.size()

  • std::overflow_error – 如果 parameter_a.size() * input.size() 超过列大小限制

参数:
  • input – 用于计算 Minhash 的列表字符串列

  • ngrams – 每行内要哈希的字符串数量

  • seed – 用于哈希算法的种子值

  • parameter_a – 用于排列计算的值

  • parameter_b – 用于排列计算的值

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

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

返回:

每种子的每个字符串的 Minhash 值列表列