我试图做一个方法,它可以检查给定的短语是否至少匹配短语列表中的一个项目并返回它们。输入是短语,短语列表和同义词列表的词典。重点是使其具有普遍性。按给定的短语返回匹配列表
这里是例子:
phrase = 'This is a little house'
dictSyns = {'little':['small','tiny','little'],
'house':['cottage','house']}
listPhrases = ['This is a tiny house','This is a small cottage','This is a small building','I need advice']
我可以创建一个代码,可以做到这一点在这个例子中,它返回布尔:
if any('This'+' '+'is'+' '+'a'+x+' '+y == phrase for x in dictSyns['little'] for y in dictSyns['house']):
print 'match'
的第一点是,我要创建功能这将是普遍的(取决于结果)。第二个是我想要这个函数返回匹配短语的列表。
你能给我一个建议如何做到这一点,所以在这种情况下该方法返回['This is a tiny house','This is a small cottage']
?
输出将是这样的:
>>> getMatches(phrase, dictSyns, listPhrases)
['This is a tiny house','This is a small cottage']
谢谢,它帮助很大。非常好的方法。例:我会改变这一行:如果new_phrase.lowercase()在[x.lowercase()for x in短语中] ..标点符号(昏迷和点):我会使用.strip(',').strip('。 ') – 2014-11-25 10:55:30
@Milan指出你的小写处理方式效率极低,因为它为每个'new_phrase'重新处理'短语',不使用'set',并且在生成新短语时不包括小写字母。您还必须仔细考虑在哪个步骤“剥离”(注意,您可以仅剥离(“,。”)')。 – jonrsharpe 2014-11-25 10:57:22