Word generation is a straight forward process with language modeling. Language modeling works by looking at frequencies of commonly occurring terms or characters. A new word is generated by iteratively selecting characters based on how likely they are to follow the part of the word already generated. Lets say the name generate randomly draws ‘M’ for the first character. Almost 61% most names that begin with an ‘M’ have an ‘a’ for the next character (e.g. Mary). An additional 6% of names beginning with ‘M’ have an ‘e’ for the second character (e.g. Melissa). The character ‘b’ never follows ‘M’, at least not in 2014. Thus the language model would then select an ‘a’ to follow ‘M’ with ~61% probability, an ‘e’ with ~6% probability, and a ‘b’ with near 0 probability. The end result is a new sequence of characters that would reasonably follow each other. Some of my favorite generated names so far are Delyn, Alexandrina, and Zanda.

I am proud of the mathematics that went into my app, but I feel like the app itself is still missing something. I’ve been thinking back to the naming process with the girls. We had already chosen ‘Nicole’ as our girl name before becoming pregnant the first time. Alexis was harder to name. We debated between ‘Alexis’, ‘Allison’, and even ‘Alexandra’ for a while. I wanted an ‘A’ name. Its probably pretty common to have a preferred prefix or suffix in a name, so I added that capability. I want to add more features to my name generator, but I’m not sure what will be useful.

Here’s my question for you: What kind of things did you think about when naming your child? Did you have a specific sound you were looking for? Or meaning?