perform fuzzy matching on a large set of dictionary keys
Take a look at BKTrees. Here is a less technical description. There is a Python library on PyPI: pybktree.
You create the BKTree once (once a day?) from the keys in the dictionary. Then run all the queries against the BKTree.
It would look something like this untested code:
import pybktree
from pyxdameraulevenshtein import damerau_levenshtein_distance

tree = pybktree.BKTree(damerau_levenshtein_distance, word_dict.keys())

all_matches = []

for target in set(name.split()):
    all_matches.extend(tree.find(target, MAX_DISTANCE))]

all_matches would be a list of (distance, word) tuples.