1 / 66

Representação e Compressão de Texto

Representação e Compressão de Texto. Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica de Angola. Sumário. Introdução Representação do Texto Princípios de compressão de texto Redundância Estatística

Download Presentation

Representação e Compressão de Texto

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica de Angola

  2. Sumário • Introdução • Representação do Texto • Princípios de compressão de texto • Redundância Estatística • Função densidade de probablidade e entropia • Teorema de Shannon para codificação de fonte sem ruído • Codificação de Huffman • Codificação Aritmética • Compressão baseada em dicionário • Técnica LZ77 • Técnica LZ782

  3. Introdução • O texto é o media mais importante para representar informação • Media mais antigo para armazenar e transmitir informação • Maior parte da informação actual é mantida em texto • Objecto desta aula • Representação digital de texto e técnicas de compressão

  4. Representação de Texto ASCII (American National Standards Institute ANSI) American Standard Code for Information Interchange O código ASCII é um código de 8 bits para representação de caracteres. Por exemplo o código para H é 01001000, para e é 01100101. A mensagem Hello pode ser representada como 01001000 01100101 01101100 01101100 01101111 00101110

  5. Representação de Texto ASCII table (starting from #32)

  6. Tabela ASCII

  7. Tabela ASCII extendida

  8. Representação de Texto ISO= International Organization for Standardization

  9. Representação de textoRequisitos de espaço de armazenamento • Como o texto é usado extensivamente em muitos tipos de documentos como livros, jornais e outros periódicos • É necessário representá-lo eficientemente para reduzir os requisitos do espaço de armazenamento

  10. Representação de textoRequisitos de espaço de armazenamento • Exemplo 6.1 • Considere um livro com 800 páginas. Cada página contém em média 40 linha e cada linha 80 caracteres (incluindo espaços). Se o livro for armazenado em formato digital que espaço de armazenamento é necessário? Resposta: 2.44 Mbytes

  11. Representação de textoRequisitos de espaço de armazenamento • Um documento típico requer alguns Mbytes de espaço de armazenamento • É possível representar o mesmo documento usando menos espaço? • Isso é verdade • É possível compactar texto sem perder informação! • Muitos de nós já usaram o winzip (Windows) ou o gzip (Linux)

  12. Princípios para Compressão de Texto • Os textos típicos têm informação redundante • As técnicas de compressão reduzem ou eliminam essa redundância • Tipos de redundância • Estatística • Probabilidade não uniforme de ocorrência de caracteres ou símbolos (menos bits ao símbolos de maior ocorrência • Conhecimento • Quando o texto a codificar é limitado em termos de âmbito, pode ser associado conhecimento comum ao codificador e descodificador; nesse caso é enviada a informação indispensável para reconstruir o texto original.

  13. Redundância Estatística • Métodos de redução de redundância estatística • Baseados na teoria de codificação das fontes • Cada amostra de dados (caracter) tratado com símbolo gerado por uma fonte de informação • Conjunto de todos símbolos é o alfabeto • Lida com a compressão de dados gerados por uma fonte que emite uma sequência de símbolos escolhidos dum alfabeto finito.

  14. Teoria de Codificação de Fontes • 2 conceitos fundamentais • Entropia • Medida da informação contida na fonte • Define a quantidade mínima do débito médio de bits para reconstrução perfeita dos símbolos da fonte • Taxa de distorção • Define um limite inferior no débito médio de bits para uma dada distorção nos símbolos reconstruídos.

  15. Função densidade de probabilidade

  16. Exemplo 6.2 • Considere a string X=¨aaabbbbbbccaaabbcbbbb¨ • Determine o alfabeto • Determine o histograma e a função densidade de probabilidade dos caracteres. • Mostre que a soma das probabilidades dos símbolos do alfabeto é 1.

  17. Entropia

  18. EntropiaBlocos de símbolos

  19. Exemplo 6.3 • Considere a fonte do exemplo anterior. Calcule a entropia de 1ª e 2ª ordem.

  20. Teorema de ShannonCodificação de Fontes sem Ruído • Considere uma fonte de texto com um alfabeto de tamanho K e entropia H(S) e a codificação de blocos de N símbolos da fonte • Para qualquer é possível, escolhendo N sufuicientemente grande, construir um código em que número médio de bits por símbolo cumpra a seguinte relação

  21. Teorema de ShannonCodificação de Fontes sem Ruído • Pode ser mostrado que a entropia é limitada por

  22. Exemplo 6.4 • Considere uma fonte de informação com alfabeto {a,b,c,d}. Os símbolos têm igual probabilidade de ocorrência. • Calcule a entropia e a redundância da fonte • Qual o débito de bits médio necessário para transmitir os símbolos gerados pela fonte? • Conceba um código adequado para os símbolos da fonte.

  23. Exemplo 6.5 • Qual a o débito de bits médio para uma fonte de três símbolos? Qual o débito necessário para a fonte do exemplo 6.2. Calcule a redundância da fonte. Quando é que redundância é zero?

  24. Interpretação do Teorema de Shannon • O Teorema estabelece que o limite mínimo para o débito de bits • Mas não nos indica como fazê-lo. É muito difícil conseguir um débito igual à entropia. • Normalmente é superior de um valor inferior a delta

  25. Métodos estatísticos de compressão • Duas estratégias de codificação Huffman • Atribui um código de bits de comprimento variável a cada símbolo • Relativamente rápido e acesso aleatório • Semi-estático versus adaptativo Aritmética • Texto de entrada representado por número reais entre 0 e 1 • Símbolos de entrada com maiores probabilidades reduzem menos o intervalo que símbolos com menor probabilidade e portanto adicionam menos bits ao código de saída • Mais lento que o de Huffman e a decompressão não pode começar a meio do ficheiro

  26. Código de Huffman Inventado por Huffman a fazer um trabalho de casa em 1950.. Usados em muitos algoritmos de compressão • gzip, bzip, jpeg (como opção), fax,… Propriedades: • Gera códigos de prefixo óptimos • Fácilidade na • Geração de códigos • Codificação e descodificação • Comprimento médio=H se as propabilidades forem potências de 2

  27. Codificação de Huffman • Uma frase é codificada substituindo cada um dos seus símbolos com o respectivo código dado por uma tabela • A codificação de Huffman gera códigos para um conjunto de símbolos, dada uma distribuição de probabilidade dos símbolos • O tipo de código é chamada código de prefixo • Nenhuma palavra de código é prefixo de outra palavra de código

  28. Códigos de Prefixo Um código de prefixo é um código de comprimento variável onde nenhuma palavra de código é prefixo de outra palavra de código Exemplo a = 0, b = 110, c = 111, d = 10 Pode ser visto como uma árvore binária com valores de mensagens nos nós terminais e 0 e 1 nos seus ramos 0 1 0 1 a 0 1 d b c

  29. Códigos de descodificação única Um código de comprimento variável atribui uma sequência de bits (palavra de código) de comprimento variável a todos valores de mensagem i.e. a = 1, b = 01, c = 101, d = 011 A sequência de bits 1011o que significa ? É aba, ca, ou, ad? Um código de descodificação única é um código de comprimento variável em que as sequências de bits podem sempre ser decomposta de forma únoca nas suas palavras de código.

  30. Codificação de Huffman • As palavras de código podem ser armazenadas numa árvore • Árvore de descodificação • O algoritmo de Huffman funciona construindo a árvore de descodificação de baixo para cima

  31. Codificação de HuffmanAlgoritmo • Algoritmo • cria para cada símbolo um nó terminal contendo o símbolo e a sua propabibilidade. • Os dois nós com as probabilidades mais pequenas tornam-se irmãos sob um novo nó pai, cuja probabilidade é a soma da dos filhos • A operação de combinação é repetidad até haver um único nó raiz. • Todos os ramos de todos nós não terminais são então etiquetados com 0 1.

  32. Codificação de Huffman • A codificação de Huffman é geralmente rápida quer na codificação como na descodificação desde que a probabilidade seja estática. • Codificação de Huffman adaptativa é possível mas ou precisa de muito memória ou é lenta • Acoplada com um modelo baseado em palavras (em vez dum baseado em caracter), fornece uma boa compressão.

  33. Codificação de Huffman • Frequências de caracter • A: 20% (.20) • B: 9% (.09) • C: 15% • D: 11% • E: 40% • F: 5% • Não há mais caracteres no documento

  34. Codificação de Huffman E .4 BF .14 D .15 A .20 C .15 0 1 B .09 F .05

  35. ABCDEF1.0 0 1 ABCDF .6 E .4 0 1 BFD .25 AC .35 1 0 0 1 BF .14 D .15 A .20 C .15 0 1 B .09 F .05 Codificação de Huffman • Códigos • A: 010 • B: 0000 • C: 011 • D: 001 • E: 1 • F: 0001

  36. Determine o código de Huffman para os símbolos da tabela Codifique a tring “baecedeac!” Descodifique 00011000100110000010111 Exemplo 6.4

  37. Exemplo p(a) = .1, p(b) = .2, p(c ) = .2, p(d) = .5 a(.1) b(.2) c(.2) d(.5) (.3) (.5) (1.0) 1 0 (.5) d(.5) a(.1) b(.2) (.3) c(.2) 1 0 Passo 1 (.3) c(.2) a(.1) b(.2) 0 1 Passo 2 a(.1) b(.2) Passo 3 a=000, b=001, c=01, d=1

  38. Codificação e Descodificação Codificação: Começar no nó terminal da árvore de huffman e seguir o percurso para a raiz. Inverter a ordem dos bits e enviar. Descodificação: Começar na raiz da árvore e seguir o ramo de acordo com o bit recebido. Quando chegar à um no terminal enviar o símbolo e regressar à raiz. (1.0) 1 0 (.5) d(.5) Há metodos mais rápidos que podem processar 8 ou 32 bits de cada vez 1 0 (.3) c(.2) 0 1 a(.1) b(.2)

  39. Limitações dos Códigos de Huffman • Precisa de pelo menos 1 bit para representar a ocorrência de cada símbolo • Não podemos arranjar um código de Huffman que gaste 0.5 bits/símbolo • Se a entropia da fonte for menor que 1 bit/simbolo o código de Huffman não é eficiente! • Não se adapta eficientemente a um fonte com estatísticas variáveis. • Embora haja códigos de Huffman dinâmicos, são difíceis de concretizar

  40. Codificação aritmética • Outra técnica baseada na entropia • Maior relação de compressão que a codificação de Huffman • Pode disponibilizar débito de bits infeiores a 1 • O débito aproxima-se do limite teórico da entropia da fonte • Técnica de codificação diferente da de Huffman • Huffman: codificação independente por símbolo • Resultado: concatenação do código de cada símbolo • Aritmética: uma palavra de código para toda a mensagem

  41. Exemplo • Considere o alfabeto inglês com 26 letras. Calcule o número máximo de strings diferentes com comprimento • 1 • 2 • 100

  42. Codificação Aritmética • O código é para todo o texto como um sub-intervalo da unidade. • Cada símbolo é representado por um sub-intervalo do intervalo que tem um comprimento proporcional à probabilidade do símbolo. • O comprimento do intervalo final é o produto das probabilidades de todos símbolos no texto.

  43. Codificação Aritmética

  44. Codificação Aritmética

  45. Codificação AritméticaOutro exemplo _ _ _ .6667 1 .6667 .6667 c c 1/3 1/4 c _ .5834 _ c 3/6 2/5 2/3 _ .6334 1/3 b _ b .6501 2/4 b _ 1/3 2/6 b 2/5 _ _ .4167 .6001 _ a 1/3 .6390 a a a 1/4 1/6 _ _ _ 0 1/5 .6334 .3333 .5834 Qualquer valor no intervalo [.6334,.6390) codifica ‘bcca’

  46. Codificação Aritmética Adaptativa • Podemos assumir • Probabilidades iguais para todos símbolos no início • Fazer a contagem dos símbolos para nos aproximarmos das suas probabilidades reais no texto • Durante a descodificação • Usar as mesmas contagens e seguir precisamente os mesmos sub-intervalos.

  47. Modelos baseado em dicionário • Métodos de compressão baseados em dicionário usam o princípio de substituir substrings num texto com uma palavra de código que iedntifica essa substring no dicionário • O dicionário contém uma lista de substrings e uma palavra de código para cada substring • Normalmente usam-se palavras de código fixas • Obtem-se mesmo assim uma compressão razoável

  48. Modelos baseado em dicionário • Os métodos mais simples de compressão usam pequenos dicionários • Por exemplo, codificação de digramas • pares de letras seleccionadas são substituídas por palavras de código • Um dicionário para o código de caracteres ASCII pode conter os 128 caracteres bem como 128 pares de letras mais comuns.

  49. Modelos baseado em dicionário • Codificação com digramas… • As palavras de código de saída têm 8 bits cada • A presença do conjunto completo de caracteres ASCII assegura que qualquer entrada (ASCII) pode ser representada. • No melhor dos casos, cada par de caracteres é substituído por uma palavra de código, reduzindo de 7 bits/caracter para 4 bits/caracter • No pior dos casos, cada caracter de 7 bits é expandido para 8 bits

  50. Modelos baseado em dicionário • Expansão natural: • Colocar no dicionário sequências com mais caracteres nomeadamente palavras comuns ou componentes comuns das palavras. • Um conjunto pré-definido de frases do dicionário tornam a compressão dependente do domínio • ou se usam fazes muito curtas ou não se consegue uma boa compressão

More Related