File size: 1,523 Bytes
eff511c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from __future__ import annotations

import sys
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT))

from answering import evaluate_query
from clause_retrieval import init_clause_retrieval, load_ontology
from config import CORPUS_MCKF_ONTOLOGY_PATH


QUESTION = (
    "Dönem başında kayıt yaptırırken tez dersi ve uzmanlık dersi seçmeyen öğrenci bir dönem "
    "boyunca dersine devam etmiş ve tezini tamamlamış ancak son aşamada enstitü ders "
    "seçmediğiniz için mezun olamıyorsunuz diyor. Burada kimler sorumluluklarını yapmamıştır "
    "kanun maddelerine göre?"
)


def main() -> None:
    init_clause_retrieval(load_ontology(CORPUS_MCKF_ONTOLOGY_PATH))
    result = evaluate_query(QUESTION)
    answer = result.get("answer", "")
    expected_sources = {"Madde 19", "Madde 22", "Madde 44"}
    actual_sources = set(result.get("source_ids", []))
    required_phrases = (
        "Aktör bazlı sorumluluk testi",
        "Öğrenci - koşullu sorumluluk",
        "Danışman - olası rehberlik/süreç sorumluluğu",
        "sorumluluğun kesin dağılımı yapılamaz",
    )
    assert result.get("error", "") == "", result
    assert expected_sources <= actual_sources, actual_sources
    assert all(phrase in answer for phrase in required_phrases), answer
    print("Normative case analysis: PASS")
    print("Sources:", ", ".join(sorted(actual_sources)))


if __name__ == "__main__":
    main()