布隆过滤器

class BloomFilterer(mapped_triples: Tensor, error_rate: float = 0.001)[source]

基础类:Filterer

基于布隆过滤器的负三元组过滤器。

纯PyTorch,一个可以移动到GPU的适当模块,并支持批量计算。

另请参阅

初始化基于布隆过滤器的过滤器。

Parameters:
  • mapped_triples (Tensor) – 基于ID的三元组。

  • error_rate (float) – 期望的错误率。

方法总结

add(triples)

向布隆过滤器添加三元组。

contains(batch)

检查是否包含三元组。

num_bits(num[, error_rate])

确定所需的位数。

num_probes(num_elements, num_bits)

确定探测次数 / 哈希轮数。

probe(batch)

遍历探针的索引。

方法文档

add(triples: Tensor) None[source]

向布隆过滤器添加三元组。

Parameters:

三元组 (Tensor)

Return type:

contains(batch: Tensor) Tensor[source]

检查是否包含三元组。

Parameters:

batch (Tensor) – 形状 (batch_size, 3) 三元组的批次。

Returns:

形状: (batch_size,) 结果。False保证元素不包含在索引的三元组中。True可能是错误的。

Return type:

Tensor

static num_bits(num: int, error_rate: float = 0.01) int[source]

确定所需的位数。

Parameters:
  • num (int) – Bloom过滤器应存储的元素数量。

  • error_rate (float) – 期望的错误率。

Returns:

所需的位数。

Return type:

int

static num_probes(num_elements: int, num_bits: int)[source]

确定探测次数 / 哈希轮数。

Parameters:
  • num_elements (int) – 元素的数量。

  • num_bits (int) – 位数,即布隆过滤器的大小。

Returns:

哈希轮数。

probe(batch: Tensor) Iterable[Tensor][source]

遍历探针的索引。

Parameters:

batch (Tensor) – 形状: (batch_size, 3) 一批元素。

Yields:

第k轮的索引,形状:(batch_size,).

Return type:

Iterable[Tensor]