{"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/graphotter-evolving-llm-based-graph-reasoning","title":"GraphOTTER: Evolving LLM-based Graph Reasoning for Complex Table Question Answering","arxiv_id":"2412.01230","date":"2024-12-02","proceeding":null,"authors":["Qianlong Li","Chen Huang","Shuai Li","Yuanxin Xiang","Deng Xiong","Wenqiang Lei"],"abstract":"Complex Table Question Answering involves providing accurate answers to specific questions based on intricate tables that exhibit complex layouts and flexible header locations. Despite considerable progress having been made in the LLM era, the reasoning processes of existing methods are often implicit, feeding the entire table into prompts, making it difficult to effectively filter out irrelevant information in the table. To this end, we propose GraphOTTER that explicitly establishes the reasoning process to pinpoint the correct answers. In particular, GraphOTTER leverages a graph-based representation, transforming the complex table into an undirected graph. It then conducts step-by-step reasoning on the graph, with each step guided by a set of pre-defined intermediate reasoning actions. As such, it constructs a clear reasoning path and effectively identifies the answer to a given question. Comprehensive experiments on two benchmark datasets and two LLM backbones demonstrate the effectiveness of GraphOTTER. Further analysis indicates that its success may be attributed to the ability to efficiently filter out irrelevant information, thereby focusing the reasoning process on the most pertinent data. Our code and experimental datasets are available at \\url{https://github.com/JDing0521/GraphOTTER}.","url_abs":"https://arxiv.org/abs/2412.01230v1","url_pdf":"https://arxiv.org/pdf/2412.01230v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"graphotter-evolving-llm-based-graph-reasoning","repo_url":"https://github.com/jding0521/graphotter","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"question-answering","task_name":"Question Answering"}],"methods":[{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2412.01230","atlas_url":"https://app.syntology.ai/?focus=2412.01230","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2412.01230"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jding0521/graphotter","reach":{"status":"ok"}}],"summary":{"unverified":12},"by_repo_kind":{"official":{"samples":12,"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":12,"samples":[{"code_sha256_prefix":"37c818bb80925362","entry":"EM_retriever","repo":"jding0521/graphotter","repo_kind":"official","path":"GraphRetriever/BM25_Retriever.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/GraphRetriever/BM25_Retriever.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":"37c818bb80925362"}},{"code_sha256_prefix":"9435500719339b7e","entry":"crt_qa_table_converter","repo":"jding0521/graphotter","repo_kind":"official","path":"GraphRetriever/table_reader.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/GraphRetriever/table_reader.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":"9435500719339b7e"}},{"code_sha256_prefix":"463030efc9b932d8","entry":"get_action_list","repo":"jding0521/graphotter","repo_kind":"official","path":"Generator/parse_output.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/Generator/parse_output.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":"463030efc9b932d8"}},{"code_sha256_prefix":"8031eb2f17c65469","entry":"hitab_table_converter","repo":"jding0521/graphotter","repo_kind":"official","path":"GraphRetriever/table_reader.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/GraphRetriever/table_reader.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":"8031eb2f17c65469"}},{"code_sha256_prefix":"921c6f54d45ca32a","entry":"logger_config","repo":"jding0521/graphotter","repo_kind":"official","path":"tools.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/tools.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":"921c6f54d45ca32a"}},{"code_sha256_prefix":"a28b280f0f61708f","entry":"maybe_normalize_float","repo":"jding0521/graphotter","repo_kind":"official","path":"compute_score.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/compute_score.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":"a28b280f0f61708f"}},{"code_sha256_prefix":"44afa42802919c8f","entry":"maybe_normalize_number","repo":"jding0521/graphotter","repo_kind":"official","path":"compute_score.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/compute_score.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":"44afa42802919c8f"}},{"code_sha256_prefix":"6d309c58c89104fc","entry":"normalize_false_true","repo":"jding0521/graphotter","repo_kind":"official","path":"compute_score.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/compute_score.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":"6d309c58c89104fc"}},{"code_sha256_prefix":"b8000f01c9e76515","entry":"output_json_parser","repo":"jding0521/graphotter","repo_kind":"official","path":"Generator/parse_output.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/Generator/parse_output.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":"b8000f01c9e76515"}},{"code_sha256_prefix":"a5e1ccc11fda1e6f","entry":"split_checks","repo":"jding0521/graphotter","repo_kind":"official","path":"Generator/parse_output.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/Generator/parse_output.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":"a5e1ccc11fda1e6f"}},{"code_sha256_prefix":"d04698595bb700d7","entry":"table2Tuple","repo":"jding0521/graphotter","repo_kind":"official","path":"tools.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/tools.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":"d04698595bb700d7"}},{"code_sha256_prefix":"9ca42114320c2ab6","entry":"table2markdown","repo":"jding0521/graphotter","repo_kind":"official","path":"tools.py","file_url":"https://github.com/jding0521/graphotter/blob/HEAD/tools.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":"9ca42114320c2ab6"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}