37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
"""Тесты анализа по метаданным персонажей."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pandas as pd
|
|
|
|
from stylometry.metadata import (
|
|
group_confusions,
|
|
load_character_metadata,
|
|
subgroup_report,
|
|
)
|
|
|
|
|
|
def test_metadata_table() -> None:
|
|
metadata = load_character_metadata()
|
|
assert len(metadata) == 34
|
|
assert {"character", "gender", "age_group", "species", "role"} <= set(metadata.columns)
|
|
|
|
|
|
def test_subgroup_report() -> None:
|
|
metadata = load_character_metadata()
|
|
y_true = ["Abigail", "Abigail", "Alex", "Alex"]
|
|
y_pred = ["Abigail", "Alex", "Alex", "Alex"]
|
|
labels = ["Abigail", "Alex"]
|
|
report = subgroup_report(y_true, y_pred, labels, metadata, "gender")
|
|
assert {"group", "weighted_f1", "n_samples"} <= set(report.columns)
|
|
assert report["n_samples"].sum() == 4
|
|
|
|
|
|
def test_group_confusions() -> None:
|
|
metadata = load_character_metadata()
|
|
y_true = ["Abigail", "Abigail", "Alex", "Alex"]
|
|
y_pred = ["Abigail", "Alex", "Alex", "Abigail"]
|
|
table = group_confusions(y_true, y_pred, metadata, "gender")
|
|
assert not table.empty
|
|
assert {"true_group", "pred_group", "count"} <= set(table.columns)
|