{"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/deep-entity-matching-with-pre-trained","title":"Deep Entity Matching with Pre-Trained Language Models","arxiv_id":"2004.00584","date":"2020-04-01","proceeding":null,"authors":["Yuliang Li","Jinfeng Li","Yoshihiko Suhara","AnHai Doan","Wang-Chiew Tan"],"abstract":"We present Ditto, a novel entity matching system based on pre-trained Transformer-based language models. We fine-tune and cast EM as a sequence-pair classification problem to leverage such models with a simple architecture. Our experiments show that a straightforward application of language models such as BERT, DistilBERT, or RoBERTa pre-trained on large text corpora already significantly improves the matching quality and outperforms previous state-of-the-art (SOTA), by up to 29% of F1 score on benchmark datasets. We also developed three optimization techniques to further improve Ditto's matching capability. Ditto allows domain knowledge to be injected by highlighting important pieces of input information that may be of interest when making matching decisions. Ditto also summarizes strings that are too long so that only the essential information is retained and used for EM. Finally, Ditto adapts a SOTA technique on data augmentation for text to EM to augment the training data with (difficult) examples. This way, Ditto is forced to learn \"harder\" to improve the model's matching capability. The optimizations we developed further boost the performance of Ditto by up to 9.8%. Perhaps more surprisingly, we establish that Ditto can achieve the previous SOTA results with at most half the number of labeled data. Finally, we demonstrate Ditto's effectiveness on a real-world large-scale EM task. On matching two company datasets consisting of 789K and 412K records, Ditto achieves a high F1 score of 96.5%.","url_abs":"https://arxiv.org/abs/2004.00584v3","url_pdf":"https://arxiv.org/pdf/2004.00584v3.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":"deep-entity-matching-with-pre-trained","repo_url":"https://github.com/megagonlabs/ditto","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":null}],"tasks":[{"task_slug":"data-augmentation","task_name":"Data Augmentation"},{"task_slug":"entity-resolution","task_name":"Entity Resolution"}],"methods":[{"method_slug":"albert","method_name":"ALBERT"},{"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":"distilbert","method_name":"DistilBERT"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"lamb","method_name":"LAMB"},{"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":"roberta","method_name":"RoBERTa"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"weight-decay","method_name":"Weight Decay"},{"method_slug":"wordpiece","method_name":"WordPiece"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/entity-resolution-on-abt-buy","task":"Entity Resolution","dataset":"Abt-Buy","model":"Ditto","rank_in_archive_order":7,"of":16,"metrics":{"F1 (%)":"89.33"},"uses_additional_data":false},{"leaderboard":"/sota/entity-resolution-on-amazon-google","task":"Entity Resolution","dataset":"Amazon-Google","model":"Ditto","rank_in_archive_order":7,"of":17,"metrics":{"F1 (%)":"75.58"},"uses_additional_data":false},{"leaderboard":"/sota/entity-resolution-on-wdc-computers-small","task":"Entity Resolution","dataset":"WDC Computers-small","model":"Ditto","rank_in_archive_order":5,"of":6,"metrics":{"F1 (%)":"80.76"},"uses_additional_data":false},{"leaderboard":"/sota/entity-resolution-on-wdc-computers-xlarge","task":"Entity Resolution","dataset":"WDC Computers-xlarge","model":"Ditto","rank_in_archive_order":5,"of":6,"metrics":{"F1 (%)":"95.45"},"uses_additional_data":false},{"leaderboard":"/sota/entity-resolution-on-wdc-watches-small","task":"Entity Resolution","dataset":"WDC Watches-small","model":"Ditto","rank_in_archive_order":3,"of":4,"metrics":{"F1 (%)":"85.12"},"uses_additional_data":false},{"leaderboard":"/sota/entity-resolution-on-wdc-watches-xlarge","task":"Entity Resolution","dataset":"WDC Watches-xlarge","model":"Ditto","rank_in_archive_order":2,"of":3,"metrics":{"F1 (%)":"96.53"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2004.00584","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2004.00584"}},"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/megagonlabs/ditto","reach":null}],"summary":{"ran_draft_wrong":1},"by_repo_kind":{"official":{"samples":1,"ran":1,"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":"6fc3e78682fa1e57","entry":"to_str","repo":"megagonlabs/ditto","repo_kind":"official","path":"matcher.py","file_url":"https://github.com/megagonlabs/ditto/blob/HEAD/matcher.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6fc3e78682fa1e57"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}