test_approximate.py 1.29 KB
import copy
import pytest


@pytest.mark.parametrize("batch_size", [50, None])
@pytest.mark.parametrize("padding", [True, False])
@pytest.mark.parametrize(
    "model",
    [
        ("kmeans_pca_topic_model"),
        ("base_topic_model"),
        ("custom_topic_model"),
        ("merged_topic_model"),
        ("reduced_topic_model"),
    ],
)
def test_approximate_distribution(batch_size, padding, model, documents, request):
    topic_model = copy.deepcopy(request.getfixturevalue(model))

    # Calculate only on a document-level based on tokensets
    topic_distr, _ = topic_model.approximate_distribution(documents, padding=padding, batch_size=batch_size)
    assert topic_distr.shape[1] == len(topic_model.topic_labels_) - topic_model._outliers

    # Use the distribution visualization
    for i in range(3):
        topic_model.visualize_distribution(topic_distr[i])

    # Calculate distribution on a token-level
    topic_distr, topic_token_distr = topic_model.approximate_distribution(documents[:100], calculate_tokens=True)
    assert topic_distr.shape[1] == len(topic_model.topic_labels_) - topic_model._outliers
    assert len(topic_token_distr) == len(documents[:100])

    for token_distr in topic_token_distr:
        assert token_distr.shape[1] == len(topic_model.topic_labels_) - topic_model._outliers