{'fraction_non_alphanumeric': 0.02023429179978701, 'fraction_numerical': 0.004259850905218318, 'mean_word_length': 5.527777777777778, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Pruned convolutional codes for flexible unequal error protection against insertion/deletion/reversal errors

The class of punctured convolutional codes were first constructed by starting with low rate convolutional codes, and by periodically puncturing single bits out of some code symbols in a time varying trellis diagram. Thus, simplified Viterbi decoders could decode the resulting codes, with only two branches entering each state in the trellis diagram. This concept was ingeniously extended by J. Hagenhauer (1988) to construct incrementally variable rate codes for unequal error protection. Here we somewhat reverse the above procedure, and name the resulting codes "pruned codes". We start with optimal high rate convolutional codes, and periodically delete complete code symbols and branches to obtain a time varying trellis diagram. Hence, lower rate codes capable also of correcting insertions and deletions can be constructed.