How I Built An Algorithm To Name Our Products

How I Built An Algorithm To Name Our Products

by Mike Ricotta - June 13, 2017

As an artist, branding has always been a welcomed creative respite from the engineered world I live in. It represented a chance to rebel against processes and create something simple and attractive. As a businessman, however, successful branding and marketing has proven to be much more impactful than I could trust simple artistry to accomplish and after years of engineering, I seemed to hit a bit of a creative block, so I looked toward more pragmatic thinking. Modern art itself has crossed into engineering, past Rube Goldberg machines, toward animated and mechanical sculptures, 3D printing, LED and musical programming, and the like. With psychology playing such a large part in both art and marketing, I decided to give engineering a chance at augmenting my creativity for a change.

I began by assembling a list of recognizable sector-relevant brands and attempted to identify patterns in those brands. As I analyzed these, I resolved to break these brand-words down further, into dictionary recognizable terms, like root words, prefixes, and suffixes. As time went on and my brand-list was revisited and revised, I determined that as the world adapts to naming trends, my analysis would have to be scalable and real-time adjusted.

At this point, I needed a programmatic solution that could loop through my brand list and draw these patterns and determinations for me, so… I did exactly that [on 6/11/17]. I created a recursive algorithm that would analyze each segment of a brand-word just as well as the brand-word as a whole. It starts by recording basic character properties like total count, count per segment, max consecutive vowels and consonants, leading and trailing characters/vowels/consonants, and double characters, to draw upon letter and length patterns. Based on the popularity of patterns in our sample data, it then assigns a weight to each property and a strict min-max range where applicable. It soon occurred to me that there was much more to this than just the legibility and recognition of a written word and so began my DIY linguistics training.

[reads articles, watches videos… drinks coffee…watches Aaron Judge hit homeruns and Golden State hit 3’s…returns to coding]

Given my newfound rudimentary understanding of phonology, I set out to draw upon patterns in the spoken words of each brand-word. The most major addition, which I considered prior to programming my letter patterns (yes, my chronology is a white lie), was the introduction of syllable count. Low syllable count is critical in the virality of a brand and is often relative to a fairly tight character count range. This was also treated as a weighted and min-max property value. In today’s world of consumer-driven eCommerce leads, however, the weight of recognizable letter patterns is also important in ensuring new consumers and organic traffic can find/recognize you, as well as the visual recognition and perceived legitimacy of a brand, so the algorithm does not differ the weights between phonetic and character patterns. However, this is an area I will program (teach) the algorithm to weigh and reassess in future revisions.

In addition to syllables, the algorithm draws upon dictionary provided pronunciations and phonemes, to determine similarities in sounds and pronunciation, with weighted values. Special characters used in phonetics are queried for popularity and presence, like those seen in the phonetic definition of Arcane [seen on right]google arcane pronunciation I then decided to quantify the importance and pattern of segment recognition within a brand-word.

Using dictionary provided data, the algorithm collects the frequency of use score for each segment. I didn’t want to muddy the data by using the brand-word itself, as our sample data is mostly household recognizable. However, some brand-words have only one segment and as far as brands go, the recognition of a single English word in a single-worded brand carries a great deal of weight, so the algorithm does include these. Given the variety of data, this property is passed as a strict min-max range.

With all of the patterns that my algorithm determines, entirely programmatically, it then queries the English dictionary for all words matching segment patterns, ranked by weight. The end result is only a few hundred words but segments alone make up only a fraction of the permutations that are permitted within the brand-word patterns (ie. greater character count). In knowing this from its character analysis, the script then builds a list of all permutations of the previously returned segments, which fall within the parameters of brand-word patterns. The end result was many thousand results of new brand-words.

To take the process a step further, the script then aims to identify plausible brands for use, by querying domain registrars with our new brand-words. After analyzing availability and price, we were given a final list of thousands of plausible domains and ultimately, brand names, for us to consider. We will be adjusting our script to greater learn and adjust weights and additional properties in the future, as we roll-out new products, this summer. We also aim to provide this service to our customers, through a simple search function that will incorporate search terms with synonym, category, and type-of properties in strict consideration, for the future.

[Edit 6/14/17]

As indicated in paragraph 4(5?), I’ve extended this algorithm to change with trends by weighing the properties and property values, by frequency. I will write a more in depth article on this, in the future. For now, here’s a summary of what I’ve done:

We mentioned that lower syllable counts are critical and while it shows in our sample data, our algorithm will take that into consideration. Suppose our algorithm finds that 8/10 segments have 1 syllable and 2/10 have 2 syllables. It will thereby weigh 1 syllable segments as 0.8 and 2 syllable segments as 0.2. It will also give syllables as a property, a weight of 0.8 because it’s 80% reliable as a measurement of consistency by both its highest weight of 0.8 and being that only 2 values are unique (ie. 2/10 possibilities are unique, therefore 0.8 consistent). The syllable weight for a 1 syllable value might be 0.8*0.8 (0.64). Properties which have more unique values would thereby be reduced in weight. For instance, if a property’s sample data has 10 values which are all unique, the weight of each value would be 0.10 and the property’s weight would be 0.10. Supposing the following sample data [3,4,6,5,6,6,8,3,2,4]: value 3 has a weight of 0.2 (occurs 2/10 times); the data set has a mode (6) weight 0.3 and 6 unique values (consistency of 0.4); those values are therefore taken into consideration in weighing the property itself.