我有一首诗,我希望python代码只打印那些彼此押韵的单词。
到目前为止,我能够:
使用wordpunct_tokenize()
清除标点符号以清除单词
将诗中每句的最后一个词存储在一个列表中
使用带有元素作为最后一个单词及其发音的cmudict.entries()
生成另一个列表。
我被下一步困住了。我应该如何匹配这些发音?总之,我的主要任务是找出两个给定的词是否押韵。如果押韵,则返回“True
”,否则返回“False
”。
最佳答案
我找到了一种使用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)
其中,
inp
是一个单词,level
表示押韵应该有多好。所以你可以使用这个函数来检查两个词是否押韵,你只需检查一个词是否在另一个允许的押韵集合中:
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)
关于python - 在Python中使用NLTK查找押韵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25714531/