@ -145,8 +145,6 @@ I've also been writing limericks my entire life and hold the International Limer
:CUSTOM_ID: executive-summary
:CUSTOM_ID: executive-summary
:END:
:END:
Write an executive summary directed to IT professionals that addresses each of the following requirements:
** Decision Support Opportunity
** Decision Support Opportunity
Songwriters expend a lot of time and effort finding the perfect rhyming word or phrase. RhymeStorm™ is going to amplify user's creative abilities by searching its machine learning model for sensible and proven-successful words and phrases that meet the rhyme scheme and meter requirements requested by the user.
Songwriters expend a lot of time and effort finding the perfect rhyming word or phrase. RhymeStorm™ is going to amplify user's creative abilities by searching its machine learning model for sensible and proven-successful words and phrases that meet the rhyme scheme and meter requirements requested by the user.
@ -225,8 +223,6 @@ In anticipation of user growth, I'll be deploying the final product on DigitalOc
** Requirements Validation And Verification
** Requirements Validation And Verification
the methods for validating and verifying that the developed data product meets the requirements and subsequently the needs of the customers
For the known requirements, I'll perform personally perform manual tests and quality assurance. This is a small enough project that one individual can thoroughly test all of the primary requirements.
For the known requirements, I'll perform personally perform manual tests and quality assurance. This is a small enough project that one individual can thoroughly test all of the primary requirements.
Since the project is broken down into isolated sub-projects, unit tests will be added to the sub-projects to make sure they meet their own goals and performance standards.
Since the project is broken down into isolated sub-projects, unit tests will be added to the sub-projects to make sure they meet their own goals and performance standards.
@ -235,8 +231,6 @@ The final website will integrate multiple technologies and the integrations won'
** Programming Environments And Costs
** Programming Environments And Costs
the programming environments and any related costs, as well as the human resources that are necessary to execute each phase in the development of the data product
One of the benefits of a Hidden Markov Model is its relative computational affordability when compared to other machine learning techniques, like Deep Neural Networks.
One of the benefits of a Hidden Markov Model is its relative computational affordability when compared to other machine learning techniques, like Deep Neural Networks.
We don't require a GPU or long training times on powerful computers. The over 200,000 songs obtained from http://darklyrics.com can be trained into a 4-gram Hidden Markov Model in just a few hours on a consumer laptop.
We don't require a GPU or long training times on powerful computers. The over 200,000 songs obtained from http://darklyrics.com can be trained into a 4-gram Hidden Markov Model in just a few hours on a consumer laptop.
@ -829,7 +823,7 @@ You'll see 3 input fields.
The first input field is for a word or phrase for which you wish to find a rhyme. Submitting that field will return three visualizations to help you pick a rhyme.
The first input field is for a word or phrase for which you wish to find a rhyme. Submitting that field will return three visualizations to help you pick a rhyme.
The first visualization is a scatter plot of rhyming words with the "quality" of the rhyme on the Y axis and the number of times that rhyming word/phrase occurrs in the training corpus on the X axis.
The first visualization is a scatter plot of rhyming words with the "quality" of the rhyme on the Y axis and the number of times that rhyming word/phrase occurs in the training corpus on the X axis.
[[file:images/wgu-vis.png]]
[[file:images/wgu-vis.png]]
@ -846,11 +840,15 @@ The third visualization is a table that lists all of the rhymes, their pronuncia
:CUSTOM_ID: remaining-documentation
:CUSTOM_ID: remaining-documentation
:END:
:END:
Create each of the following forms of documentation for the product you have developed:
** Business Vision
** Business Vision
Provide rhyming lyric suggestions optionally constrained by syllable count.
Supercharge songwriter's abilities with automated rhyming lyric suggestions for brainstorming.
Without the physical constraints imposed by paperpack rhyming dictionaries, and with the full power of machine learning training, RhymeStorm™ will find rhymes don't show up in typical rhyming dictionaries.
Rhymes and lyric suggestions will further be honed to target specific genres based on the training data set.
These two features combine with the speed of modern-day processing to provide rapid-fire rhyming suggestions never before seen.
*** Requirements
*** Requirements
@ -929,10 +927,18 @@ and more.
** Visualizations
** Visualizations
RhymeStorm™ provides three visualizations to help songwriter's find the perfect lyric.
The first visualization is a scatterplot comparing rhyme quality to frequency that the rhyming word or phrase appears in the training corpus.
[[file:images/rhyme-scatterplot.png]]
[[file:images/rhyme-scatterplot.png]]
The second visualization is a word cloud where each word's size is in proportion to the frequency with which the word appears in the training corpus.
[[file:images/wordcloud.png]]
[[file:images/wordcloud.png]]
And the third visualization is a sorted table of rhyme suggestions. The rhymes are sorted first by quality and then by popularity.
[[file:images/rhyme-table.png]]
[[file:images/rhyme-table.png]]
** Accuracy
** Accuracy
@ -1035,6 +1041,8 @@ Here is an example of the test suite for the code related to syllabification: [[
** Source Code
** Source Code
I wrote three Clojure libraries and one Clojure application that combine to make RhymeStorm™.
*** Tightly Packed Trie
*** Tightly Packed Trie
This is the data structure that backs the Hidden Markov Model.
This is the data structure that backs the Hidden Markov Model.
It’s probably not necessary for you to replicate my development environment in order to evaluate this project. You can access the deployed application at <ahref="https://darklimericks.com/wgu">https://darklimericks.com/wgu</a> and the libraries and supporting code that I wrote for this project at <ahref="https://github.com/eihli/clj-tightly-packed-trie">https://github.com/eihli/clj-tightly-packed-trie</a>, <ahref="https://github.com/eihli/syllabify">https://github.com/eihli/syllabify</a>, and <ahref="https://github.com/eihli/prhyme">https://github.com/eihli/prhyme</a>. The web server and web application is not hosted publicly but you will find it uploaded with my submission as a <code>.tar</code> archive.
It’s probably not necessary for you to replicate my development environment in order to evaluate this project. You can access the deployed application at <ahref="https://darklimericks.com/wgu">https://darklimericks.com/wgu</a> and the libraries and supporting code that I wrote for this project at <ahref="https://github.com/eihli/clj-tightly-packed-trie">https://github.com/eihli/clj-tightly-packed-trie</a>, <ahref="https://github.com/eihli/syllabify">https://github.com/eihli/syllabify</a>, and <ahref="https://github.com/eihli/prhyme">https://github.com/eihli/prhyme</a>. The web server and web application is not hosted publicly but you will find it uploaded with my submission as a <code>.tar</code> archive.
<h3id="orgebb7bab"><spanclass="section-number-3">3.1</span> Problem Summary</h3>
<h3id="org5ee843e"><spanclass="section-number-3">3.1</span> Problem Summary</h3>
<divclass="outline-text-3"id="text-3-1">
<divclass="outline-text-3"id="text-3-1">
<p>
<p>
Songwriters, artists, and record labels can save time and discover better lyrics with the help of a machine learning tool that supports their creative endeavours.
Songwriters, artists, and record labels can save time and discover better lyrics with the help of a machine learning tool that supports their creative endeavours.
@ -449,8 +449,8 @@ Songwriters have several old-fashioned tools at their disposal including diction
How many sensible phrases can you think of that rhyme with “war on poverty”? What if I say that there’s a restriction to only come up with phrases that are exactly 14 syllables? That’s a common restriction when a songwriter is trying to match the meter of a previous line. What if I add another restriction that there must be primary stress at certain spots in that 14 syllable phrase?
How many sensible phrases can you think of that rhyme with “war on poverty”? What if I say that there’s a restriction to only come up with phrases that are exactly 14 syllables? That’s a common restriction when a songwriter is trying to match the meter of a previous line. What if I add another restriction that there must be primary stress at certain spots in that 14 syllable phrase?
@ -466,8 +466,8 @@ And this is a process that is perfect for machine learning. Machine learning can
RhymeStorm™ is a tool to help songwriters brainstorm. It provides lyrics automatically generated based on training data from existing songs while adhering to restrictions based on rhyme scheme, meter, genre, and more.
RhymeStorm™ is a tool to help songwriters brainstorm. It provides lyrics automatically generated based on training data from existing songs while adhering to restrictions based on rhyme scheme, meter, genre, and more.
@ -495,8 +495,8 @@ This auto-complete functionality will be similar to the auto-complete that is co
The initial model will be trained on the lyrics from <ahref="http://darklyrics.com">http://darklyrics.com</a>. This is a publicly available data set with minimal meta-data. Record labels will have more valuable datasets that will include meta-data along with lyrics, such as the date the song was popular, the number of radio plays of the song, the profit of the song/artist, etc…
The initial model will be trained on the lyrics from <ahref="http://darklyrics.com">http://darklyrics.com</a>. This is a publicly available data set with minimal meta-data. Record labels will have more valuable datasets that will include meta-data along with lyrics, such as the date the song was popular, the number of radio plays of the song, the profit of the song/artist, etc…
@ -508,8 +508,8 @@ The software can be augmented with additional algorithms to account for the type
<h3id="orgbbc3e05"><spanclass="section-number-3">3.6</span> Development Methodology - Agile</h3>
<h3id="org8b76d5a"><spanclass="section-number-3">3.6</span> Development Methodology - Agile</h3>
<divclass="outline-text-3"id="text-3-6">
<divclass="outline-text-3"id="text-3-6">
<p>
<p>
This project will be developed with an iterative Agile methodology. Since a large part of data science and machine learning is exploration, this project will benefit from ongoing exploration in tandem with development.
This project will be developed with an iterative Agile methodology. Since a large part of data science and machine learning is exploration, this project will benefit from ongoing exploration in tandem with development.
@ -546,8 +546,8 @@ The prices quoted below are for an initial minimum-viable-product that will serv
Funding requirements are minimal. The initial dataset is public and freely available. On a typical consumer laptop, Hidden Markov Models can be trained on fairly large datasets in short time and the training doesn’t require the use of expensive hardware like the GPUs used to train Deep Neural Networks.
Funding requirements are minimal. The initial dataset is public and freely available. On a typical consumer laptop, Hidden Markov Models can be trained on fairly large datasets in short time and the training doesn’t require the use of expensive hardware like the GPUs used to train Deep Neural Networks.
@ -631,17 +631,17 @@ These are my estimates for the time and cost of different aspects of initial dev
The only stakeholders in the project will be the record labels or songwriters. I describe the only impact to them in the <ahref="#org2366696">3.2</a> section above.
The only stakeholders in the project will be the record labels or songwriters. I describe the only impact to them in the <ahref="#org890f8eb">3.2</a> section above.
<h3id="orgff1422e"><spanclass="section-number-3">3.9</span> Ethical And Legal Considerations</h3>
<h3id="org63d5a71"><spanclass="section-number-3">3.9</span> Ethical And Legal Considerations</h3>
<divclass="outline-text-3"id="text-3-9">
<divclass="outline-text-3"id="text-3-9">
<p>
<p>
Web scraping, the method used to obtain the initial dataset from <ahref="http://darklyrics.com">http://darklyrics.com</a>, is protected given the ruling in <ahref="https://en.wikipedia.org/wiki/HiQ_Labs_v._LinkedIn">https://en.wikipedia.org/wiki/HiQ_Labs_v._LinkedIn</a> (HiQ Labs v. LinkedIn 2021).
Web scraping, the method used to obtain the initial dataset from <ahref="http://darklyrics.com">http://darklyrics.com</a>, is protected given the ruling in <ahref="https://en.wikipedia.org/wiki/HiQ_Labs_v._LinkedIn">https://en.wikipedia.org/wiki/HiQ_Labs_v._LinkedIn</a> (HiQ Labs v. LinkedIn 2021).
@ -653,8 +653,8 @@ The use of publicly available data in generative works is less clear. But Micros
I have 10 years experience as a programmer and have worked extensively on both frontend technologies like HTML/JavaScript, backend technologies like Django, and building libraries/packages/frameworks.
I have 10 years experience as a programmer and have worked extensively on both frontend technologies like HTML/JavaScript, backend technologies like Django, and building libraries/packages/frameworks.
@ -670,13 +670,10 @@ I’ve also been writing limericks my entire life and hold the International
<h3id="orga01d182"><spanclass="section-number-3">4.1</span> Decision Support Opportunity</h3>
<h3id="org0ffe6ee"><spanclass="section-number-3">4.1</span> Decision Support Opportunity</h3>
<divclass="outline-text-3"id="text-4-1">
<divclass="outline-text-3"id="text-4-1">
<p>
<p>
Songwriters expend a lot of time and effort finding the perfect rhyming word or phrase. RhymeStorm™ is going to amplify user’s creative abilities by searching its machine learning model for sensible and proven-successful words and phrases that meet the rhyme scheme and meter requirements requested by the user.
Songwriters expend a lot of time and effort finding the perfect rhyming word or phrase. RhymeStorm™ is going to amplify user’s creative abilities by searching its machine learning model for sensible and proven-successful words and phrases that meet the rhyme scheme and meter requirements requested by the user.
@ -688,8 +685,8 @@ When a songwriter needs to find likely phrases that rhyme with “war on pov
<h3id="org3940b7a"><spanclass="section-number-3">4.2</span> Customer Needs And Product Description</h3>
<h3id="org24903e6"><spanclass="section-number-3">4.2</span> Customer Needs And Product Description</h3>
<divclass="outline-text-3"id="text-4-2">
<divclass="outline-text-3"id="text-4-2">
<p>
<p>
Songwriters spend money on dictionaries, compilations of slang, thesauruses, and phrase dictionaries. They spend their time daydreaming, brainstorming, contemplating, and mixing and matching the knowledge they acquire through these traditional means.
Songwriters spend money on dictionaries, compilations of slang, thesauruses, and phrase dictionaries. They spend their time daydreaming, brainstorming, contemplating, and mixing and matching the knowledge they acquire through these traditional means.
@ -709,8 +706,8 @@ Computers can process and sort this information and sort the results by quality
<h3id="org1f4bbcb"><spanclass="section-number-3">4.4</span> Available Data And Future Data Lifecycle</h3>
<h3id="orgd471480"><spanclass="section-number-3">4.4</span> Available Data And Future Data Lifecycle</h3>
<divclass="outline-text-3"id="text-4-4">
<divclass="outline-text-3"id="text-4-4">
<p>
<p>
The initial dataset will be gathered by downloading lyrics from <ahref="http://darklyrics.com">http://darklyrics.com</a> and future models can be generated by downloading lyrics from other websites. Alternatively, data can be provided by record labels and combined with meta-data that the record label may have, such as how many radio plays each song gets and how much profit they make from each song.
The initial dataset will be gathered by downloading lyrics from <ahref="http://darklyrics.com">http://darklyrics.com</a> and future models can be generated by downloading lyrics from other websites. Alternatively, data can be provided by record labels and combined with meta-data that the record label may have, such as how many radio plays each song gets and how much profit they make from each song.
@ -751,8 +748,8 @@ Each new model can be uploaded to the web server and users can select which mode
RhymeStorm™ development will proceed with an iterative Agile methodology. It will be composed of several independent modules that can be worked on independently, in parallel, and iteratively.
RhymeStorm™ development will proceed with an iterative Agile methodology. It will be composed of several independent modules that can be worked on independently, in parallel, and iteratively.
@ -776,8 +773,8 @@ Much of data science is exploratory and taking an iterative Agile approach can t
<h3id="org5ac346f"><spanclass="section-number-3">4.8</span> Requirements Validation And Verification</h3>
<h3id="org8467485"><spanclass="section-number-3">4.8</span> Requirements Validation And Verification</h3>
<divclass="outline-text-3"id="text-4-8">
<divclass="outline-text-3"id="text-4-8">
<p>
the methods for validating and verifying that the developed data product meets the requirements and subsequently the needs of the customers
</p>
<p>
<p>
For the known requirements, I’ll perform personally perform manual tests and quality assurance. This is a small enough project that one individual can thoroughly test all of the primary requirements.
For the known requirements, I’ll perform personally perform manual tests and quality assurance. This is a small enough project that one individual can thoroughly test all of the primary requirements.
</p>
</p>
@ -853,13 +846,9 @@ The final website will integrate multiple technologies and the integrations won&
<h3id="org111778f"><spanclass="section-number-3">4.9</span> Programming Environments And Costs</h3>
<h3id="orga48f74d"><spanclass="section-number-3">4.9</span> Programming Environments And Costs</h3>
<divclass="outline-text-3"id="text-4-9">
<divclass="outline-text-3"id="text-4-9">
<p>
the programming environments and any related costs, as well as the human resources that are necessary to execute each phase in the development of the data product
</p>
<p>
<p>
One of the benefits of a Hidden Markov Model is its relative computational affordability when compared to other machine learning techniques, like Deep Neural Networks.
One of the benefits of a Hidden Markov Model is its relative computational affordability when compared to other machine learning techniques, like Deep Neural Networks.
</p>
</p>
@ -878,8 +867,8 @@ All code was written and all models were trained on a Lenovo T15G with an Intel
<li><aid="org510f9eb"></a>Most Common Grammatical Structures In A Set Of Lyrics<br/>
<li><aid="org00830d9"></a>Most Common Grammatical Structures In A Set Of Lyrics<br/>
<divclass="outline-text-5"id="text-5-1-1-1">
<divclass="outline-text-5"id="text-5-1-1-1">
<p>
<p>
By filtering songs by metrics such as popularity, number of awards, etc… we can use this software package to determine the most common grammatical phrase structure for different filtered categories.
By filtering songs by metrics such as popularity, number of awards, etc… we can use this software package to determine the most common grammatical phrase structure for different filtered categories.
@ -1043,12 +1032,12 @@ In the example below, you’ll see that a simple noun-phrase is the most pop
Artists/Songwriters place a lot of value in the secrecy of their content. Therefore, all communication with the web-based interface occurs over a secure connection using HTTPS.
Artists/Songwriters place a lot of value in the secrecy of their content. Therefore, all communication with the web-based interface occurs over a secure connection using HTTPS.
@ -2053,15 +2042,15 @@ With this precaution in place, attackers will not be able to snoop the content t
<h3id="orgaab8668"><spanclass="section-number-3">5.11</span> Tools To Monitor And Maintain The Product</h3>
<h3id="org613bd8f"><spanclass="section-number-3">5.11</span> Tools To Monitor And Maintain The Product</h3>
<divclass="outline-text-3"id="text-5-11">
<divclass="outline-text-3"id="text-5-11">
<p>
<p>
By having the application server behind an HAProxy load balancer, we can take advantage of the built-in HAProxy stats page for monitoring amount of traffic and health of the application servers.
By having the application server behind an HAProxy load balancer, we can take advantage of the built-in HAProxy stats page for monitoring amount of traffic and health of the application servers.
</p>
</p>
<divid="org235130f" class="figure">
<divid="org2112f75" class="figure">
<p><imgsrc="images/stats.png"alt="stats.png"/>
<p><imgsrc="images/stats.png"alt="stats.png"/>
</p>
</p>
</div>
</div>
@ -2080,8 +2069,8 @@ The server also includes the <code>certbot</code> script for updating and mainta
<h3id="orgb54a6ca"><spanclass="section-number-3">5.12</span> A User-Friendly, Functional Dashboard That Includes At Least Three Visualization Types</h3>
<h3id="orgc6266b7"><spanclass="section-number-3">5.12</span> A User-Friendly, Functional Dashboard That Includes At Least Three Visualization Types</h3>
<divclass="outline-text-3"id="text-5-12">
<divclass="outline-text-3"id="text-5-12">
<p>
<p>
You can access an example of the user interface at <ahref="https://darklimericks.com/wgu">https://darklimericks.com/wgu</a>.
You can access an example of the user interface at <ahref="https://darklimericks.com/wgu">https://darklimericks.com/wgu</a>.
@ -2096,11 +2085,11 @@ The first input field is for a word or phrase for which you wish to find a rhyme
</p>
</p>
<p>
<p>
The first visualization is a scatter plot of rhyming words with the “quality” of the rhyme on the Y axis and the number of times that rhyming word/phrase occurrs in the training corpus on the X axis.
The first visualization is a scatter plot of rhyming words with the “quality” of the rhyme on the Y axis and the number of times that rhyming word/phrase occurs in the training corpus on the X axis.
<h3id="org953dbce"><spanclass="section-number-3">6.1</span> Business Vision</h3>
<h3id="org9df4605"><spanclass="section-number-3">6.1</span> Business Vision</h3>
<divclass="outline-text-3"id="text-6-1">
<divclass="outline-text-3"id="text-6-1">
<p>
<p>
Provide rhyming lyric suggestions optionally constrained by syllable count.
Supercharge songwriter’s abilities with automated rhyming lyric suggestions for brainstorming.
</p>
<p>
Without the physical constraints imposed by paperpack rhyming dictionaries, and with the full power of machine learning training, RhymeStorm™ will find rhymes don’t show up in typical rhyming dictionaries.
</p>
<p>
Rhymes and lyric suggestions will further be honed to target specific genres based on the training data set.
</p>
<p>
These two features combine with the speed of modern-day processing to provide rapid-fire rhyming suggestions never before seen.
The second visualization is a word cloud where each word’s size is in proportion to the frequency with which the word appears in the training corpus.
It’s difficult to objectively test the models accuracy since the goal of “brainstorm new lyric” is such a subjective goal. A valid test of that goal will require many human subjects to subjectively evaluate their performance while using the tool compared to their performance without the tool.
It’s difficult to objectively test the models accuracy since the goal of “brainstorm new lyric” is such a subjective goal. A valid test of that goal will require many human subjects to subjectively evaluate their performance while using the tool compared to their performance without the tool.
@ -2451,8 +2465,8 @@ If we allow ourselves the assumption that the close a generated phrase is to a v
<h4id="org564fa6e"><spanclass="section-number-4">6.6.1</span> Percentage Of Generated Lines That Are Valid English Sentences</h4>
<h4id="orgd2e3d30"><spanclass="section-number-4">6.6.1</span> Percentage Of Generated Lines That Are Valid English Sentences</h4>
<divclass="outline-text-4"id="text-6-6-1">
<divclass="outline-text-4"id="text-6-6-1">
<p>
<p>
We can use <ahref="https://opennlp.apache.org/">Apache OpenNLP</a> to parse sentences into a grammar structure conforming to the parts of speech specified by the <ahref="https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html">University of Pennsylvania’s Treebank Project</a>.
We can use <ahref="https://opennlp.apache.org/">Apache OpenNLP</a> to parse sentences into a grammar structure conforming to the parts of speech specified by the <ahref="https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html">University of Pennsylvania’s Treebank Project</a>.
@ -2530,8 +2544,8 @@ Where <code>nlp/valid-sentence?</code> is defined as follows.
My language of choice for this project encourages a programming technique or paradigm known as REPL-driven development. REPL stands for Read-Eval-Print-Loop. This is a way to write and test code in real-time without a compilation step. Individual code chunks can be evaluated inside an editor, resulting in rapid feedback.
My language of choice for this project encourages a programming technique or paradigm known as REPL-driven development. REPL stands for Read-Eval-Print-Loop. This is a way to write and test code in real-time without a compilation step. Individual code chunks can be evaluated inside an editor, resulting in rapid feedback.
@ -2575,12 +2589,16 @@ Here is an example of the test suite for the code related to syllabification: <a