I have a poem and I want the Python code to just print those words which are rhyming with each other.
So far I am able to:
Here I found a way to find rhymes to a given word using NLTK:
def rhyme(inp, level): entries = nltk.corpus.cmudict.entries() syllables = [(word, syl) for word, syl in entries if word == inp] rhymes =  for (word, syllable) in syllables: rhymes += [word for word, pron in entries if pron[-level:] == syllable[-level:]] return set(rhymes)
imp is a word and
level means how good the rhyme should be.
So you could use this function and to check if 2 words rhyme you could just check if one is in other's set of allowed rhymes:
def doTheyRhyme ( word1, word2 ): # first, we don't want to report 'glue' and 'unglue' as rhyming words # those kind of rhymes are LAME if word1.find ( word2 ) == len(word1) - len ( word2 ): return False if word2.find ( word1 ) == len ( word2 ) - len ( word1 ): return False return word1 in rhyme ( word2, 1 )