function ngram(dirty, n = 2) {
let clean = dirty;
clean = clean
.toLowerCase()
.replace(/\p{P}|\p{Control}|\s+/gu, "")
.normalize("NFD")
.replace(/\p{Diacritic}/gu, "");
clean = removeNonDiacriticSpecialChars(clean);
let allNgrams = [];
for (var i = 0; i <= clean.length - n; i++) {
allNgrams.push(clean.slice(i, i + n));
}
const sortedNgrams = allNgrams.sort((a, b) => a.localeCompare(b));
const dedupNgrams = Array.from(new Set(sortedNgrams))
.join("");
return dedupNgrams;
}