Comparison.exclude.by_frequency
Comparison.exclude.by_frequency ¶
by_frequency(
less_than: float | None = None,
greater_than: float | None = None,
between: tuple[float, float] | None = None,
inclusive: bool = True,
corpus: EXCLUDE_CORPUS = "both",
) -> Comparison
Removes tokens whose frequency falls in the given range from the reference and comparison corpora.
Excluding by frequency narrows a comparison to the part of the frequency distribution that is of interest, such as dropping rare or common tokens. The range is tested against the frequencies the catalog was built from, so its bounds are counts. Tokens are excluded from both corpora, before they are scored, so the frequencies the scoring measure works with are normalized over the remaining vocabulary.
Example
import wordlevel as wl
cl = wl.Catalog.from_dict_of_freqs(
{
"before": {"the": 30, "good": 12, "bad": 8, "happy": 6, "sad": 4, "calm": 5},
"after": {"the": 25, "good": 5, "bad": 7, "happy": 3, "sad": 9, "angry": 6},
}
)
cl = cl.with_comparisons(
wl.comp("before", "after").exclude.by_frequency(greater_than=20).score.proportion()
)
Exactly one of less_than, greater_than, and between gives the range to exclude. To
exclude by multiple disjoint criteria, call the method multiple times with different
parameters. A count means different things in corpora of different sizes, so use
by_proportion to exclude by a share of each corpus instead.
Warning
Excluding tokens changes the normalized frequencies of every token that remains.
A token missing from one of the corpora has a frequency of zero, so corpus="either"
paired with less_than removes every token that the two corpora do not share.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
float | None
|
Exclude tokens with a frequency below this bound |
None
|
|
float | None
|
Exclude tokens with a frequency above this bound |
None
|
|
tuple[float, float] | None
|
Exclude tokens with frequencies between the lower and upper bound |
None
|
|
bool
|
Whether the bounds themselves are part of the range being excluded |
True
|
|
EXCLUDE_CORPUS
|
Which corpus's frequency the range is evaluated against. |
'both'
|
Returns:
| Type | Description |
|---|---|
Comparison
|
A new |
Raises:
| Type | Description |
|---|---|
ValueError
|
If none of |
ValueError
|
If the lower bound of |
ValueError
|
If |