Слияние студии из заголовка, title в сервисе, детект заглушек, e2e через predict_release
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8cbd800ec7
commit
6be369c415
7 files changed
+112
-19
No files matched your search
+14
-3
@@ -16,12 +16,14 @@ from pathlib import Path
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
||||
|
||||
from src.predict import DubPredictor # noqa: E402
|
||||
from src.html_extract import read_input # noqa: E402
|
||||
from src.release import predict_release # noqa: E402
|
||||
from src.studio_norm import canonical # noqa: E402
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
def release_check(predictor: DubPredictor, rows: list[dict]) -> dict:
|
||||
def release_check(predictor: DubPredictor, rows: list[dict], use_title: bool = True) -> dict:
|
||||
"""E2E на текстовых дампах страниц: пары (тип, автор) по релизам."""
|
||||
by_release: dict[tuple[str, str], list[dict]] = defaultdict(list)
|
||||
for r in rows:
|
||||
@@ -43,7 +45,10 @@ def release_check(predictor: DubPredictor, rows: list[dict]) -> dict:
|
||||
gt_rows = by_release[(src, rid)]
|
||||
gold = {(r["translation_type"], r["studio"] or None) for r in gt_rows}
|
||||
try:
|
||||
tracks = predictor.predict_file(page)
|
||||
if use_title: # путь релиза: описание + студии из заголовка раздачи
|
||||
tracks = predict_release(predictor, text=read_input(page))["tracks"]
|
||||
else:
|
||||
tracks = predictor.predict_file(page)
|
||||
except Exception as e: # noqa: BLE001
|
||||
misses.append(f"{page.name}: ошибка {e}")
|
||||
continue
|
||||
@@ -115,7 +120,13 @@ def main() -> None:
|
||||
.read_text(encoding="utf-8"))
|
||||
predictor = DubPredictor()
|
||||
|
||||
print("== e2e: страницы против меток ==")
|
||||
print("== e2e: страницы против меток (только описание, baseline) ==")
|
||||
base = release_check(predictor, rows, use_title=False)
|
||||
print(f"релизов: {base['n_releases']}, precision {base['mean_precision']:.3f}, "
|
||||
f"recall {base['mean_recall']:.3f}; "
|
||||
+ "; ".join(f"{s}: P={v['precision']:.3f} R={v['recall']:.3f}"
|
||||
for s, v in base["per_source"].items()))
|
||||
print("\n== e2e: страницы против меток (описание + заголовок, predict_release) ==")
|
||||
rel = release_check(predictor, rows)
|
||||
print(f"релизов проверено: {rel['n_releases']}, "
|
||||
f"mean precision {rel['mean_precision']:.3f}, "
|
||||
|
||||
Reference in new issue
Block a user