Skip to main content
A small spiral galaxy inside a small glass sphere

Pocket Dimension provides a memory-efficient, dense, random projection of sparse vectors. This random projection is used to take records {“id”: str, “features”: List[bytes], “counts”: List[int]}, convert them into sparse random vectors using scikit-learn’s FeatureHasher, and then project them down to lower dimensional dense vectors.

Pocket Dimension includes three vectorizer classes for this workflow:

  • TFVectorizer for term-frequency vectors

  • TFIDFVectorizer for term-frequency inverse-document-frequency vectors

  • BM25Vectorizer for BM25-style scoring and ranking-friendly vector weights

The vectorizers accept a count-min sketch via the cms_file argument, which may be a path to a saved sketch or an already instantiated sketch object. This keeps older code paths working while allowing in-memory reuse of a shared sketch.

When the very large sparse universe becomes too inhospitable, escape into a cozy pocket dimension.

Quick example

from sketchnu.countmin import CountMin
from pocket_dimension.vectorizer import BM25Vectorizer

records = [
    {"id": "one", "features": [b"apple", b"banana"], "counts": [2, 1]},
    {"id": "two", "features": [b"apple", b"cherry"], "counts": [1, 3]},
]

cms = CountMin("linear", width=200)
for rec in records:
    for feature, count in zip(rec["features"], rec["counts"]):
        cms.add(feature) # BM25 uses the number of documents a term appears in, not the total count
    cms.n_added_records[1] += 1  # increment the number of 'documents' added to the sketch

embedder = BM25Vectorizer(128, cms_file=cms)
X, ids = embedder(records)

Documentation

Documentation for the API and theoretical foundations of the algorithms can be found at https://mhendrey.github.io/pocket_dimension

Installation

Pocket Dimension may be install using pip:

pip install pocket_dimension

I’m working on a conda-forge version, but this uses pybloomfiltermmap3 which is currently only on PyPi.

Metadata

Release files for pocket_dimension 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pocket_dimension 0.3.0
File Size Uploaded
pocket_dimension-0.3.0.tar.gz 30.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pocket_dimension 0.3.0
File Interpreter ABI Platform
pocket_dimension-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 58.1 kB

Release files / pocket_dimension-0.3.0.tar.gz

Download URL pocket_dimension-0.3.0.tar.gz
Size 30.8 kB
Tags Source
SHA-256 checksum
How to use checksums
93c4d9e8c30c83fd521ad1ea1725e7a7c84aa5836700f628bc4f8cd86fc39592
BLAKE2b-256 checksum
How to use checksums
a7b93669d83845947cbb1fd31440f1e08154e30273174208af73bb17643970cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / pocket_dimension-0.3.0-py3-none-any.whl

Download URL pocket_dimension-0.3.0-py3-none-any.whl
Size 27.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3e28679a3b3d945bcf290b970fec83eea3a4ba274985c3039ac5c3a560a818d9
BLAKE2b-256 checksum
How to use checksums
09d4f2a9ddce51bfa4bb99a7e03cc74e31de93bef8e98558e72837c3f9b53dab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.3.1

2 release files

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page