{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2509-18376","title":"GnnXemplar: Exemplars to Explanations -- Natural Language Rules for Global GNN Interpretability","arxiv_id":"2509.18376","date":"2025-09-22","proceeding":"NeurIPS","authors":["Burouj Armgaan","Eshan Jain","Harsh Pandey","Mahesh Chandran","Sayan Ranu"],"abstract":"Graph Neural Networks (GNNs) are widely used for node classification, yet their opaque decision-making limits trust and adoption. While local explanations offer insights into individual predictions, global explanation methods, those that characterize an entire class, remain underdeveloped. Existing global explainers rely on motif discovery in small graphs, an approach that breaks down in large, real-world settings where subgraph repetition is rare, node attributes are high-dimensional, and predictions arise from complex structure-attribute interactions. We propose GnnXemplar, a novel global explainer inspired from Exemplar Theory from cognitive science. GnnXemplar identifies representative nodes in the GNN embedding space, exemplars, and explains predictions using natural language rules derived from their neighborhoods. Exemplar selection is framed as a coverage maximization problem over reverse k-nearest neighbors, for which we provide an efficient greedy approximation. To derive interpretable rules, we employ a self-refining prompt strategy using large language models (LLMs). Experiments across diverse benchmarks show that GnnXemplar significantly outperforms existing methods in fidelity, scalability, and human interpretability, as validated by a user study with 60 participants.","url_abs":"https://arxiv.org/abs/2509.18376","url_pdf":"https://arxiv.org/pdf/2509.18376","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2509.18376","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2509.18376"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/idea-iitd/GnnXemplar","reach":{"status":"ok"}}],"summary":{"unverified":11},"by_repo_kind":{"found_in_text":{"samples":11,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":11,"samples":[{"code_sha256_prefix":"46cff35cd79ef354","entry":"ensure_1d_mask","repo":"idea-iitd/GnnXemplar","repo_kind":"found_in_text","path":"src/train/train_amazon_ratings.py","file_url":"https://github.com/idea-iitd/GnnXemplar/blob/HEAD/src/train/train_amazon_ratings.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"46cff35cd79ef354"}},{"code_sha256_prefix":"b957472149f915c1","entry":"evaluate","repo":"idea-iitd/GnnXemplar","repo_kind":"found_in_text","path":"src/train/train_amazon_ratings.py","file_url":"https://github.com/idea-iitd/GnnXemplar/blob/HEAD/src/train/train_amazon_ratings.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b957472149f915c1"}},{"code_sha256_prefix":"b3ed64d4b38eb525","entry":"evaluate","repo":"idea-iitd/GnnXemplar","repo_kind":"found_in_text","path":"src/train/train_citeseer.py","file_url":"https://github.com/idea-iitd/GnnXemplar/blob/HEAD/src/train/train_citeseer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b3ed64d4b38eb525"}},{"code_sha256_prefix":"e3b1dc374eb9697e","entry":"find_reverse_knn","repo":"idea-iitd/GnnXemplar","repo_kind":"found_in_text","path":"src/ablation_gen_concepts.py","file_url":"https://github.com/idea-iitd/GnnXemplar/blob/HEAD/src/ablation_gen_concepts.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e3b1dc374eb9697e"}},{"code_sha256_prefix":"5fef973735b25045","entry":"find_set_cover","repo":"idea-iitd/GnnXemplar","repo_kind":"found_in_text","path":"src/find_exemplars.py","file_url":"https://github.com/idea-iitd/GnnXemplar/blob/HEAD/src/find_exemplars.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5fef973735b25045"}},{"code_sha256_prefix":"321ed38c43168476","entry":"get_lr_scheduler_with_warmup","repo":"idea-iitd/GnnXemplar","repo_kind":"found_in_text","path":"src/utils.py","file_url":"https://github.com/idea-iitd/GnnXemplar/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"321ed38c43168476"}},{"code_sha256_prefix":"229daa7e4c266f5e","entry":"numpy_encoder","repo":"idea-iitd/GnnXemplar","repo_kind":"found_in_text","path":"src/utils.py","file_url":"https://github.com/idea-iitd/GnnXemplar/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"229daa7e4c266f5e"}},{"code_sha256_prefix":"be8f188e22f9fda4","entry":"test","repo":"idea-iitd/GnnXemplar","repo_kind":"found_in_text","path":"src/train/train_arxiv_gcn.py","file_url":"https://github.com/idea-iitd/GnnXemplar/blob/HEAD/src/train/train_arxiv_gcn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"be8f188e22f9fda4"}},{"code_sha256_prefix":"7440801ef06f8848","entry":"train","repo":"idea-iitd/GnnXemplar","repo_kind":"found_in_text","path":"src/train/train_amazon_ratings.py","file_url":"https://github.com/idea-iitd/GnnXemplar/blob/HEAD/src/train/train_amazon_ratings.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7440801ef06f8848"}},{"code_sha256_prefix":"f0acc30a9e7ed1aa","entry":"train","repo":"idea-iitd/GnnXemplar","repo_kind":"found_in_text","path":"src/train/train_arxiv_gcn.py","file_url":"https://github.com/idea-iitd/GnnXemplar/blob/HEAD/src/train/train_arxiv_gcn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f0acc30a9e7ed1aa"}},{"code_sha256_prefix":"afdfd772a195bd6b","entry":"train","repo":"idea-iitd/GnnXemplar","repo_kind":"found_in_text","path":"src/train/train_citeseer.py","file_url":"https://github.com/idea-iitd/GnnXemplar/blob/HEAD/src/train/train_citeseer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"afdfd772a195bd6b"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_api"},"syntology_extracted_results":null}