def clean_sentence(sentence, freq_words, tagset, join_sign):
    """
    Cleans sentence from rare words and words lacking a specific POS  
    :param sentence: list of tuples with form (word, lemma, pos, index)
    :param freq_words: list of words with sufficient frequency
    :param tagset: list of POS-tags to include
    :param join_sign: sign to join lemma + first char of POS
    :return: cleaned sentence
    """
    
    sentence_cleaned = [] 
    
    for (word, lemma, pos, index) in sentence:
        target = lemma + join_sign + pos[0] # lemma + first char of POS
        if not target in freq_words or not True in [pos.startswith(x) for x in tagset]:
            continue
        else:
            sentence_cleaned.append((word, lemma, pos, index))
    
    return sentence_cleaned