LDI: Localized Data Imputation for Text-Rich Tables
Published at the Tabular Data Analysis workshop at VLDB 2026 in Boston, USA.
The problem
Imagine a table of restaurants. It has a name, a short description, a menu, a cuisine type, a phone number, some reviews and a city. For a few of the rows the city is blank, and you want to fill it in from what the rest of the row says.
Several columns look like they might help, and they are not equally useful. The description says things like Modern American dishes or Elegant Italian dining, which is too vague to place anything. The reviews say things like Best gelato in Vegas, which is specific but buried in noise. The phone number is the real evidence, since 212 means New York and 702 means Las Vegas, except that it is written 702/876-4190 in one row and +1702-385-7111 in the next.
That is what a text-rich table looks like. The clue that decides the answer sits somewhere in the row, in free text, in an inconsistent format, and nothing tells you which column it is in.
Why it matters
Language models are good at reading exactly this kind of evidence, so recent work asks them to do the filling. The usual way is to hand the model the whole table, or a large slice of it, and hope.
That runs into three problems at once. Large tables do not fit in the prompt. Irrelevant columns dilute the one column that mattered, so the answer can get worse the more you supply. And when everything goes in, nothing comes out about why, so a filled value can only be trusted, never checked.
Main idea
Build a small, targeted context for each individual blank.
LDI does two things before the model is called. First it works out which columns carry the signal. Rather than looking for clean rules of the form one column determines another, which real data rarely offers, it groups the rows by their city and looks for text fragments that turn up often inside one group and hardly ever outside it. The fragment 702 does this and survives. The rating text that every review carries turns up in all the groups alike, so it distinguishes nothing and is dropped. Working at the level of fragments rather than whole values is what makes this hold up against messy formatting, since +1702, 702/ and 702- all still contain the 702.
Then it picks the example rows. Among the rows that do have a city, it ranks them by how much literal text they share with the incomplete row, measured only on the columns it just selected, and keeps the top few while making sure their cities are not all the same. Similar examples make the pattern visible, and different answers stop the model from simply copying.
Those columns and those rows go into a single prompt and the model fills the blank. There is no fine-tuning and no training data.
Because the context is assembled rather than dumped, the method can say for any filled value which columns it used, what pattern made each one look relevant, and which rows served as evidence.
The result
LDI was tested on four datasets against both traditional imputation methods and other language model approaches, and it comes out ahead of the state of the art. On the dataset with the most columns it keeps 2 out of 16, which cuts the text sent to the model by about 96% while making each prediction traceable.
The clearest signal comes from swapping the hosted model for a small open source one. The advantage over the baseline widens on every dataset, because a small model has the least room to spare and suffers most when the prompt is padded with columns and examples that do not bear on the question. That also makes the method practical for data that cannot be sent anywhere.