Skip to content

Commit

Permalink
remove deprecated methods and arguments (#107)
Browse files Browse the repository at this point in the history
  • Loading branch information
nikvaessen authored Feb 2, 2025
1 parent cc23b12 commit 4113e3f
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 373 deletions.
253 changes: 7 additions & 246 deletions src/jiwer/measures.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,9 @@

"""
Convenience methods for calculating a number of similarity error
measures between a reference and hypothesis sentence.
These measures are
commonly used to measure the performance for an automatic speech recognition
(ASR) system.
measures between one or more reference and hypothesis sentences.
These measures are commonly used to measure the performance of
an automatic speech recognition (ASR) system.
The following measures are implemented:
Expand All @@ -42,9 +41,7 @@
[jiwer.CharacterOutput][process.CharacterOutput]
classes.
"""
import warnings

from typing import List, Union, Dict, Any
from typing import List, Union

from jiwer import transforms as tr
from jiwer.transformations import wer_default, cer_default
Expand All @@ -56,7 +53,6 @@
"wil",
"wip",
"cer",
"compute_measures",
]

########################################################################################
Expand All @@ -68,8 +64,6 @@ def wer(
hypothesis: Union[str, List[str]] = None,
reference_transform: Union[tr.Compose, tr.AbstractTransform] = wer_default,
hypothesis_transform: Union[tr.Compose, tr.AbstractTransform] = wer_default,
truth: Union[str, List[str]] = None,
truth_transform: Union[tr.Compose, tr.AbstractTransform] = None,
) -> float:
"""
Calculate the word error rate (WER) between one or more reference and
Expand All @@ -80,37 +74,15 @@ def wer(
hypothesis: The hypothesis sentence(s)
reference_transform: The transformation(s) to apply to the reference string(s)
hypothesis_transform: The transformation(s) to apply to the hypothesis string(s)
truth: Deprecated, renamed to `reference`
truth_transform: Deprecated, renamed to `reference_transform`
Deprecated:
Arguments `truth` and `truth_transform` have been renamed to respectively
`reference` and `reference_transform`. Therefore, the keyword arguments
`truth` and `truth_transform` will be removed in the next release.
At the same time, `reference` and `reference_transform` will lose their
default value.
Returns:
(float): The word error rate of the given reference and
hypothesis sentence(s).
"""
(
reference,
hypothesis,
reference_transform,
hypothesis_transform,
) = _deprecate_truth(
reference=reference,
hypothesis=hypothesis,
truth=truth,
reference_transform=reference_transform,
truth_transform=truth_transform,
hypothesis_transform=hypothesis_transform,
)

output = process_words(
reference, hypothesis, reference_transform, hypothesis_transform
)

return output.wer


Expand All @@ -119,8 +91,6 @@ def mer(
hypothesis: Union[str, List[str]] = None,
reference_transform: Union[tr.Compose, tr.AbstractTransform] = wer_default,
hypothesis_transform: Union[tr.Compose, tr.AbstractTransform] = wer_default,
truth: Union[str, List[str]] = None,
truth_transform: Union[tr.Compose, tr.AbstractTransform] = None,
) -> float:
"""
Calculate the match error rate (MER) between one or more reference and
Expand All @@ -131,34 +101,11 @@ def mer(
hypothesis: The hypothesis sentence(s)
reference_transform: The transformation(s) to apply to the reference string(s)
hypothesis_transform: The transformation(s) to apply to the hypothesis string(s)
truth: Deprecated, renamed to `reference`
truth_transform: Deprecated, renamed to `reference_transform`
Deprecated:
Arguments `truth` and `truth_transform` have been renamed to respectively
`reference` and `reference_transform`. Therefore, the keyword arguments
`truth` and `truth_transform` will be removed in the next release.
At the same time, `reference` and `reference_transform` will lose their
default value.
Returns:
(float): The match error rate of the given reference and
hypothesis sentence(s).
"""
(
reference,
hypothesis,
reference_transform,
hypothesis_transform,
) = _deprecate_truth(
reference=reference,
hypothesis=hypothesis,
truth=truth,
reference_transform=reference_transform,
truth_transform=truth_transform,
hypothesis_transform=hypothesis_transform,
)

output = process_words(
reference, hypothesis, reference_transform, hypothesis_transform
)
Expand All @@ -171,8 +118,6 @@ def wip(
hypothesis: Union[str, List[str]] = None,
reference_transform: Union[tr.Compose, tr.AbstractTransform] = wer_default,
hypothesis_transform: Union[tr.Compose, tr.AbstractTransform] = wer_default,
truth: Union[str, List[str]] = None,
truth_transform: Union[tr.Compose, tr.AbstractTransform] = None,
) -> float:
"""
Calculate the word information preserved (WIP) between one or more reference and
Expand All @@ -183,34 +128,11 @@ def wip(
hypothesis: The hypothesis sentence(s)
reference_transform: The transformation(s) to apply to the reference string(s)
hypothesis_transform: The transformation(s) to apply to the hypothesis string(s)
truth: Deprecated, renamed to `reference`
truth_transform: Deprecated, renamed to `reference_transform`
Deprecated:
Arguments `truth` and `truth_transform` have been renamed to respectively
`reference` and `reference_transform`. Therefore, the keyword arguments
`truth` and `truth_transform` will be removed in the next release.
At the same time, `reference` and `reference_transform` will lose their
default value.
Returns:
(float): The word information preserved of the given reference and
hypothesis sentence(s).
"""
(
reference,
hypothesis,
reference_transform,
hypothesis_transform,
) = _deprecate_truth(
reference=reference,
hypothesis=hypothesis,
truth=truth,
reference_transform=reference_transform,
truth_transform=truth_transform,
hypothesis_transform=hypothesis_transform,
)

output = process_words(
reference, hypothesis, reference_transform, hypothesis_transform
)
Expand All @@ -223,8 +145,6 @@ def wil(
hypothesis: Union[str, List[str]] = None,
reference_transform: Union[tr.Compose, tr.AbstractTransform] = wer_default,
hypothesis_transform: Union[tr.Compose, tr.AbstractTransform] = wer_default,
truth: Union[str, List[str]] = None,
truth_transform: Union[tr.Compose, tr.AbstractTransform] = None,
) -> float:
"""
Calculate the word information lost (WIL) between one or more reference and
Expand All @@ -235,96 +155,18 @@ def wil(
hypothesis: The hypothesis sentence(s)
reference_transform: The transformation(s) to apply to the reference string(s)
hypothesis_transform: The transformation(s) to apply to the hypothesis string(s)
truth: Deprecated, renamed to `reference`
truth_transform: Deprecated, renamed to `reference_transform`
Deprecated:
Arguments `truth` and `truth_transform` have been renamed to respectively
`reference` and `reference_transform`. Therefore, the keyword arguments
`truth` and `truth_transform` will be removed in the next release.
At the same time, `reference` and `reference_transform` will lose their
default value.
Returns:
(float): The word information lost of the given reference and
hypothesis sentence(s).
"""
(
reference,
hypothesis,
reference_transform,
hypothesis_transform,
) = _deprecate_truth(
reference=reference,
hypothesis=hypothesis,
truth=truth,
reference_transform=reference_transform,
truth_transform=truth_transform,
hypothesis_transform=hypothesis_transform,
)

output = process_words(
reference, hypothesis, reference_transform, hypothesis_transform
)

return output.wil


########################################################################################
# deprecated method 'compute_measures'


def compute_measures(
truth: Union[str, List[str]],
hypothesis: Union[str, List[str]],
truth_transform: Union[tr.Compose, tr.AbstractTransform] = wer_default,
hypothesis_transform: Union[tr.Compose, tr.AbstractTransform] = wer_default,
) -> Dict[str, Any]:
"""
Efficiently computes all measures using only one function call.
Deprecated:
Deprecated method. Superseded by [jiwer.process_words][process.process_words].
This method will be removed on next release.
Args:
truth: The reference sentence(s)
hypothesis: The hypothesis sentence(s)
truth_transform: The transformation(s) to apply to the reference string(s)
hypothesis_transform: The transformation(s) to apply to the hypothesis string(s)
Returns:
(dict): A dictionary containing key-value pairs for all measures.
"""
warnings.warn(
DeprecationWarning(
"jiwer.compute_measures() is deprecated. Please use jiwer.process_words()."
)
)

output = process_words(
reference=truth,
hypothesis=hypothesis,
reference_transform=truth_transform,
hypothesis_transform=hypothesis_transform,
)

return {
"wer": output.wer,
"mer": output.mer,
"wil": output.wil,
"wip": output.wip,
"hits": output.hits,
"substitutions": output.substitutions,
"deletions": output.deletions,
"insertions": output.insertions,
"ops": output.alignments,
"truth": output.references,
"hypothesis": output.hypotheses,
}


########################################################################################
# Implementation of character-error-rate, exposed publicly

Expand All @@ -334,10 +176,7 @@ def cer(
hypothesis: Union[str, List[str]] = None,
reference_transform: Union[tr.Compose, tr.AbstractTransform] = cer_default,
hypothesis_transform: Union[tr.Compose, tr.AbstractTransform] = cer_default,
return_dict: bool = False,
truth: Union[str, List[str]] = None,
truth_transform: Union[tr.Compose, tr.AbstractTransform] = None,
) -> Union[float, Dict[str, Any]]:
) -> float:
"""
Calculate the character error rate (CER) between one or more reference and
hypothesis sentences.
Expand All @@ -347,91 +186,13 @@ def cer(
hypothesis: The hypothesis sentence(s)
reference_transform: The transformation(s) to apply to the reference string(s)
hypothesis_transform: The transformation(s) to apply to the hypothesis string(s)
return_dict: Deprecated option to return the more results in a dict instead of
returning only the cer as a single float value
truth: Deprecated, renamed to `reference`
truth_transform: Deprecated, renamed to `reference_transform`
Deprecated:
Argument `return_dict` will be deprecated. Please use
[jiwer.process_characters][process.process_characters] instead.
Arguments `truth` and `truth_transform` have been renamed to respectively
`reference` and `reference_transform`. Therefore, the keyword arguments
`truth` and `truth_transform` will be removed in the next release.
At the same time, `reference` and `reference_transform` will lose their
default value.
Returns:
(float): The character error rate of the given reference and hypothesis
sentence(s).
"""
(
reference,
hypothesis,
reference_transform,
hypothesis_transform,
) = _deprecate_truth(
reference=reference,
hypothesis=hypothesis,
truth=truth,
reference_transform=reference_transform,
truth_transform=truth_transform,
hypothesis_transform=hypothesis_transform,
)

output = process_characters(
reference, hypothesis, reference_transform, hypothesis_transform
)

if return_dict:
warnings.warn(
DeprecationWarning(
"`return_dict` is deprecated, "
"please use jiwer.process_characters() instead."
)
)
return {
"cer": output.cer,
"hits": output.hits,
"substitutions": output.substitutions,
"deletions": output.deletions,
"insertions": output.insertions,
}
else:
return output.cer


def _deprecate_truth(
reference: Union[str, List[str]],
hypothesis: Union[str, List[str]],
truth: Union[str, List[str]],
reference_transform: Union[tr.Compose, tr.AbstractTransform],
hypothesis_transform: Union[tr.Compose, tr.AbstractTransform],
truth_transform: Union[tr.Compose, tr.AbstractTransform],
):
if truth is not None:
warnings.warn(
DeprecationWarning(
"keyword argument `truth` is deprecated, please use `reference`."
)
)
if reference is not None:
raise ValueError("cannot give `reference` and `truth`")
reference = truth
if truth_transform is not None:
warnings.warn(
DeprecationWarning(
"keyword argument `truth_transform` is deprecated, "
"please use `reference_transform`."
)
)
reference_transform = truth_transform

if reference is None or hypothesis is None:
raise ValueError(
"detected default values for reference or hypothesis arguments, "
"please provide actual string or list of strings"
)

return reference, hypothesis, reference_transform, hypothesis_transform
return output.cer
7 changes: 1 addition & 6 deletions src/jiwer/process.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,11 @@
"""

from dataclasses import dataclass

from collections import defaultdict
from typing import Any, List, Union
from itertools import chain

import rapidfuzz

from rapidfuzz.distance import Opcodes

from collections import defaultdict

from jiwer import transforms as tr
from jiwer.transformations import wer_default, cer_default

Expand Down
Loading

0 comments on commit 4113e3f

Please sign in to comment.