Software  
 
Rede de conhecimento computador >> Software >> compressão de dados >> Content
Como posso comprimir uma sequência de texto com eficiência?
A maneira mais eficiente de comprimir uma sequência de texto depende fortemente das características desse texto. Não existe um único método "melhor". Aqui está um colapso de técnicas comuns e quando são mais eficazes:

1. Algoritmos de compressão sem perdas (Preserve o texto original): Estes são adequados quando você precisa reconstruir perfeitamente a string original.

* Codificação de Huffman: Este é um esquema de codificação de comprimento variável. Ele atribui códigos mais curtos a caracteres mais frequentes e códigos mais longos a outros menos frequentes. É muito eficaz para texto com distribuições de caracteres irregulares. As implementações estão prontamente disponíveis em muitas linguagens de programação.

* lempel-ziv (lz77, lz78, lzw): Esses algoritmos exploram padrões e sequências de repetição no texto. Eles constroem um dicionário de sequências vistas anteriormente e substituem ocorrências repetidas por referências ao dicionário. O LZ77 e seus derivados (como o deflate, usados ​​em zip e gzip) são extremamente comuns e amplamente utilizados devido às boas taxas de compressão e velocidades relativamente rápidas. Eles são particularmente bons para texto com redundância.

* bzip2: Este algoritmo combina uma transformação de rodas de tocas (BWT) com codificação de Huffman. O BWT reorganiza a sequência de entrada para melhorar a eficácia da codificação de Huffman agrupando caracteres semelhantes. Geralmente, atinge taxas de compressão mais altas que o GZIP, mas ao custo das velocidades mais lentas de compressão e descompressão.

* zlib/gzip/zip: São bibliotecas e ferramentas prontamente disponíveis que implementam variações de deflatar, oferecendo um bom equilíbrio entre a taxa de compressão e a velocidade. Eles costumam ser a escolha preferida para a compactação de texto de uso geral.


2. Algoritmos de compressão com perdas (não preserve o texto original): Estes * não são * adequados se você precisar recuperar o texto original exato, mas pode obter taxas de compressão muito mais altas. Eles raramente são usados ​​para texto em geral, mas podem ser apropriados nos cenários de nicho.

* aproximações/abstrações: Se você não precisar da redação exata, pode resumir ou representar o texto com palavras -chave ou um conjunto menor de dados. Isso depende altamente dependente do aplicativo e requer lógica personalizada.


Escolhendo o método certo:

* para a maioria das compactação de texto de uso geral: `gzip` (ou` zlib` no seu código) é um ponto de partida fantástico. Oferece um bom equilíbrio de taxa de compressão e velocidade.

* para taxas de compressão muito altas (mas velocidade mais lenta): `bzip2` é uma boa opção.

* Se você precisar de compressão extremamente rápida, mesmo ao custo de taxas de compressão ligeiramente mais baixas: Considere um algoritmo mais simples como a codificação do Huffman, embora o ganho possa ser mínimo com bibliotecas otimizadas prontamente disponíveis para o GZIP.

* Se você tiver conhecimento prévio da estrutura ou propriedades estatísticas do texto: Você pode ser capaz de adaptar uma estratégia de compressão. Por exemplo, se você sabe que é principalmente texto em inglês, pode usar uma tabela de frequência de caracteres específica para o inglês.


Exemplo usando Python (GZIP):

`` `Python
importar gzip
importar io

text ="Esta é uma string de amostra. Esta string é repetida para demonstrar compressão". * 100

Compressa a string


compacted_data =gzip.compress (text.encode ('utf-8')))

descompacte a string


descompressa_data =gzip.decompress (compacted_data) .decode ('utf-8')

print (f "Tamanho original:{len (text)} bytes")
print (f "Tamanho compactado:{len (comprimido_data)} bytes")
print (f "Texto original:{text [:50]} ...") #Show apenas uma peça para evitar uma saída enorme.
Print (F "Texto descompactado:{descompacted_data [:50]} ...") #Show apenas uma peça para evitar uma saída enorme.

#Arquivos em vez de strings
com open ('myfile.txt', 'wb') como f:
F.Write (Text.Encode ('UTF-8'))

com open ('myfile.txt.gz', 'wb') como f_out:
com gzip.open (f_out, 'wb') como f_in:
com open ('myfile.txt', 'rb') como f:
f_in.writelines (f)

`` `

Lembre -se de lidar com possíveis exceções (como `ioerror`) ao trabalhar com arquivos. Este exemplo mostra uso básico; Você pode adaptá -lo para atender às suas necessidades específicas e integrá -lo a programas maiores. Sempre considere o manuseio de erros e o gerenciamento de memória eficiente ao lidar com grandes seqüências de texto.

Anterior :

Próximo :
  Os artigos relacionados
·Um arquivo compactado ocupa mais espaço de armazenamen…
·Como associar arquivos Zip Com o Windows 
·Como comprimir as minhas arquivo ISO para economizar em…
·Como compactar um arquivo PowerPoint para um e-mail 
·Como colocar fotos em uma unidade Zip 
·Como um arquivo Zip Fonte 
·Como compactar arquivos Raw 
·Como compactar arquivos JPG 
·Como conectar um Zip Drive da Iomega Com interface para…
·Como compactar uma foto em um arquivo zip para e-mail 
  Artigos em destaque
·Quais formatos de arquivo são melhor usados ​​para ima…
·Como usar o Microsoft Word para encontrar formas passiv…
·Como Fazer um Menu Display MS Excel 
·Como adicionar Legendas em Vegas Movie Studio 9 
·Por que é útil criar uma macro na planilha? 
·O que é uma extensão de arquivo pgi? 
·Como criar um login personalizado para Joomla Com Dream…
·Qual é o propósito do mensageiro? 
·Como usar o Word e Excel no Captivate 
·O que é o cancelamento dos direitos de assinatura no W…
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados