def METHOD_NAME(file_dir):
    """Make a standalone preprocessing model."""
    # The name of our keras.Input should match the column name in the dataset.
    float_in = tf.keras.Input(shape=(1,), dtype="float32", name="float_col")
    int_in = tf.keras.Input(shape=(1,), dtype="int64", name="int_col")
    string_in = tf.keras.Input(shape=(1,), dtype="string", name="string_col")
    # We need to batch a dataset before adapting.
    ds = make_dataset().batch(BATCH_SIZE)
    # Normalize floats by adapting the mean and variance of the input.
    normalization = preprocessing.Normalization()
    normalization.adapt(ds.map(lambda features, labels: features["float_col"]))
    float_out = normalization(float_in)
    # Lookup ints by adapting a vocab of integer IDs.
    int_lookup = preprocessing.IntegerLookup()
    int_lookup.adapt(ds.map(lambda features, labels: features["int_col"]))
    int_out = int_lookup(int_in)
    # Lookup strings from a fixed file based vocabulary.
    string_vocab = list(str(i) for i in range(VOCAB_SIZE))
    vocab_file = os.path.join(file_dir, "vocab_file.txt")
    with open(vocab_file, "w") as f:
        f.write("\n".join(string_vocab))
    string_lookup = preprocessing.StringLookup(vocabulary=vocab_file)
    string_out = string_lookup(string_in)
    return tf.keras.Model(
        inputs=(float_in, int_in, string_in),
        outputs=(float_out, int_out, string_out),
    )