Алгоритм сжатия с заранее определённым словарём

Существует ли алгоритм сжатия, который позволяет заранее определить словарь, который будет использоваться при распаковке?

То есть:
Я хочу на стороне сервера сжимать статьи про котиков и передавать их на клиент, а значит я заранее определяю словарь:

Котик, кошечка, ми-ми-ми, мусик ...

Этот словарь получает и сервер и клиент, он не изменяется более никогда, либо изменяется по взаимному договору клиента и сервера.
Теперь при сжатии алгоритм использует заранее сформированный словарь (плюс, если требуется, создаёт дополнительный словарь конкретно для сжимаемых данных).


Ответы (1 шт):

Автор решения: gbg

ZSTD так умеет. Сначала обучаете его на примерных данных, потом - в бой

Сжатие со словарём:

Создание словаря:

zstd --train FullPathToTrainingSet/* -o dictionaryName

Сжатие со словарём:

zstd -D dictionaryName FILE

Распаковка со словарём:

zstd -D dictionaryName --decompress FILE.zst
→ Ссылка