Identificar strings ao remover substrings em python

Eu tenho um dicionário de palavras com suas frequências da seguinte maneira.

mydictionary = {'yummy tim tam':3, 'milk':2, 'chocolates':5, 'biscuit pudding':3, 'sugar':2}

Eu tenho um conjunto de seqüências de caracteres (sinais de pontuação removidos) da seguinte maneira.

recipes_book = "For todays lesson we will show you how to make biscuit pudding using 
yummy tim tam milk and rawsugar"

Na string acima, preciso apenas produzir "pudim de biscoito", "gostoso tim tam" e "leite" consultando o dicionário. NÃO açúcar, porque seu açúcar bruto na corda.

No entanto, o código que estou usando atualmente também produz açúcar.

mydictionary = {'yummy tim tam':3, 'milk':2, 'chocolates':5, 'biscuit pudding':3, 'sugar':2}
recipes_book = "For today's lesson we will show you how to make biscuit pudding using yummy tim tam milk and rawsugar"
searcher = re.compile(r'{}'.format("|".join(mydictionary.keys())), flags=re.I | re.S)

for match in searcher.findall(recipes_book):
    print(match)

Como evitar o uso de sub-strings como essa e considerar apenas um tokens completos, como 'milk'. Por favor me ajude.

questionAnswers(3)

yourAnswerToTheQuestion