我有一首诗,我希望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/

10-11 09:06