def laplace_smoothing(vocabulary: dict, zero_prob: int, one_prob: int, alpha=1, minimum_appearances=-1):
    """
    Calculates the probabilities of each word applying Laplace Smoothing
    :param vocabulary: Dictionary to be modified containing the counter classification for each word
    :param zero_prob: Total probability of 0
    :param one_prob: Total probability of 1
    :param alpha: Additive (Laplace) smoothing parameter (0 for no smoothing)
    :param minimum_appearances: Minimum times a words needs to appear to be fitted in the dictionary.
        If -1, all words are fitted
    :return: Dictionary with the probabilities of each word
    """
    laplace_l = alpha
    laplace_r = 2  # Al ser binary = 2

    list_keys_to_drop = list()

    for word in vocabulary:
        if minimum_appearances == -1 or vocabulary[word][0] + vocabulary[word][1] >= minimum_appearances:
            vocabulary[word][0] = (vocabulary[word][0] + laplace_l) / (zero_prob + laplace_l * laplace_r)
            vocabulary[word][1] = (vocabulary[word][1] + laplace_l) / (one_prob + laplace_l * laplace_r)
        else:
            list_keys_to_drop.append(word)

    for key in list_keys_to_drop:
        del vocabulary[key]

    return vocabulary