{"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/strubert-structure-aware-bert-for-table","title":"StruBERT: Structure-aware BERT for Table Search and Matching","arxiv_id":"2203.14278","date":"2022-03-27","proceeding":null,"authors":["Mohamed Trabelsi","Zhiyu Chen","Shuo Zhang","Brian D. Davison","Jeff Heflin"],"abstract":"A large amount of information is stored in data tables. Users can search for data tables using a keyword-based query. A table is composed primarily of data values that are organized in rows and columns providing implicit structural information. A table is usually accompanied by secondary information such as the caption, page title, etc., that form the textual information. Understanding the connection between the textual and structural information is an important yet neglected aspect in table retrieval as previous methods treat each source of information independently. In addition, users can search for data tables that are similar to an existing table, and this setting can be seen as a content-based table retrieval. In this paper, we propose StruBERT, a structure-aware BERT model that fuses the textual and structural information of a data table to produce context-aware representations for both textual and tabular content of a data table. StruBERT features are integrated in a new end-to-end neural ranking model to solve three table-related downstream tasks: keyword- and content-based table retrieval, and table similarity. We evaluate our approach using three datasets, and we demonstrate substantial improvements in terms of retrieval and classification metrics over state-of-the-art methods.","url_abs":"https://arxiv.org/abs/2203.14278v1","url_pdf":"https://arxiv.org/pdf/2203.14278v1.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":"strubert-structure-aware-bert-for-table","repo_url":"https://github.com/medtray/StruBERT","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"retrieval","task_name":"Retrieval"},{"task_slug":"table-retrieval","task_name":"Table Retrieval"},{"task_slug":"table-search","task_name":"Table Search"}],"methods":[{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"attention-dropout","method_name":"Attention Dropout"},{"method_slug":"bert","method_name":"BERT"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"linear-warmup-with-linear-decay","method_name":"Linear Warmup With Linear Decay"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"strubert","method_name":"StruBERT"},{"method_slug":"weight-decay","method_name":"Weight Decay"},{"method_slug":"wordpiece","method_name":"WordPiece"}],"datasets_introduced":[],"methods_introduced":[{"slug":"strubert","name":"StruBERT","full_name":"StruBERT: Structure-aware BERT for Table Search and Matching"}],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2203.14278","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.14278"}},"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":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/medtray/StruBERT","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":1,"ran_honours":1,"unverified":11},"by_repo_kind":{"official":{"samples":13,"ran":2,"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":0,"samples":[{"code_sha256_prefix":"0f786c407fb1ee4c","entry":"swish","repo":"medtray/StruBERT","repo_kind":"official","path":"table_matching_model.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/table_matching_model.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":2,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0f786c407fb1ee4c"}},{"code_sha256_prefix":"c2f0705ed8e6f7e6","entry":"gelu","repo":"medtray/StruBERT","repo_kind":"official","path":"table_matching_model.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/table_matching_model.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c2f0705ed8e6f7e6"}},{"code_sha256_prefix":"b0a18a733056e619","entry":"clean_cell_value","repo":"medtray/StruBERT","repo_kind":"official","path":"preprocess/data_utils.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/preprocess/data_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b0a18a733056e619"}},{"code_sha256_prefix":"9d83a333d51f8b59","entry":"clean_wiki_template","repo":"medtray/StruBERT","repo_kind":"official","path":"preprocess/data_utils.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/preprocess/data_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9d83a333d51f8b59"}},{"code_sha256_prefix":"b4a175c0ea550006","entry":"has_invalid_tokens","repo":"medtray/StruBERT","repo_kind":"official","path":"preprocess/common_crawl.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/preprocess/common_crawl.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b4a175c0ea550006"}},{"code_sha256_prefix":"d23af3ce790a0ccb","entry":"is_ascii","repo":"medtray/StruBERT","repo_kind":"official","path":"preprocess/common_crawl.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/preprocess/common_crawl.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d23af3ce790a0ccb"}},{"code_sha256_prefix":"199a23f01788abd1","entry":"pad_table_query","repo":"medtray/StruBERT","repo_kind":"official","path":"utils.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"199a23f01788abd1"}},{"code_sha256_prefix":"ca60d4791bd836c5","entry":"pad_table_search","repo":"medtray/StruBERT","repo_kind":"official","path":"utils.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ca60d4791bd836c5"}},{"code_sha256_prefix":"86cef9f8921fea8d","entry":"remove_full_rowspans","repo":"medtray/StruBERT","repo_kind":"official","path":"preprocess/common_crawl.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/preprocess/common_crawl.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"86cef9f8921fea8d"}},{"code_sha256_prefix":"b100a8281d7e98e1","entry":"simple_normalize_text","repo":"medtray/StruBERT","repo_kind":"official","path":"preprocess/htmltable.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/preprocess/htmltable.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b100a8281d7e98e1"}},{"code_sha256_prefix":"2c5a4733cea4499f","entry":"split_token_coarse","repo":"medtray/StruBERT","repo_kind":"official","path":"preprocess/data_utils.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/preprocess/data_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2c5a4733cea4499f"}},{"code_sha256_prefix":"5303b26c19730c36","entry":"tab_normalize_text","repo":"medtray/StruBERT","repo_kind":"official","path":"preprocess/htmltable.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/preprocess/htmltable.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5303b26c19730c36"}},{"code_sha256_prefix":"54bf9e6cd5a8bb04","entry":"train_val_dataset","repo":"medtray/StruBERT","repo_kind":"official","path":"utils.py","file_url":"https://github.com/medtray/StruBERT/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"54bf9e6cd5a8bb04"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}