Anonymization transforms data by replacing or obscuring identifying information. In multilingual chatbot datasets, name substitution makes conversations shareable while preserving realistic interaction patterns. section 8.2
RNN models can support anonymization through named entity recognition and generation of fictional names, social security numbers, telephone numbers, and other PII. This process remains imperfect: names cross nationality boundaries, language categories overlap, and dataset bias can limit representation. section 8.2
Building a global surname resource
A surname–nationality dataset combines public APIs and internal chatbot data, then expands underrepresented regions. Inspecting duplicate surnames reveals ambiguity: Michel appears across six nationality categories, making deterministic identification unreliable. section 8.2
Listing 8.3 Loading the surname data
>>> repo = 'tangibleai/nlpia2' #1
>>> filepath = 'src/nlpia2/data/surname-nationality.csv.gz'
>>> url = f"https://gitlab.com/{repo}/-/raw/main/{filepath}"
>>> df = pd.read_csv(url) #2
>>> df[['surname', 'nationality']].sort_values('surname').head(9)
surname nationality
16760 Aalbers Dutch
16829 Aalders Dutch
35706 Aalsburg Dutch
35707 Aalst Dutch
11070 Aalto Finnish
11052 Aaltonen Finnish
10853 Aarab Moroccan
35708 Aarle Dutch
11410 Aarnio Finnish
Load and inspect the surname–nationality dataset used to develop anonymization mappings. section 8.2





