Identificar cadenas al eliminar subcadenas en python

Tengo un diccionario de palabras con sus frecuencias de la siguiente manera.

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

Tengo un conjunto de cadenas (signos de puntuación eliminados) de la siguiente manera.

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

En la cadena anterior, solo necesito la salida "pudín de galletas", "delicioso tim tam" y "leche" al referirme al diccionario. NO azúcar, porque es rawsugar en la cadena.

Sin embargo, el código que estoy usando actualmente también genera azú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)

Cómo evitar el uso de subcadenas como esa y solo considere una ficha completa como 'leche'. Por favor, ayúdame.