DataNet.Fuzzy 0.1.0

Suggested Alternatives

Lodestar.Fuzzy

There is a newer version of this package available.
See the version list below for details.
dotnet add package DataNet.Fuzzy --version 0.1.0
                    
NuGet\Install-Package DataNet.Fuzzy -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DataNet.Fuzzy" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DataNet.Fuzzy" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="DataNet.Fuzzy" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DataNet.Fuzzy --version 0.1.0
                    
#r "nuget: DataNet.Fuzzy, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DataNet.Fuzzy@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DataNet.Fuzzy&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=DataNet.Fuzzy&version=0.1.0
                    
Install as a Cake Tool

DataNet

A data-science toolkit for C#/.NET, built on an honest premise:

Don't rewrite Python. Use the .NET ecosystem where it's strong, and write native code only where .NET has a real gap: text (similarity, vectorization, semantic search). All of it with no Python at runtime.

Why

Python dominates data analysis through its ecosystem and its exploratory notebook workflow — not through the language itself; its performance comes from C/Fortran kernels. C# brings static typing, real parallelism without a global interpreter lock, safe refactoring, and simple deployment. The only objective reason to stay on Python for this domain was the lack of an equivalent .NET library. DataNet removes that reason.

Two deliverables

  1. Native code where there's a gap → the packages below (string distances, vectorization, embeddings, fuzzy matching) — allocation-lean, Span-based, SIMD, zero external dependencies in the core.
  2. Migration guides for people coming from Python → docs/migration/, which, for each need (NumPy, pandas, scikit-learn, statsmodels, PyTorch, matplotlib, seaborn), points to the right .NET building block and the pitfalls.

See the three-column migration inventory: it's the project map (use / build / decide).

Target: .NET 10 (net10.0). See docs/decisions/0001.

Status — every lot of the project brief is delivered

Lot Contents Status
1 String distances & similarity complete — Levenshtein (+ Myers), OSA, Damerau-Levenshtein, Hamming, Jaro, Jaro-Winkler, Indel, LCS, Ratcliff-Obershelp, Jaccard, Dice, Overlap, Tversky, Cosine, Soundex, Metaphone, NYSIIS
2 Tokenization & sparse vectorization complete — CSR, tokenizers (word/char/char_wb), CountVectorizer, TfidfVectorizer, HashingVectorizer, Porter, Snowball EN/FR, English stop words
3 Embeddings & semantic search complete — WordPiece, SentencePiece, pooling, SIMD kNN, ONNX inference
4 Applied fuzzy matching completefuzz.* (ratio/partial/token_sort/token_set/WRatio), process.extract/extractOne, blocking deduplication

Every building block is oracle-validated against rapidfuzz / jellyfish / textdistance / difflib / scikit-learn / nltk / HuggingFace tokenizers / sentencepiece / numpy / ONNX Runtime (see docs/equivalence.md).

Getting started

dotnet add package DataNet.Text
using DataNet.Text.Distances;

Levenshtein.Distance("kitten", "sitting");             // 3
Levenshtein.NormalizedSimilarity("kitten", "sitting"); // 0.5714…

Full guide: docs/guides/quickstart.md. See also the vectorization, embeddings and fuzzy-matching guides.

Developing

dotnet build                                   # build the solution
dotnet test                                    # replay oracles + property tests
dotnet run -c Release --project bench/DataNet.Text.Benchmarks -- --filter '*Levenshtein*'

Oracle validation

Conformance to Python behavior is proven, not assumed (§4 of the brief): tools/generate_oracles.py freezes a few thousand reference cases from rapidfuzz/jellyfish/etc. into tests/oracles/*.json (versioned); the C# suite replays them with a 1e-9 tolerance. Python is a development-only dependency. See tools/README.md.

Structure

DataNet.sln
├── src/DataNet.Text/            distances, metrics, tokenizers, vectorizers, stemmers (no dependencies)
├── src/DataNet.Embeddings/      sub-word tokenizers, pooling, SIMD kNN, ONNX inference (ONNX Runtime isolated here)
├── src/DataNet.Fuzzy/           fuzz.*, process.extract, deduplication
├── tests/                       xUnit: oracles + properties (one project per module)
├── tests/oracles/               frozen JSON corpora (generated from Python) + a synthetic ONNX model
├── bench/DataNet.Text.Benchmarks/  BenchmarkDotNet
├── tools/generate_oracles.py    reference generation
├── Directory.Build.props        (root); src|tests/Directory.Packages.props (central package management)
└── docs/                        guides, equivalence table, decision log

Publishing

Three NuGet packages are produced: DataNet.Text, DataNet.Embeddings, DataNet.Fuzzy. Package metadata (version, license, README, repository) is shared in Directory.Build.props.

GitHub Packages (no nuget.org account needed — uses GitHub's automatic token). Tag a version and push; the release workflow packs and publishes:

git tag v0.1.0
git push origin v0.1.0

To consume them, add a source pointing at the owner's feed (with a GitHub token that has read:packages):

dotnet nuget add source "https://nuget.pkg.github.com/CyrilB1531/index.json" \
  --name github --username CyrilB1531 --password <GITHUB_TOKEN>
dotnet add package DataNet.Text

nuget.org (optional, needs a free account + API key). Once you have a key:

dotnet pack src/DataNet.Text -c Release -o artifacts
dotnet nuget push "artifacts/*.nupkg" --source https://api.nuget.org/v3/index.json --api-key <KEY>

License

Apache-2.0. See NOTICE and THIRD-PARTY-NOTICES.md for attributions. The license choice and the code-provenance rule are documented in docs/decisions/0003-provenance-and-licensing.md.

This repository is not legal advice.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.