Using Computation and Analysis for Business Insights
3
|
Choose a Compelling Business Name
Introduction
This section will show several aspects of Wolfram Language and will use the context of creating a business plan to illustrate that functionality. One of the first parts of a business plan is choosing a company name. Many large internet companies have two o’s in their business name. A few examples are Google, Yahoo, Facebook and Zoom. Can we use computation to pick our own business name that also has two consecutive o’s?

Wolfram Curated Data & Finding Patterns

The first step of this computation is to access a dictionary with all possible English language words. Wolfram Language has many built-in datasets, one of which is a dictionary. This dictionary is especially focused on scientific and technical concepts, which might be useful for a scientific company name. The specific function name to access the dictionary is WordData:
In[]:=
WordData[All]
Out[]=
{0,1,10,100,1000,10000,100000,1000000,1000000000,1000000000000,1000th,100th,101,101st,105,105th,10-membered,10th,11,110,110th,
⋯149149⋯
,Zygomycota,Zygomycotina,Zygophyllaceae,Zygophyllum,Zygophyllum fabago,Zygoptera,zygospore,zygote,zygotene,zygotic,Zyloprim,zymase,zymogen,zymoid,zymology,zymolysis,zymolytic,zymosis,zymotic,zymurgy,Zyrian}
Full expression not available
(
original memory size:
7.2 MB)
The output above contains the first few words and the last few words in the dictionary, with a notation that there are 149,151 words not being displayed.
Next, we want to test each word against our desired pattern. Meaning, we want to test whether the word has two consecutive o’s. The command StringCases can be used to specify this pattern. The following calculation tests the word “google” to see if it satisfies the pattern of having any quantity of characters at the start of the word, joined by “oo,” then joined by any quantity of characters at the end of the word:
In[]:=
StringCases["google",___~~"oo"~~___]
Out[]=
{google}
The result confirms the word “google” does satisfy this pattern. Instead of testing just one word, a list of words can be used with the command StringCases to see which words satisfy this pattern. Remember, curly brackets are used for a list or dataset:
In[]:=
StringCases[{"google","afternoon","sample","last"},___~~"oo"~~___]
Out[]=
{{google},{afternoon},{},{}}
The result confirms “google” and “afternoon” satisfy the pattern, but “sample” and “last” do not.
Scaling up further, this same calculation can be used for all ~150,000 words in Wolfram’s dataset of words. The code for the calculation is actually shorter. The results are saved with the symbol doubleLetter:
In[]:=
doubleLetter=StringCases[WordData[All],___~~"oo"~~___]
Out[]=
{{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},
⋯149057⋯
,{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{zygodactyl foot},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}}
Full expression not available
(
original memory size:
7.3 MB)
At this point, we’re getting pretty close to the desired result. But StringCases prints an empty list for cases where the pattern is not satisfied. So a function like DeleteCases can eliminate those empty results:
In[]:=
Short[DeleteCases[doubleLetter,{}]]
Out[]//Short=
{{1st Baron Beaverbrook},3842,{zygodactyl foot}}
There are roughly ~3,800 entries in WordData that satisfy the pattern, so the Short function prints only a subset to the screen to save space.
The Part function works with any list and can also be used to return the first through the 125
th
value in the list using the notation ;; which is the Span function in Wolfram Language. This gives us a nice summary of the results without being too overwhelming:
In[]:=
Part[DeleteCases[doubleLetter,{}],1;;125]
Out[]=
{{1st Baron Beaverbrook},{Abel Janszoon Tasman},{abloom},{ABO blood group system},{aboon},{abscessed tooth},{Accipiter cooperii},{accordion door},{account book},{acre-foot},{Adeline Virginia Stephen Woolf},{adjoining room},{Adolf Loos},{adulthood},{adult tooth},{adventitious root},{afoot},{African sandalwood},{African yellowwood},{afternoon},{afternoon tea},{after-school},{a good deal},{ague root},{ahchoo},{air-cool},{air-cooled},{alder dogwood},{alehoof},{Alexander Woollcott},{Alfred Alistair Cooke},{Alfred Edward Woodley Mason},{Alistair Cooke},{All Fools' day},{allgood},{all too},{almond cookie},{aloof},{aloofness},{alpine coltsfoot},{Alpine woodsia},{Al Qanoon},{Altoona},{alumbloom},{alumroot},{American arrowroot},{American basswood},{American brooklime},{American coot},{American dogwood},{American football},{American football game},{American smokewood},{American smooth dogfish},{American woodcock},{Andaman redwood},{angel food cake},{angiospermous yellowwood},{angled loofah},{animal foot},{animated cartoon},{anise cookie},{Anna Eleanor Roosevelt},{anterior root},{anteroom},{Apeldoorn},{Appaloosa},{applewood},{appointment book},{April fool},{April Fools'},{April Fools' day},{arrester hook},{arrowroot},{arrowroot family},{arrow wood},{arterial blood},{arterial blood gases},{arterial blood vessel},{artificial blood},{artist's workroom},{art school},{Ashcan school},{Ashcan School},{association football},{athlete's foot},{Atlantic moonfish},{Australian hare's foot},{autumn-blooming},{baboo},{baboon},{baboonish},{baby boom},{baby boomer},{baby-boom generation},{babyhood},{baby's room},{baby tooth},{bachelorhood},{back door},{backdoor},{back room},{backroom},{backroom boy},{back tooth},{backwoods},{backwoodsman},{bad blood},{baked goods},{balloon},{balloon bomb},{balloonfish},{balloon flower},{ballooning},{balloonist},{balloon sail},{balloon seat},{balloon vine},{ballroom},{ballroom dance},{ballroom dancing},{ballroom music},{ballyhoo},{ballyhoo artist},{balsamroot}}
Scanning through the rest of the list might give more ideas, but a company name of Balloonist, which has two repeating letters, might be a nice name.

Summary

We could visually scan through a small list of words to find words that satisfy a certain pattern. But the value in a computational approach is that it scales to larger datasets, which would be a tedious process for a human.
DownloadNotebook»