Первичная версия: стилометрия реплик, LSA и протокол экспериментов
This commit is contained in:
45
lab1/tests/test_lsa.py
Normal file
45
lab1/tests/test_lsa.py
Normal file
@@ -0,0 +1,45 @@
|
||||
"""Тесты TF-IDF и LSA."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import numpy as np
|
||||
|
||||
from stylometry.datasets import load_feature_frame
|
||||
from stylometry.lsa import (
|
||||
make_char_ngram_vectorizer,
|
||||
make_lsa_vectorizer,
|
||||
make_pos_ngram_vectorizer,
|
||||
make_text_vectorizer,
|
||||
)
|
||||
|
||||
|
||||
def test_lsa_word_shape_and_variance() -> None:
|
||||
frame = load_feature_frame(verbose=False).head(100)
|
||||
vectorizer = make_lsa_vectorizer("word", n_components=10)
|
||||
matrix = vectorizer.fit_transform(frame)
|
||||
assert matrix.shape == (100, 10)
|
||||
assert np.isfinite(matrix).all()
|
||||
assert 0 <= vectorizer.cumulative_explained_variance_[-1] <= 1.0
|
||||
assert len(vectorizer.top_terms(5)) == 10
|
||||
|
||||
|
||||
def test_lsa_pos_and_char() -> None:
|
||||
frame = load_feature_frame(verbose=False).head(100)
|
||||
for variant in ("pos", "char"):
|
||||
vectorizer = make_lsa_vectorizer(variant, n_components=5)
|
||||
matrix = vectorizer.fit_transform(frame)
|
||||
assert matrix.shape[0] == 100
|
||||
assert matrix.shape[1] == 5
|
||||
assert np.isfinite(matrix).all()
|
||||
|
||||
|
||||
def test_text_vectorizers() -> None:
|
||||
frame = load_feature_frame(verbose=False).head(50)
|
||||
for vectorizer in (
|
||||
make_text_vectorizer("word"),
|
||||
make_pos_ngram_vectorizer(),
|
||||
make_char_ngram_vectorizer(),
|
||||
):
|
||||
matrix = vectorizer.fit_transform(frame)
|
||||
assert matrix.shape[0] == 50
|
||||
assert matrix.shape[1] > 0
|
||||
Reference in New Issue
Block a user