importmarimoasmoimportpandasaspdfromnovelentitymatcherimportMatchermo.md("""# Zero-Shot Country Matching ExplorerType a country name (with typos, aliases, or alternate languages) and see howthe Matcher resolves it to a canonical entity — no training required.""")
query_input=mo.ui.text(value="Deutchland",label="Enter a country name (try typos!):",full_width=True,)top_k_slider=mo.ui.slider(1,5,value=3,label="Top-K results")mo.hstack([query_input,top_k_slider],justify="start")
_query=query_input.value_k=top_k_slider.value_empty=not_query.strip()if_empty:table_output=mo.md("Type something above to search!")else:_results=matcher.match(_query,top_k=_k)ifisinstance(_results,list):_df=pd.DataFrame(_results)else:_df=pd.DataFrame([_results])table_output=mo.ui.table(_df,label=f"Matches for '{_query}'")table_output
_query=query_input.valueif_query.strip():_result=matcher.match(_query)_entry=_resultifisinstance(_result,dict)else_result_best_id=_entry.get("id","N/A")ifisinstance(_entry,dict)else"N/A"_best_score=_entry.get("score",0)ifisinstance(_entry,dict)else0summary=mo.md(f"**Best match:** `{_best_id}` with confidence **{_best_score:.2%}**")else:summary=mo.md("")summary