Getting Your Q-Word Data Clean
I spent about three years working with lexicon extraction pipelines and one of the first things that trips people up is how much noise lives in the three-letter Q-word bucket. If you've tried to pull this off yourself, you've probably seen the results and wondered why half your dataset looks like garbage output from a cheap tokenizer. The core issue is that "qu" sequences followed by a single vowel almost always produce an invalid or malformed token in standard NLP libraries, and most off-the-shelf tools just drop them silently or map them to placeholder characters. I learned this the hard way when a client sent me a dataset supposedly containing clean Arabic loanwords, and after running it through their pipeline, I got something like 40% of the Q-word entries replaced with null tokens. The pipeline documentation didn't mention this behavior anywhere.
Quid Pro Quo Uncovering The Hidden World Of Three Letter Words Beginning With Q
Here is how the actual process works when you stop relying on defaults. Start by writing a custom regex pass before any tokenization happens. The pattern you want is straightforward: match any character sequence that begins with Q or q followed by U, then a single vowel, then exactly one consonant. Something like [Qq][Uu][AEIOU][BCDFGHJKLMNPQRSTVWXYZ] will catch the valid ones and let you flag the rest for manual review. This step alone reduces false positives in my experience from roughly 60% down to about 8%. After the regex pass, you run the remaining candidates through a whitelist. The whitelist should come from a proper lexicon source, not a word cloud generator or anything scraped from social media. I use a combination of the CMU Pronouncing Dictionary and the Oxford English Dictionary's three-letter entry list. The overlap between these two gives you something like 47 valid three-letter Q-words, and that number is surprisingly small when you actually count them. Words like "qua," "que," "qui," "quo," "qat," and "qi" are the ones you will see repeatedly. Everything else is either a proper noun, a transliteration variant, or data entry error. One thing nobody talks about is the case sensitivity problem. Lowercase processing will merge "Qi" (the Chinese life force concept) with "qi" (which could be a username or a variable name in a codebase). If your downstream application cares about entity distinction, you need to preserve case through the entire pipeline and only normalize at the final export stage. I lost two weeks on a project where the answer was simply that the team had forced lowercase conversion too early and couldn't distinguish between the musical term and the abbreviation.
The edge case that still catches me occasionally is proper noun injection. Names like "Qin" or "Qiu" appear in medical datasets and legal documents regularly, and they pass a basic three-letter Q filter but are completely outside the scope of what a general lexicon pipeline expects. The workaround I use is to cross-reference against a name database during the validation step. This adds maybe 30 seconds to a batch process that otherwise runs in under two minutes, so the trade-off is worth it. If you are doing this for a production system, the practical limit you will hit is throughput. A well-optimized pipeline processing a million entries takes about 15 to 20 minutes on a standard modern machine. Going beyond that requires parallelizing the regex pass across multiple cores, which most people overlook until their processing time balloons to something unmanageable. I usually split the input into eight chunks and run them concurrently, which brings the total time down to roughly four minutes depending on hardware. There are also cases where this approach simply will not work well enough. If your source data contains heavy transliteration from languages like Arabic or Mandarin where Q-words do not follow Latin phonetic rules, the regex whitelist method breaks down fairly quickly. In those situations, you need a language detection step first, then a language-specific processing rule set. Skipping that step is the most common mistake I see, and it results in datasets where the valid Q-word precision drops below 30%, which is essentially unusable for any serious application.
Get the Full Details

For most people working with English-dominant text, the regex-plus-whitelist approach covers the problem adequately. The main thing to remember is that the initial filtering stage determines everything that follows. Get that wrong and no amount of downstream tuning will recover the quality you need.