Advanced Chunk Processing Library 0.2.0
A comprehensive C++ library for advanced data chunking strategies and processing operations
Loading...
Searching...
No Matches
chunk_processing::SimilarityChunkingStrategy< T > Class Template Reference

#include <chunk_strategy_implementations.hpp>

+ Inheritance diagram for chunk_processing::SimilarityChunkingStrategy< T >:
+ Collaboration diagram for chunk_processing::SimilarityChunkingStrategy< T >:

Public Member Functions

 SimilarityChunkingStrategy (double threshold)
 
std::vector< std::vector< T > > apply (const std::vector< T > &data) const override
 

Private Member Functions

double calculate_similarity (const T &a, const T &b) const
 

Private Attributes

double similarity_threshold_
 

Detailed Description

template<typename T>
class chunk_processing::SimilarityChunkingStrategy< T >

Definition at line 38 of file chunk_strategy_implementations.hpp.

Constructor & Destructor Documentation

◆ SimilarityChunkingStrategy()

template<typename T >
chunk_processing::SimilarityChunkingStrategy< T >::SimilarityChunkingStrategy ( double  threshold)
inlineexplicit

Member Function Documentation

◆ apply()

template<typename T >
std::vector< std::vector< T > > chunk_processing::SimilarityChunkingStrategy< T >::apply ( const std::vector< T > &  data) const
inlineoverridevirtual

Implements chunk_processing::ChunkStrategy< T >.

Definition at line 45 of file chunk_strategy_implementations.hpp.

45 {
46 std::vector<std::vector<T>> result;
47 if (data.empty())
48 return result;
49
50 std::vector<T> current_chunk;
51 for (const auto& value : data) {
52 if (!current_chunk.empty() &&
53 calculate_similarity(value, current_chunk.back()) < similarity_threshold_) {
54 result.push_back(current_chunk);
55 current_chunk.clear();
56 }
57 current_chunk.push_back(value);
58 }
59 if (!current_chunk.empty()) {
60 result.push_back(current_chunk);
61 }
62 return result;
63 }

References chunk_processing::SimilarityChunkingStrategy< T >::calculate_similarity(), and chunk_processing::SimilarityChunkingStrategy< T >::similarity_threshold_.

◆ calculate_similarity()

template<typename T >
double chunk_processing::SimilarityChunkingStrategy< T >::calculate_similarity ( const T &  a,
const T &  b 
) const
inlineprivate

Definition at line 66 of file chunk_strategy_implementations.hpp.

66 {
67 return 1.0 / (1.0 + std::abs(static_cast<double>(a) - static_cast<double>(b)));
68 }

Referenced by chunk_processing::SimilarityChunkingStrategy< T >::apply().

Member Data Documentation

◆ similarity_threshold_

template<typename T >
double chunk_processing::SimilarityChunkingStrategy< T >::similarity_threshold_
private

The documentation for this class was generated from the following file: