You mentioned that you used the lyrics from 50,000 rap songs. Did you have any filters for quality or certain sub-genres? What era were the rap songs from? Maybe the 'quality' would be higher if the data set was narrowed to what you consider quality hip hop lyrics.
Also from your post: "You can see that D-Prime does internally rhyme to a small extent, but making the model better in this regard seemed like it was going to be tough, and I didn’t pursue it." What were your main challenges to improving/pursing better internal rhyme schemes?