from typing import List, Tuple import pytest from sziszapangma.core.alignment.alignment_calculator import AlignmentCalculator from sziszapangma.core.alignment.alignment_soft_calculator import AlignmentSoftCalculator from sziszapangma.core.wer.wer_calculator import WerCalculator from sziszapangma.model.model import Word from sziszapangma.model.model_creators import create_new_word from tests.file_stored_embedding_transformer import FileStoredEmbeddingTransformer def string_list_to_words(strings: List[str]) -> List[Word]: return [create_new_word(it) for it in strings] def get_sample_data() -> Tuple[List[Word], List[Word]]: reference = ["ala", "ma", "dobrego", "wielkiego", "psa", "rasowego"] hypothesis = ["alana", "rego", "kruchego", "psa", "rasowego"] return string_list_to_words(reference), string_list_to_words(hypothesis) def get_alignment_calculator() -> AlignmentCalculator: return AlignmentSoftCalculator(FileStoredEmbeddingTransformer("tests/embeddings_pl.json")) def test_classic_calculate_wer_value(): """Sample test for core calculate.""" reference, hypothesis = get_sample_data() alignment = get_alignment_calculator().calculate_alignment(reference, hypothesis) wer_result = WerCalculator().calculate_wer(alignment) print(wer_result) assert pytest.approx(wer_result) == 0.50186761