import re


def remove_null_and_numbers(labels):
    """
    Remove labels which are null, noise, or numbers.

    Parameters
    ----------
    labels : list
        A list of text labels.

    Returns
    -------
    out : list
        A list of new labels.

    """
    
    out = []
    noises = set(['SPN','NSN','LAU'])
    for l in labels:
        l = re.sub(r'\d+','',l)
        l = l.upper()
        if l == '' or l == 'SIL':
            l = '[SIL]'
        if l == 'SP':
            l = '[SIL]'
        if l in noises:
            l = '[UNK]'
        out.append(l)
    return out