metalvest
2023-03-21 15:25:55 +08:00
感谢大家给的思路,在 colab 上分别用 Zstd 和 Brotli 结合 Base65536 试了试,确实可以压得更短。
看能不能用这个思路省一点 token 来保留 GPT 的记忆?
~~~#!pip install zstandard
#!pip install base65536
#!pip install brotlicffi
import brotlicffi
import zstandard # 用于 zstd 算法
import base65536 # 用于 Base65536 编码
text = "一般压缩都是压缩成二进制,如果进行 base64 转换则会比原来的文本长,字典算法是可以把文本缩短,但又需要额外的长度保存字典。摘要、提取关键词或者使用同义词替换等方法会损失信息或者改变原来的意思。所以有没有其他的办法?短 url 或者网盘不算。"
text_bytes = text.encode("utf-8") # 使用 utf-8 编码
compressor = zstandard.ZstdCompressor(level=10) # 创建压缩器对象
#compressed_bytes = compressor.compress(text_bytes) # 压缩文本字节
compressed_bytes = brotlicffi.compress(text_bytes)
encoded_text = base65536.encode(compressed_bytes) # 编码压缩字节
print(f"原始文本长度:{len(text)}")
print(f"编码后文本长度:{len(encoded_text)}")
if len(text) > len(encoded_text):
print("编码后文本比原始文本短")
elif len(text) < len(encoded_text):
print("编码后文本比原始文本长")
else:
print("编码后文本和原始文本一样长")~~~