-
Notifications
You must be signed in to change notification settings - Fork 0
Text tversky
Shared q-grams against the two sides' surpluses, weighted separately:
|A∩B| / (|A∩B| + α·|A\B| + β·|B\A|).
public static class TverskyExample — the default weights, which are Jaccard.
using Lodestar.Text.Similarity;
double symmetric = Tversky.Similarity("apple", "pineapple"); // => 0.5555…Remarks — the general form the rest of this namespace are cases of. α = β = 1 is
Jaccard, α = β = 0.5 is SorensenDice, and any α = β gives
a symmetric measure that ranks the same way both do.
What the others cannot express is α ≠ β. The two surpluses are charged separately, so the
measure acquires a direction: α = 1, β = 0 charges only for what the first input holds alone
and therefore asks "is a contained in b", while α = 0, β = 1 asks the reverse. That is the
reason to reach for this type rather than one of the four simpler ones.
The price of that generality is that the weights are the caller's, and two of the guarantees the
other four offer stop holding — the result need not lie in [0, 1], and an empty input need not
score 0. Tversky.Similarity says when.
Applies to — net10.0, netstandard2.0.
See also — Jaccard, Overlap,
the set-similarity index.
| Member | What it does |
|---|---|
Tversky.Similarity |
Shared grams against each side's surplus, weighted by alpha and beta. |
- 0001-target-framework
- 0002-unicode-comparison-unit
- 0003-provenance-and-licensing
- 0004-levenshtein-myers-backlog
- 0005-hamming-jellyfish-divergence
- 0006-ratcliff-autojunk
- 0007-metaphone-scope
- 0008-italian-enza-nltk-divergence
- 0009-sample-consumes-a-local-feed
- 0010-stop-word-list-provenance
- 0011-persistence-format
- 0012-per-package-versioning
- 0013-sentencepiece-parity-scope
- 0014-precompiled-normalizer
- 0015-sonar-rules-in-the-build
- 0016-metrics-package-placement
- 0017-bpe-parity-scope
- 0018-multiclass-roc-auc-parallelism-is-opt-in
- 0019-the-net-analysers-run-in-the-build-too
- 0020-normalize-is-a-projection-not-a-parameter
- 0021-multioutput-is-a-method-not-an-enum
- 0022-added-token-matching-flags
- 0023-byte-level-decode-substitutes
- 0024-weighted-median-averages-within-scikit-learns-epsilon
- 0025-quickselect-replaces-a-full-sort-for-the-median
- 0026-r2-and-explainedvariance-split-their-undefined-cases-differently
- 0027-r2-and-explainedvariance-vectorize-only-a-single-output
- 0028-log1p-is-kahans-identity-not-math-log-1-plus-x
- 0029-balanced-accuracy-adjusted-is-left-to-ieee-754-at-the-edge
- 0030-cohen-kappa-keeps-scikit-learns-expected-matrix-orientation
- 0031-nosamplecorrect-mirrors-numpys-float64-upcast
- 0032-fbeta-substitutes-tp-predicted-and-support-algebraically
- 0033-compensated-sum-is-neumaiers-variant
- 0034-dropout-is-refused-for-want-of-a-user
- 0035-a-null-pre-split-is-removed-with-invert-not-isolated
- 0036-a-member-may-ship-without-an-oracle-if-it-says-so
- 0037-the-guards-run-before-the-commit
- 0038-the-gate-confronts-an-exception-tag-with-the-page-that-documents-it
- 0039-mutual-information-returns-zero-on-an-empty-input
- 0040-a-curve-is-a-sealed-class-per-curve
- 0041-one-sample-file-per-public-class
- 0042-phonetic-encoders-refuse-a-null-word
- 0043-the-equality-table-is-sized-to-the-pattern
- 0044-compression-belongs-to-the-caller
- 0045-a-console-call-carries-its-reason-on-the-line
- 0046-check-adr-immutable-runs-in-ci-only
- 0047-one-gate-per-kernel-not-one-per-alphabet
- 0048-the-gate-depends-on-the-kernel-and-the-alphabet
- 0049-two-gates-per-kernel-tested-where-the-width-is-known
- 0050-the-sentencepiece-bpe-lineage-stays-a-bpe-model
- benchmark_latest
- decisions
- equivalence
- matplotlib
- migration
- nightly_run
- numpy
- pandas
- performance
- pytorch
- seaborn
- sklearn
- statsmodels