1#ifndef BMALGO_SIMILARITY__H__INCLUDED__
2#define BMALGO_SIMILARITY__H__INCLUDED__
25#ifndef BM__H__INCLUDED__
28# error missing include (bm.h or bm64.h)
43template <
typename SO,
unsigned DMD_SZ,
typename IDX_VALUE,
typename SValue,
typename SFunc>
63 for (
size_t i = 0; i < DMD_SZ; ++i)
69 const SO* so2, IDX_VALUE i2,
73 for (
size_t i = 0; i < DMD_SZ; ++i)
85 for (
size_t i = 0; i < DMD_SZ; ++i)
93 for (
size_t i = 0; i < DMD_SZ; ++i)
135template<
class SDESCR>
161 sdescr.set_similarity(d);
189template<
class SIMBATCH,
class SV>
193 size_t planes = sv.get_bmatrix().rows();
194 sbatch.reserve((planes * planes) / 2);
202 for (
unsigned i = 0; i < planes; ++i)
206 for (
unsigned j = i+1; j < planes; ++j)
209 if (bv2 && bv1 != bv2)
210 sbatch.push_back(
typename SIMBATCH::similaruty_descriptor_type(bv1, i, bv2, j, &dmd[0]));
Bit manipulation primitives (internal)
distance_metric_descriptor dmd_[DMD_SZ]
IDX_VALUE get_second_idx() const
similarity_descriptor(const SO *so1, IDX_VALUE i1, const SO *so2, IDX_VALUE i2, const distance_metric_descriptor *dmd_ptr)
similarity_descriptor(const similarity_descriptor &sd)
SValue similarity() const
similarity_descriptor(const SO *so1, const SO *so2, const distance_metric_descriptor *dmd_ptr)
void set_metric(size_t i, distance_metric metric)
similarity_descriptor & operator=(const similarity_descriptor &sd)
const SO * get_first() const
const SO * get_second() const
SValue similarity_value_type
void set_similarity(SValue s)
SO similarity_object_type
distance_metric_descriptor * distance_begin()
distance_metric_descriptor * distance_end()
IDX_VALUE get_first_idx() const
bool operator>(const similarity_descriptor &sd) const
void distance_operation(const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end) BMNOEXCEPT
Distance computing template function.
distance_metric
Distance metrics codes defined for vectors A and B.
@ COUNT_AND
(A & B).count()
@ COUNT_OR
(A | B).count()
void build_jaccard_similarity_batch(SIMBATCH &sbatch, const SV &sv)
Utility function to build jaccard similarity batch for sparse_vector<>
Distance metric descriptor, holds metric code and result.
std::vector< SDESCR > descr_vect_
SDESCR::similarity_object_type similarity_object_type
std::vector< SDESCR > vector_type
void push_back(const similaruty_descriptor_type &sdt)
SDESCR similaruty_descriptor_type
void calculate()
run the similarity calculation using distance metrics engine
SDESCR::similarity_value_type similarity_value_type
SDESCR::similarity_functor similarity_functor