A Constraint-based Approach to Rhyme