Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Maximal Format-free Data Repair

Maximal Format-free Data Repair

ASE 2026

Avatar for Rahul Gopinath

Rahul Gopinath

October 15, 2026

More Decks by Rahul Gopinath

Other Decks in Research

Transcript

  1. Maximal Format-Free Data Repair Zijian Luo Xi Wu Hong Jin

    Kang Alan Fekete Rahul Gopinath https://rahul.gopinath.org @[email protected] [email protected] 1
  2. Maximal Format-Free Data Repair Zijian Luo Xi Wu Hong Jin

    Kang Alan Fekete Rahul Gopinath https://rahul.gopinath.org @[email protected] [email protected] 2
  3. Data corruption can occur anywhere • Software bugs • Hardware

    errors • Transmission • Storage • Human errors • OCR 3
  4. Data corruption can occur anywhere • Software bugs • Hardware

    errors 0.8% FTP transfers produce incorrect checksum • Transmission Liu et al, HPDC 2018 Cross-geography scienti c data transferring trends and behavior • Storage • Human errors • OCR fi 4
  5. Data corruption can occur anywhere • Software bugs • Hardware

    errors • Transmission • Storage • Human errors • OCR 5
  6. Data corruption can occur anywhere • Software bugs • Hardware

    errors • Transmission • Storage Human data entry errors = 4% 14 laboratory studies of spreadsheet development, 967 participants working alone on a variety of tasks. https://panko.com/ssr/ • Human errors • OCR errors 6
  7. Data corruption can occur anywhere • Software bugs • Hardware

    errors • Transmission • Storage • Human errors • OCR errors Human data entry errors = 4% 14 laboratory studies of spreadsheet development, 967 participants working alone on a variety of tasks. https://panko.com/ssr/ OCR errors = 2.5% of the tokens Impact of OCR errors on the use of digital libraries Chiron et al. JCDL 2017 7
  8. Data-cleansing is often a blunt • Each eld is checked

    by custom validation functions. • One bad eld => the whole record is rejected and cleansed from the pipeline. Invalid data is often silently dropped fi fi 8
  9. Goal: recover as much data as possible Assumptions: ✗ for

    reject ✓ for accept • We have a validator that we can use • We have set of valid example values we can inspect 9
  10. Speci cation-free repair: DDMax Assumptions: • We have a validator

    that we can use: • {"item": "apple", "price": 3.14} ✓ • {"item": "apple", "price": ***3.14} ✗ • A known empty value ∅ = {} ✓ • Valid partial values -- waypoints fi 10
  11. Speci cation-free repair: DDMax Assumptions: • We have a validator

    that we can use: • {"item": "apple", "price": 3.14} ✓ • {"item": "apple", "price": ***3.14} ✗ • The data can be recovered piecemeal using waypoints {"item": "apple", "price": ***3.14} ✗ {} ✓ • A known empty value ∅ = {} ✓ {"item": "apple"} ✓ • Valid partial values -- waypoints {"item": "apple", "price": 4} ✓ {"item": "apple", "price": 3.14} ✓ fi 11
  12. DDMax: Limitations Columnar data often do not have empty values

    or waypoints Assumptions: • We have a validator that we can use: • {"item": "apple", "price": 3.14} ✓ • {"item": "apple", "price": ***3.14} ✗ • A valid empty value ∅ = {} ✓ e.g. address Jack, Luo, [email protected] Rahul, Gopinath, [email protected] e.g. date 12/01/2025 10/03/2026 • Valid partial values -- waypoints • Can only work with deletions 12
  13. Speci cation-free repair: εRepair Assumptions: • We have a parser

    that returns error feedback. • e.g. {"item": "apple" "price": 3.14} fi 13
  14. Speci cation-free repair: εRepair Assumptions: • We have a parser

    that returns error feedback. • e.g. {"item": "apple" "price": 3.14} Error: expected "," at character 17 line 1 fi 14
  15. Speci cation-free repair: εRepair Assumptions: • We have a parser

    that returns error feedback. • e.g. {"item": "apple","price": 3.14} fi 15
  16. εRepair: Limitations Assumptions: • We have a parser that returns

    error feedback. • e.g. {"item": "apple","price": 3.14} Columnar data often come with custom validators (e.g. Excel) that do not provide error feedback. e.g. address Jack, Luo, [email protected] Rahul, Gopinath, [email protected] e.g. date 12/01/2025 10/03/2026 16
  17. βMax: learn the format from the data you already have

    • Most records in a column are valid • Use them to infer an approximate format (grammar) • Repair the corrupt data towards it. 18
  18. βMax: learn the format from the data you already have

    • Most records in a column are valid • Use them to infer an approximate grammar • Repair towards it. 2026-03-11 2024-11-24 2018/11/02 2022-02-15 2020-10-07 19
  19. βMax: learn the format from the data you already have

    • Most records in a column are valid • Use them to infer an approximate grammar • Repair towards it. 2026-03-11 2024-11-24 2022-02-15 2020-10-07 2018/11/02 20
  20. βMax: learn the format from the data you already have

    • Most records in a column are valid • Use them to infer an approximate grammar • Repair towards it. 2026-03-11 2024-11-24 2022-02-15 2020-10-07 Grammar Inference 2018/11/02 21
  21. βMax: learn the format from the data you already have

    • Most records in a column are valid • Use them to infer an approximate grammar • Repair towards it. 2026-03-11 2024-11-24 2022-02-15 2020-10-07 Grammar Inference <date> ::= <year> [-/] <month> [-/] <day> <year> ::= "20" <digit> <digit> <month> ::= <digit> <digit> <day> ::= <digit> <digit> <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" 2018/11/02 22
  22. βMax: learn the format from the data you already have

    • Most records in a column are valid • Use them to infer an approximate grammar • Repair towards it. 2026-03-11 2024-11-24 2022-02-15 2020-10-07 2018/11/02 Grammar Inference <date> ::= <year> [-/] <month> [-/] <day> <year> ::= "20" <digit> <digit> <month> ::= <digit> <digit> <day> ::= <digit> <digit> <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" Error correcting parser 2018-11/02 ✗ 23
  23. βMax: learn the format from the data you already have

    • Most records in a column are valid • Use them to infer an approximate grammar • Repair towards it. 2026-03-11 2024-11-24 2022-02-15 2020-10-07 2018/11/02 Grammar Inference <date> ::= <year> [-/] <month> [-/] <day> <year> ::= "20" <digit> <digit> <month> ::= <digit> <digit> <day> ::= <digit> <digit> <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" Error correcting parser 2018-11/02 ✗ 24
  24. βMax: learn the format from the data you already have

    • Most records in a column are valid • Use them to infer an approximate grammar • Repair towards it. 2026-03-11 2024-11-24 2022-02-15 2020-10-07 Grammar Inference <date> ::= <year> [-/] <month> [-/] <day> <year> ::= "20" <digit> <digit> <month> ::= <digit> <digit> <day> ::= <digit> <digit> <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" 2018/11/02 2018-11/02 25
  25. βMax: learn the format from the data you already have

    • Most records in a column are valid • Use them to infer an approximate grammar • Repair towards it. 2026-03-11 2024-11-24 2022-02-15 2020-10-07 2018/11/02 2018-11/02 Grammar Inference <date> ::= <year> [/] <month> [/] <day> | <year> [-] <month> [-] <day> <year> ::= "20" <digit> <digit> <month> ::= <digit> <digit> <day> ::= <digit> <digit> <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" 2018-11-02 ✓ 26
  26. βMax: learn the format from the data you already have

    • Most records in a column are valid • Use them to infer an approximate grammar • Repair towards it. • Needs only an ✓, ̸ oracle and example data. • Repair is optimal with respect to the inferred grammar, so it stays close to existing records. ▷̸ 27
  27. Evaluation Subject Regex from regexlib.com Avg. length date ^\d{4}-\d{2}-\d{2}$ 10.0

    time ^\d{2}:\d{2}:\d{2}$ 8.0 isbn ^(?:\d[- ]?){9}[\dX]$ 13.0 ipv4 ^(\d{1,3}\.){3}\d{1,3}$ 13.6 ipv6 ^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$ 26.4 url ^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256} \.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$ 32.8 • 100 valid records per subject: 50 for inference, 50 to corrupt. • 1, 2, 3 random point corruptions: insert, delete, substitute. • Baseline εRepair; ddmax cannot start on xed-width elds. • 300 s timeout per record. RQ1 How many records are repaired? RQ2 How good are the repairs? RQ3 How costly is repair? fi fi 28
  28. RQ1: βMax repairs 1.76× more records 1 corruption 2 corruptions

    3 corruptions Subject βMax εRepair βMax εRepair βMax εRepair date 100% 30% 100% 26% 96% 12% ipv4 100% 80% 72% 74% 100% 66% ipv6 72% 70% 42% 64% 46% 46% isbn 98% 86% 96% 66% 96% 34% time 94% 28% 100% 18% 96% 6% url 56% 74% 76% 60% 62% 12% All 86.7% 61.3% 81.0% 51.3% 82.7% 29.3% 50 corrupt records per cell; timeout 300 s. βMax repairs 751/900 (83.4%) records; εRepair repairs 426/900 (47.3%). The gap widens as corruption grows. 29
  29. RQ2: Repair quality Edit distance, corrupt → repaired Data recovered

    (higher is better) (lower is better) 1 2 3 1 β ε β ε β ε date 1.66 1.31 2.02 1.94 2.85 2.83 ipv4 5.00 1.07 1.69 1.65 6.64 ipv6 2.56 1.14 2.90 1.81 isbn 1.18 1.58 1.90 time 1.53 1.43 url 1.75 1.05 2 3 β ε β ε β ε date 91% 91% 90% 89% 87% 84% 2.12 ipv4 91% 91% 88% 89% 87% 85% 3.87 2.04 ipv6 97% 96% 96% 94% 96% 93% 2.09 2.65 3.00 isbn 99% 92% 98% 90% 97% 84% 1.92 1.86 3.02 3.00 time 89% 89% 87% 86% 81% 78% 3.32 1.77 4.10 2.50 url 94% 97% 91% 97% 91% 93% Average: β 2.79 ± 2.35 ε 1.70 ± 0.71 Average: β 92% ± 7% ε 91% ± 5% β = βMax, ε = εRepair; each over its own successfully repaired records. Error locations let εRepair make fewer edits, yet βMax, with only ✓/×, is within about one edit and recovers as much data or more. 30
  30. RQ3: Cost of repair Average runtime in seconds Oracle calls

    during repair (lower is better) (lower is better) 1 2 3 1 β ε β ε β ε date 1.6 7.3 3.5 12.3 1.9 120.4 ipv4 50.2 35.8 35.4 48.3 90.5 ipv6 149.0 41.9 171.7 45.2 isbn 16.7 91.8 21.2 time 1.1 59.8 url 55.0 52.1 2 3 β ε β ε β ε date 1.0 7.0 1.0 68.4 1.0 93.5 39.5 ipv4 1.0 16.5 3.6 33.9 1.7 28.8 128.4 53.5 ipv6 1.9 23.9 1.8 33.2 1.7 40.4 94.2 14.7 115.6 isbn 2.2 61.2 2.3 71.2 1.9 82.3 1.4 104.8 1.4 161.0 time 1.0 7.0 1.0 79.0 1.0 113.7 50.2 135.9 38.2 77.0 url 1.6 15.5 1.0 103.1 1.0 53.5 Average: β 35.8 ε 55.9 Average: β 1.5 ε 41.5 One-time grammar inference per subject: 734–8,566 oracle calls, cached and reused across records. fi 27.7× fewer oracle calls and 1.6× faster on average. Time goes into the cubic covering-grammar parse, which dominates on long elds such as ipv6 and url. 31
  31. Beyond regular languages: JSON Edit distance (lower is better) Data

    recovered (higher is better) Corruption βMax εRepair Corruption βMax εRepair 1 2.12 2.68 1 97% 88% 2 3.49 3.30 2 94% 85% 3 3.94 5.10 3 94% 72% Average 3.18 3.69 Average 95% 82% Even approximating JSON with a regular grammar, βMax recovers more of the original data at every corruption level. 32
  32. 33

  33. 34