pm4py.util.labels_similarity module#

PM4Py – A Process Mining Library for Python Copyright (C) 2026 Process Intelligence Solutions GmbH

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.

Website: https://processintelligence.solutions Contact: info@processintelligence.solutions

pm4py.util.labels_similarity.label_sets_similarity(labels_a: List[str], labels_b: List[str], threshold: float = 0.75) → float[source]#

Dice-style similarity in [0, 1] that tolerates near-matches.

  • Each label in A is greedily paired with its most similar, still-unmatched label in B (SequenceMatcher ratio >= threshold).

  • Similarity = 2·|matched| / (|A| + |B|).

pm4py.util.labels_similarity.map_labels(labels_a: List[str], labels_b: List[str], threshold: float = 0.75) → Dict[str, str][source]#

Returns a dict {label_in_A: mapped_label}.

  • If an exact duplicate exists in B, map to that.

  • Otherwise pick the unused label in B with the highest similarity (SequenceMatcher ratio ≥ threshold).

  • If nothing reaches the threshold, map to itself (no change).