Nvtext Jaccard#
- group Jaccard 指数
函数
-
std::unique_ptr<cudf::column> jaccard_index(cudf::strings_column_view const &input1, cudf::strings_column_view const &input2, 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())#
计算两个字符串列中各行之间的 Jaccard 相似度。
相似度是根据对应行中的字符串计算的,例如
output[row] = J(input1[row],input2[row])
。Jaccard 指数公式为 https://en.wikipedia.org/wiki/Jaccard_index
J = |A ∩ B| / |A ∪ B| where |A ∩ B| is number of common values between A and B and |x| is the number of unique values in x.
这里的计算通过将每个字符串视为文本(即句子、段落、文章),而不是要直接比较的单个单词或标记来比较字符串列。该算法对每个字符串应用一个滑动窗口(大小由
width
参数指定),以形成要比较的两列输入中各行内的标记集。这些子字符串本质上是字符 n-gram,用于计算该行的并集和交集。为了提高效率,子字符串使用默认的 MurmurHash32 进行哈希处理,以识别各行内的唯一性。一旦确定了该行的并集和交集大小,就会使用上述公式计算 Jaccard 指数并返回 float32 值。
input1 = ["the fuzzy dog", "little piggy", "funny bunny", "chatty parrot"] input2 = ["the fuzzy cat", "bitty piggy", "funny bunny", "silent partner"] r = jaccard_index(input1, input2) r is now [0.5, 0.15384616, 1.0, 0]
如果任一输入列的行为空,则该行的输出也将为空。
- 抛出:
std::invalid_argument – 如果
width < 2
或input1.size() != input2.size()
- 参数:
input1 – 用于与
input2
比较的字符串列input2 – 用于与
input1
比较的字符串列width – 用于应用子字符串的字符宽度
stream – 用于设备内存操作和内核启动的 CUDA 流
mr – 用于分配返回列的设备内存的设备内存资源
- 返回:
指数计算值
-
std::unique_ptr<cudf::column> jaccard_index(cudf::strings_column_view const &input1, cudf::strings_column_view const &input2, 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())#