Ad

SetSimilaritySearch: Efficient all-pairs set similarity, Python

SetSimilaritySearch efficiently performs all-pairs and query set similarity searches on large collections of sets in Python, demonstrating strong performance for ad-hoc computations.
Screenshot of ekzhu/SetSimilaritySearch homepage

SetSimilaritySearch facilitates efficient all-pairs and query set similarity searches in Python. The project addresses the computationally expensive problem of finding similar sets within a large collection. It implements a modified version of the All-Pairs Similarity Search algorithm outlined in the "Scaling Up All Pairs Similarity Search" paper. The implementation incorporates optimizations, such as position filter optimization, to improve performance, particularly when set sizes are small and fit in memory. It also details a command line tool for all_pairs computation and demonstrates its usage with various similarity functions.

This project offers a more performant alternative to approximate nearest neighbor search algorithms like MinHash LSH for small to medium sized sets, particularly when performing all-pairs similarity searches. It incorporates position filter optimization for faster computations. The code is designed for easy integration into existing data pipelines and provides clear and concise API for both all-pairs and query tasks. Command-line interface streamlines the all-pairs computation for large datasets.

  • All-Pairs Search: Efficiently computes similarity between all pairs of sets in a collection.
  • Query Search: Provides a fast way to identify sets similar to a given query set.
  • Jaccard Similarity: Supports Jaccard similarity as the primary similarity metric.
  • Command Line Interface: Offers a command-line tool for executing all-pairs similarity searches on large datasets.
  • Python Implementation: Provides a well-documented Python API for easy integration.
  • Performance Optimization: Implements position filter optimization for improved performance.
  • Multiple Similarity Functions: Supports Jaccard, Cosine, and Containment similarity functions.

The project is actively maintained, with regular updates and bug fixes. Recent commits indicate ongoing development and refinement of the core algorithm. The documentation is comprehensive, including examples for both all-pairs and query searches, and a command-line usage guide. The project benefits from a moderate community presence, with GitHub stars and forks indicating interest and usage.

SetSimilaritySearch benefits data scientists and engineers working with set-based data, such as recommendation systems, data analysis, and anomaly detection. It enables efficient similarity comparisons between sets, leading to improved performance in tasks like finding similar users, identifying related items, or detecting duplicate sets. It offers a more performant alternative to approximate methods when precise results are necessary and set sizes remain reasonable.

Languages:
Summarize:
Share:
Stars
603
Forks
43
Issues
8
Created
7 years ago
Commit
3 years ago
License
APACHE-2.0
Archived
No
Updated 15 days ago

Similar Repositories