Metadata-Version: 2.5
Name: zysl
Version: 0.0.2
Summary: Text similarity: Jaccard over character shingles plus normalized edit distance.
Project-URL: Homepage, https://pypi.org/project/zysl/
Author-email: lqxnjk <lqxnjk@qq.com>
License: MIT
License-File: LICENSE
Keywords: diff,jaccard,levenshtein,similarity,text
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# zysl

[English](#english) | 中文

文本相似度：字符 shingle 的 Jaccard 与归一化编辑距离。

## 安装

```console
pip install zysl
```

## 用法

```python
from zysl import jaccard, levenshtein, similarity

jaccard("hello", "hallo")             # 0.3333...
levenshtein("kitten", "sitting")      # 3
similarity("kitten", "sitting")      # 0.5714...
```

## 说明

`jaccard` 按 n-gram 集合求交并比，对词序敏感度低；`levenshtein` 用两行滚动数组，长文本也只占 O(n) 内存；`similarity` 把编辑距离归一化到 0~1，两条都空视为完全相似。

## 许可证

MIT

---

<a id="english"></a>
## English

Text similarity: Jaccard over character shingles plus normalized edit distance.

## Install

```console
pip install zysl
```

## Usage

```python
from zysl import jaccard, levenshtein, similarity

jaccard("hello", "hallo")             # 0.3333...
levenshtein("kitten", "sitting")      # 3
similarity("kitten", "sitting")      # 0.5714...
```

## Notes

`jaccard` compares n-gram sets, so it tolerates reordering; `levenshtein` keeps two rolling rows, so memory stays O(n) on long input; `similarity` normalizes the distance to 0..1 and treats two empty strings as identical.

## License

MIT
