| from utils import normalize_for_search | |
| AUTHORSHIP_TERMS = { | |
| "yazdi", "yazan", "yazilmis", "yazilmistir", "yazar", | |
| "yazari", "hazirladi", "hazirlandi", "hazirlayan", | |
| "hazirlanmis", "hazirlanmistir", "duzenleyen", "kaleme", | |
| "muellif", | |
| } | |
| AUTHORSHIP_CONTEXT_TERMS = { | |
| "kanun", "kanunu", "2547", "metin", "yasa", "yasayi", | |
| } | |
| KNOWN_FALSE_AUTHOR_TERMS = { | |
| "omer", "ilhan", "prof", | |
| } | |
| def is_unsupported_metadata_question(question: str) -> bool: | |
| """Detect source-external authorship/preparer questions that must not be guessed.""" | |
| q = normalize_for_search(question) | |
| if not q: | |
| return False | |
| tokens = set(q.split()) | |
| if tokens & KNOWN_FALSE_AUTHOR_TERMS: | |
| return True | |
| asks_person = "kim" in tokens or "kimin" in tokens or "kisi" in tokens or "kisinin" in tokens | |
| has_authorship = bool(tokens & AUTHORSHIP_TERMS) or "kaleme alan" in q or "tarafindan hazirlan" in q | |
| has_context = bool(tokens & AUTHORSHIP_CONTEXT_TERMS) | |
| return asks_person and has_authorship and has_context | |