我有一首诗,我希望Python代码只打印那些彼此押韵的单词.
到目前为止,我能够:
wordpunct_tokenize()cmudict.entries()元素作为最后的单词及其发音生成另一个列表.我坚持下一步.我该如何尝试匹配这些发音?总而言之,我的主要任务是找出两个给定的单词是否押韵.若韵,则返回True,否则False.
Jef*_*son 12
该Pronouncing库做了伟大的工作了点.没有黑客攻击,快速加载,并且基于CMU发音字典,所以它是可靠的.
https://pypi.python.org/pypi/pronouncing
从他们的文件:
>>> import pronouncing
>>> pronouncing.rhymes("climbing")
['diming', 'liming', 'priming', 'rhyming', 'timing']
Run Code Online (Sandbox Code Playgroud)
在这里,我找到了一种使用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)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)