Skip to content
Snippets Groups Projects
test_soft_wer.py 1.27 KiB
Newer Older
from typing import List, Tuple

import pytest

Marcin Wątroba's avatar
Marcin Wątroba committed
from sziszapangma.core.alignment.alignment_calculator import AlignmentCalculator
from sziszapangma.core.alignment.alignment_soft_calculator import AlignmentSoftCalculator
from sziszapangma.core.alignment.word import Word
from sziszapangma.core.wer.wer_calculator import WerCalculator
Marcin Wątroba's avatar
Marcin Wątroba committed
from tests.file_stored_embedding_transformer import FileStoredEmbeddingTransformer
Marcin Wątroba's avatar
Marcin Wątroba committed
def string_list_to_words(strings: List[str]) -> List[Word]:
    return [Word.from_string(it) for it in strings]


def get_sample_data() -> Tuple[List[Word], List[Word]]:
Marcin Wątroba's avatar
Marcin Wątroba committed
    reference = ["ala", "ma", "dobrego", "wielkiego", "psa", "rasowego"]
    hypothesis = ["alana", "rego", "kruchego", "psa", "rasowego"]
Marcin Wątroba's avatar
Marcin Wątroba committed
    return string_list_to_words(reference), string_list_to_words(hypothesis)
def get_alignment_calculator() -> AlignmentCalculator:
Marcin Wątroba's avatar
Marcin Wątroba committed
    return AlignmentSoftCalculator(FileStoredEmbeddingTransformer("tests/embeddings_pl.json"))


def test_classic_calculate_wer_value():
    """Sample test for core calculate."""
    reference, hypothesis = get_sample_data()
Marcin Wątroba's avatar
Marcin Wątroba committed
    alignment = get_alignment_calculator().calculate_alignment(reference, hypothesis)
    wer_result = WerCalculator().calculate_wer(alignment)
    print(wer_result)
    assert pytest.approx(wer_result) == 0.50186761