From c0a90f72d5a6f4f4b0081ebee5bcf7b55a30e0ca Mon Sep 17 00:00:00 2001 From: jp170na Date: Sun, 27 Sep 2026 14:56:52 +0200 Subject: [PATCH] pridanie testov morfologie evaluatora --- test/test_rag_metrics_morphology.py | 114 ++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 test/test_rag_metrics_morphology.py diff --git a/test/test_rag_metrics_morphology.py b/test/test_rag_metrics_morphology.py new file mode 100644 index 0000000..732f78a --- /dev/null +++ b/test/test_rag_metrics_morphology.py @@ -0,0 +1,114 @@ +from __future__ import annotations + +from evaluation.rag_metrics import ( + evaluate_answer, + expected_phrase_matches, +) + + +def test_exact_phrase_still_matches() -> None: + assert expected_phrase_matches( + "slovenský internet", + "Téma je slovenský internet.", + ) + + +def test_slovak_adjective_and_noun_inflection_matches() -> None: + assert expected_phrase_matches( + "slovenský internet", + "Vyhľadávač na slovenskom internete.", + ) + + +def test_graph_neural_network_inflection_matches() -> None: + assert expected_phrase_matches( + "grafové neurónové siete", + ( + "Prehľad metód grafových " + "neurónových sietí." + ), + ) + + +def test_person_name_inflection_matches() -> None: + assert expected_phrase_matches( + "Ján Holp", + "Dokument patrí Jánovi Holpovi.", + ) + + +def test_numeric_expected_value_requires_exact_numeric_token() -> None: + assert expected_phrase_matches( + "2021", + "Diplomová práca bola v roku 2021.", + ) + + assert not expected_phrase_matches( + "2021", + "Identifikátor je 20210.", + ) + + +def test_unrelated_methods_do_not_match_gnn() -> None: + assert not expected_phrase_matches( + "grafové neurónové siete", + ( + "Použili sa transformery, " + "autoenkódery a SVM." + ), + ) + + +def test_word_order_is_not_ignored() -> None: + assert not expected_phrase_matches( + "slovenský internet", + ( + "Internetový projekt analyzuje " + "slovenský text." + ), + ) + + +def test_evaluate_answer_uses_morphology_aware_matcher() -> None: + question = { + "expected_answer_contains": [ + "grafové neurónové siete", + ], + "expected_source_urls": [ + ( + "https://zp.kemt.fei.tuke.sk/" + "students/2016/maros_harahus" + ), + ], + "should_answer": True, + } + + answer = ( + "Maroš mal pripraviť prehľad " + "grafových neurónových sietí.\n\n" + "Zdroj: " + "https://zp.kemt.fei.tuke.sk/" + "students/2016/maros_harahus" + ) + + metrics = evaluate_answer( + question, + answer, + tool_called=True, + ) + + assert ( + metrics[ + "answer_matches" + ] + == [ + True + ] + ) + + assert ( + metrics[ + "strict_pass" + ] + is True + )