Skip to main content

Measure similarity in a many-to-many fashion

Project description

Mesi

Lint and Test codecov PyPI PyPI - Downloads License


Mesi is a tool to measure the similarity in a many-to-many fashion of long-form documents like Python source code or technical writing. The output can be useful in determining which of a collection of files are the most similar to each other.

Installation

Python 3.9+ and pipx are recommended, although Python 3.6+ and/or pip will also work.

pipx install mesi

If you'd like to test out Mesi before installing it, use the remote execution feature of pipx, which will temporarily download Mesi and run it in an isolated virtual environment.

pipx run mesi --help

Usage

For a directory structure that looks like:

projects
├── project-one
│   ├── pyproject.toml
│   ├── deliverables
│   │   └── python_program.py
│   └── README.md
├── project-two
│   ├── pyproject.toml
│   ├── deliverables
│   │   └── python_program.py
│   └── README.md
│

where similarity should be measured between each project's deliverables/python_program.py file, run the command:

mesi projects/*/deliverables/python_program.py

A lower distance in the produced table equates to a higher degree of similarity.

See the help menu (mesi --help) for additional options and configuration.

Algorithms

There are many algorithms to choose from when comparing string similarity! Mesi implements all the algorithms provided by TextDistance. In general levenshtein is never a bad choice, which is why it is the default.

Table Formats

Mesi uses tabulate for table formatting. The table format can be configured with the --table-format option to one of the formats listed in tabulate's documentation.

Dependencies

Mesi uses two primary dependencies for text similarity calculation: polyleven, and TextDistance. Polyleven is the default, as its singular implementation of Levenshtein distance can be faster in most situations. However, if a different edit distance algorithm is requested, TextDistance's implementations will be used.

Bugs/Requests

Please use the GitHub issue tracker to submit bugs or request new features, options, or algorithms.

License

Distributed under the terms of the GPL v3 license, mesi is free and open source software.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mesi-1.1.0.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

mesi-1.1.0-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file mesi-1.1.0.tar.gz.

File metadata

  • Download URL: mesi-1.1.0.tar.gz
  • Upload date:
  • Size: 21.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.0a2 CPython/3.9.9 Linux/5.11.0-1021-azure

File hashes

Hashes for mesi-1.1.0.tar.gz
Algorithm Hash digest
SHA256 82d90b7ad224d46c8ec94f1882446fcd2088ef10f9f9ec2861f2a34f526e6fe3
MD5 bafca306840a21c7c89e29076afdef32
BLAKE2b-256 a420d29f2bee542c3f765f5c36cc7ba5bbb12918c1e4a7bb8e6adeda4dc2e516

See more details on using hashes here.

File details

Details for the file mesi-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: mesi-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.0a2 CPython/3.9.9 Linux/5.11.0-1021-azure

File hashes

Hashes for mesi-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a5bbf63b0da3a224b6eebfe97b10869e474c9ad6166bba17c8d4d7815f2c7cd2
MD5 0e26e0b978a661b440aa7a85f1f73423
BLAKE2b-256 430f249784db7d71ed4c8a9b334663e7875490f923acad4882820309587a97af

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page