Первичная версия: стилометрия реплик, LSA и протокол экспериментов

This commit is contained in:
2026-10-24 01:17:36 +03:00
commit c390224500
52 changed files with 10099 additions and 0 deletions

52
lab1/tests/test_io.py Normal file
View File

@@ -0,0 +1,52 @@
"""Тесты чтения и валидации корпуса."""
from __future__ import annotations
from pathlib import Path
import pandas as pd
from stylometry.io import (
DEFAULT_DATA_PATH,
compare_with_stats,
corpus_fingerprint,
read_corpus,
read_stats,
validate_corpus,
)
def test_read_corpus_shape() -> None:
frame = read_corpus()
assert len(frame) == 2005
assert frame["character"].nunique() == 34
assert {"line_id", "text", "character", "text_raw", "placeholder_count"} <= set(frame.columns)
assert frame["text"].str.len().gt(0).all()
def test_corpus_is_cp1251() -> None:
raw = DEFAULT_DATA_PATH.read_bytes()
assert raw.decode("cp1251").startswith("Реплика;Персонаж")
def test_validate_corpus() -> None:
frame = read_corpus()
stats = validate_corpus(frame)
assert stats["n_lines"] == 2005
assert stats["n_characters"] == 34
assert stats["n_duplicate_texts"] == 0
assert stats["n_words"] > 30_000
def test_compare_with_stats() -> None:
frame = read_corpus()
comparison = compare_with_stats(frame, read_stats())
assert not comparison.empty
assert (comparison["difference"] == 0).all()
def test_fingerprint_is_stable() -> None:
first = corpus_fingerprint()
second = corpus_fingerprint()
assert first == second
assert len(first) == 64