Я думаю, что можно найти всю справку, которую можно вообразить в NLTK, тем более, что Вы используете Python. Существует хорошее всестороннее обсуждение этой проблемы в учебном руководстве.
Есть два типа байтовых строк: строгие (определенные в Data.Bytestring.Internal ) и ленивые (определенные в Data.Bytestring.Lazy.Internal ]). Как вы обнаружили, zlib использует ленивые строки байтов.
Более эффективным механизмом могло бы быть переключение на полный уровень на основе байтовых строк: