Diapositiva 1

Anuncio
Compresión semistática orientada a palabras
Guión
 Motivación
• Lenguaje Natural: leyes.
• Indexación orientada a palabras
 Compresión Huffman semistática
 Compresores semiestáticos densos
Antonio Fariña
Orientación a palabras ¿por qué?
 Lenguaje natural: Leyes de Zipf y de Heaps
Heaps:: el tamaño tiene poca importancia si tenemos textos grandes
Zipf:: La distribución de frecuencias de las palabras de un texto es muy sesgada
Antonio Fariña
Orientación a palabras (refs)
 Refs básicas.
Antonio Fariña
Compresión semistática orientada a palabras
Guión
 Motivación
 Compresión Huffman semistática
• Codificación Orientada a palabras
• Huffman orientado a palabras: Plain y Tagged Huffman
 Compresores semiestáticos densos
Antonio Fariña
Huffman orientado a palabras


Uso de orientación a palabras:
— Bentley, Sleator, Tarjan, and Wei (CACM-1986) ??
— Moffat propuso usar palabras en vez de caracteres (+huffman)
La distribución de frecuencias de las palabras es más sesgada
16
14
12
10
8
Character freq distribution
(Spanish)
frec
18
Word freq distribution
6
4
2
0
E A O L S N D R U I T C P M Y Q B H G F V J Ñ Z X K W

n
Se consiguen ratios de compresión de hasta 25% (en inglés)
Así los elementos básicos para compresión y Text Retrieval
son los mismos: las palabras
Antonio Fariña
Compresión + indexación

Ejemplo:
Texto original: El que poco coco come poco coco compra
Vocabulario
Índice invertido orientado a palabras:
poco
coco
El
que
come
compra
5
6
1
3
7
11
10
23
28
poco
10
C1
coco
11
C2
El
0010
C3
que
0011
C4
come
0110
C5
compra
0111
C6
Texto comprimido:
0010 0011 10 11 0110 10 11 0111
1
Antonio Fariña
Esquema codificación
2
3
4
5
6
7
8
9
10
11
12
Compresión semistática orientada a palabras
Guión
 Motivación
 Compresión Huffman semistática
• Codificación Orientada a palabras
• Huffman orientado a palabras: Plain y Tagged Huffman
 Compresores semiestáticos densos
Antonio Fariña
Plain Huffman y Tagged Huffman

1998: Moura, Navarro, Ziviani y Baeza:
— 2 nuevas técnicas: Plain Huffman y Tagged Huffman

Elementos comunes:
— Basados en Huffman
— Orientado a palabras
— Usan bytes (no bits) (compresión ±30% pero más velocidad)


Plain Huffman = Huffman sobre bytes (árbol 256-ario)
Tagged Huffman marca el inicio de cada código
•“1”  para el 1er bit del 1er byte
El primer bit es:
•“0”  para el 1er bit de los bytes restantes
1xxxxxxx 0xxxxxxx 0xxxxxxx
Antonio Fariña
Plain Huffman y Tagged Huffman
Codificación
 Construcción Huffman b-ario:
— Plain huffman aridad: 2b=256, Tagged Huffman 2b=128
— Codificación huffman normal



Antonio Fariña
Bottom-Up:
1ª iteración: R=número de nodos último nivel
Restantes iteraciones: eligiendo 2b nodos menos frecuentes
Plain Huffman y Tagged Huffman
Ejemplos.


Asúmase (b=3, bytes “especiales” de sólo 3 bits)
Obténgase la codificación Plain Huffman y Tagged Huffman
para los vocabularios en los 2 escenarios siguientes:
Distribución uniforme: pi=1/17
Antonio Fariña
Distribución exponencial: pi = 2-i
Plain Huffman y Tagged Huffman
Ejemplo 1
Antonio Fariña
Plain Huffman y Tagged Huffman
Ejemplo 2
Antonio Fariña
Plain Huffman & Tagged Huffman
Búsquedas sobre texto comprimido

Ejemplo (b=2): to be lucky or not
PLAIN HUFFMAN
TAGGED HUFFMAN
be
00
be
10
or
01
or
11 00
not
10
not
11 01 00
lucky
11 00
lucky
11 01 01 00
to
11 11
to
11 01 01 01
Busquemos “lucky”
to be lucky or not
1111 00 1100 01 10
permite búsquedas eficientes
to
be
lucky
Falso emparejamiento

Antonio Fariña
or
not
11010101 10 11010100 1100 110100
Imposible emparejamientos falsos
TH: Búsquedas mejoradas
 Búsqueda directa (comprimir el patrón y buscarlo)
 Empezar la búsqueda en cualquier lugar (y la descompresión)
 Búsqueda tipo Boyer-Moore es posible (saltando bytes)
Plain Huffman y Tagged Huffman

Plain Huffman. (árbol de aridad 2b=256)
— Ratio +- 30-32%
— Búsqueda simulando descompresión


(frases: Shift-Or autómata)
Tagged Huffman. (árbol de aridad 2b-1 =128)
— Pérdida en el ratio de compresión (3.5 puntos)

Ratio +- 33.5-35%
— El bit de marca indica el inicio de los códigos:


Búsquedas directas mejoradas (al ser posible usar Boyer-Moore)
Descompresión aleatoria

Sincronismo: Es posible (1) ir a cualquier offset del texto comprimido, (2) buscar el
principio de un código allí, y (3) comenzar la descompresión desde esa posición.
Antonio Fariña
Compresión semistática orientada a palabras
Guión
 Motivación
 Compresión Huffman semiestática
 Compresores semiestáticos densos
• End Tagged Dense Code
• (s,c)- Dense Code
• Resultados Teóricos
• Resultados Empíricos
Antonio Fariña
Compresores semistáticos densos
End-Tagged Dense Code

Pequeño cambio: Una marca señala el final de un código
1xxxxxxx
“1” --> para el 1er bit del último byte
Primer bit es:
“0” --> para el 1er bit del resto de bytes 0xxxxxxx
Código libre de prefijo independ. de restantes 7 bits del byte
Ya no se necesita usar Huffman
Es posible usar TODAS las combinaciones de bits: Código Denso

Antonio Fariña
Tiene bit de Flag  igual que Tagged Huffman en búsquedas
Compresores semistáticos densos
End-Tagged Dense Code

Pequeño cambio: Una marca señala el final de un código
1xxxxxxx
“1” --> para el 1er bit del último byte
Primer bit es:
“0” --> para el 1er bit del resto de bytes 0xxxxxxx
Código libre de prefijo independ. de restantes 7 bits del byte
Ya no se necesita usar Huffman
1xxxxxxx
Códigos
1 byte
Es
posibledeusar
TODAS las combinaciones
de bits: Código Denso

Antonio Fariña
0xxxxxxx
1xxxxxxx
Tiene bit de Flag  igual que Tagged Huffman en búsquedas
0xxxxxxx
0xxxxxxx
1xxxxxxx
Códigos de 3 bytes
Códigos de 2 bytes
Compresores semistáticos densos
End-Tagged Dense Code

Esquema de codificación
10000000
10000001
…..
11111111
00000000:10000000
…..
01111111:11111111
00000000:00000000:10000000
……
01111111:01111111:11111111
128 palabras más frecuentes
(128 = 27 códigos de 1 byte)
1282 palabras de 128+1 a 128+1282
(1282 = 214 códigos de 2 bytes)
1283 Las palabras 128+ 1282+1 a
128 +1282 +1283 usan tres bytes
(1283 = 221 códigos)
.....

Antonio Fariña
Los códigos dependen de la posición de la palabra en el ránking
no de su frecuencia
Compresores semistáticos densos
End-Tagged Dense Code

Procedimiento de codificación secuencial
— Ordenación de palabras por frecuencia
— Asignación de códigos
0xxxxxxx
< 2b-1

Procedimiento de codificación
directa (“al vuelo”)
Ci  codificar(i)
i  decodificar(Ci)
Antonio Fariña
0xxxxxxx
< 2b-1
... 1xxxxxxx
≥ 2b-1
Compresores semistáticos densos
End-Tagged Dense Code

Procedimiento de codificación secuencial
— Ordenación de palabras por frecuencia
— Asignación de códigos
0xxxxxxx
< 2b-1
0xxxxxxx
< 2b-1
Pon las formulas y las complejidades
Antonio Fariña
... 1xxxxxxx
≥ 2b-1
Compresores semistáticos densos
End-Tagged Dense Code

Procedimiento de codificación
directa (“al vuelo”)
Ci  codificar(i)
i  decodificar(Ci)
Pon las formulas y las complejidades
O(|x|) = O(log i)
O(log i)

Antonio Fariña
Ej. i=decodifica(x)
Compresores semistáticos densos
End-Tagged Dense Code

Descompresión: dos pasos
— Cargar el vocabulario ordenado
— i  decodificar(Ci) :: O(bytes T.Comp)
vocabulario
de*no*En*…
cabecera
C2 C3 C4 C0
C5 C6 C0 C7
C8 C1 C9 C10
Datos
compr.
C1 …
Fichero comprimido
decode
0
de
1
no
2
En
3
un
4
lugar
5
la
En un lugar de
la mancha de
cuyo nombre
no quiero
acordarme no
…
…
Texto plano
Antonio Fariña
Compresores semistáticos densos
End-Tagged Dense Code: búsquedas TC
Búsquedas directas:
1) Obtener el código asociado al patrón P  Cp
2) Buscar el código Cp dentro del texto comprimido usando
un algoritmo de tipo Boyer-Moore (skipping bytes)
3) Tras un emparejamiento chequear si es una ocurrencia
real del patrón


Es una ocurrencia o el sufijo de un código más largo?
Byte previo ≥ 128 ?
— Ej. Búsqueda de: “Pedrito” C(“Pedrito”) =
39
25 234
False match
Antonio Fariña
2
25 234
110 25 234 100 129 234 25 234
True match
2
251
Compresores semistáticos densos
End-Tagged Dense Code: búsquedas TC
 Algoritmo Horspool modificado para ETDC.
Alg:
En ETDC, c=128
Programa C:
T
P
Antonio Fariña
39
25
234
2
0
1
2
3
25
234
0
k-1
110
25
234 100 129 234
25
234
2
251
z-1
TRUCO para
evitar (i=0)
Compresores semistáticos densos
End-Tagged Dense Code

Es un código denso. Pueden utilizarse todos los códigos
disponibles.
— Comprime mejor que
TH (2-3 puntos).
— Es superado por PH (≤1 punto).

Marca  mismas capacidades de búsqueda de Tagged Huffman
— Búsqueda directa,
— Acceso aleatorio.

Codificación y decodificación eficiente
— Procedimientos secuencial y directo
 Fácil de programar
Antonio Fariña
Compresión semistática orientada a palabras
Guión
 Motivación
 Compresión Huffman semiestática
 Compresores semiestáticos densos
• End Tagged Dense Code
• (s,c)- Dense Code
• Resultados Teóricos
• Resultados Empíricos
Antonio Fariña
Compresores semistáticos densos
(s,c)-Dense Code

End Tagged Dense Code
— 128 valores disponibles [128, 255] para el último byte (stoppers)
— 128 valores disponibles [0, 127] para los restantes bytes (continuers)
Por qué usar valores fijos de s y c?

Adaptar (s,c) al vocabulario  s minimizando tamaño Texto Comp.
—

Antonio Fariña
—
Número de palabras
Distribución de frecuencia de las palabras
End-Tagged Dense Code es un (128,128)-Dense Code
Compresores semistáticos densos
(s,c)-Dense Code
*k;
Antonio Fariña
Num occs
20
15
12
11
8
8
Frec. acum
20
35
47
58
…
…
3
3
2
1
1
… 1000
Compresores semistáticos densos
http://vios.dc.fi.udc.es/codes

Esquema de codificación
— Stoppers:
—
s valores entre [0,s-1]
Continuers: otros bytes. c valores entre [s, 255]
0
...
s-1
s
s+1
...
255
s
...
255
Antonio Fariña
(s,c)-Dense Code
último byte.
s
0
1
...
s-1
s
...
255
palabras más frecuentes
sc palabras de s+1 a s+sc
0
...
S-1
sc2 palabras de s+sc+1 a s+sc+sc2
Compresores semistáticos densos
(s,c)-Dense Code

Ejemplo (b=3)
Palabra
Freq
P.H.
(6,2)-DC
(5,3)-DC
(4,4)- DC
Antonio Fariña
(6,2)
(5,3)
ETDC
A
0,20
[000]
[000]
[000]
[000]
0,20
0,20
0,20
0,20
B
0,20
[001]
[001]
[001]
[001]
0,20
0,20
0,20
0,20
C
0,15
[010]
[010]
[010]
[010]
0,15
0,15
0,15
0,15
D
0,15
[011]
[011]
[011]
[011]
0,15
0,15
0,15
0,15
E
0,14
[100]
[100]
[100]
[100][000]
0,14
0,14
0,14
0,28
F
0,09
[101]
[101]
[101][000]
[100][001]
0,09
0,09
0,18
0,18
G
0,04
[110]
[110][000]
[101][001]
[100][010]
0,04
0,08
0,08
0,08
H
0,02
[111][000]
[110][001]
[101][010]
[100][011]
0,04
0,04
0,04
0,04
I
0,005
[111][001]
[110][010]
[101][011]
[101][000]
0,01
0,01
0,01
0,01
J
0,005
[111][010]
[110][011]
[101][100]
[101][001]
0,01
0,01
0,01
0,01
1,03
1,07
1,16
1,30
Longitud media del código

PH
End-Tagged Dense Code es un (2b-1,2b-1)-DC
Compresores semistáticos densos
(s,c)-Dense Code


Codificación Secuencial
xxxxxxxx
s≤ vc< 2b-1
s≤ vc < 2b-1
Codificación directa
Ci  codifica(s, i)
i  decodifica(s, Ci)
Antonio Fariña
xxxxxxxx
Pon las formulas
... zzzzzzzz
0≤ vs< s
Compresores semistáticos densos
(s,c)-Dense Code


Codificación Secuencial
xxxxxxxx
xxxxxxxx
s≤ vc< 2b-1
s≤ vc < 2b-1
... zzzzzzzz
0≤ vs< s
Codificación directa
Ci  codifica(s, i)
i  decodifica(s, Ci)
O(log i)
Pon las formulas
O(|x|) = O(log i)
Antonio Fariña
Compresores semistáticos densos
(s,c)-Dense Code : búsquedas TC
 Algoritmo Horspool modificado para SCDC.
Alg:
En SCDC, c=2b-s = 256-s
Antonio Fariña
Compresores semistáticos densos
(s,c)-Dense Code

Es un código denso
— Comprime mejor que TH (3-4 puntos)
— Comprime mejor que ETDC (0.5 puntos)
— Es superado por PH (0.25 puntos)
— RATIO: PH < SCDC << ETDC <<< TH

Codificación y decodificación simple

¿Marca?  (byte valor < s)
— Mismas capacidades de búsqueda que End-Tagged Dense Code y
Tagged Huffman

Antonio Fariña
S óptimo entre 180 y 190
Guión de la exposición
 Motivación
 Compresión Huffman semiestática
 Compresores semiestáticos densos
• End Tagged Dense Code
• (s,c)- Dense Code
• Resultados Teóricos
• Resultados Empíricos
Antonio Fariña
Compresores semiestáticos densos
Acotación analítica de Huffman

Es posible obtener nuevas cotas analíticas de la compresión que puede
alcanzarse con Huffman usando (s,c)-DC
Gonzalo Navarro and Nieves Brisaboa.
New Bounds on D-ary Optimal Codes.
Information Processing Letters (IPL) 96(5):178184, 2005
Antonio Fariña
Compresores semiestáticos densos
Acotación analítica de Huffman

Nuevas cotas analíticas de Huffman usando (s,c)-DC
Dada la entropía (D bits):
Siendo
,
el número de palabras codificables con k bytes,
indica el número de palabras
codificables con k bytes
Por tanto, la probabilidad de los los
símbolos codificados con hasta k bytes es:
Obteniéndose:
Antonio Fariña
Compresores semiestáticos densos
Acotación analítica de Huffman
Por la ley de Zipf:
donde:
,
, para ciertas constantes
y
Cota Superior
Partiendo de que
Sustituyendo c=D-s y minimizando, obtenemos una cota superior
mínima cuando:
y
Antonio Fariña
Compresores semiestáticos densos
Acotación analítica de Huffman
Cota Inferior
Análogamente:
Tomando
Puesto que :
Antonio Fariña
nuestra cota superior, viene dada por:
Compresión semistática orientada a palabras
Guión
 Motivación
 Compresión Huffman semiestática
 Compresores semiestáticos densos
• End Tagged Dense Code
• (s,c)- Dense Code
• Resultados Teóricos
• Resultados Empíricos
Antonio Fariña
Compresores semistáticos densos
Resultados empíricos y Plataforma de prueba

Textos del TREC-2 y TREC-4
CORPUS
Tamaño (bytes)
Nº palabras
Nº palabras diferentes
528,611
30,995
3,135,383
75,681
10,230,907
117,713
— Tiempo de descompresión
FT92
175,449,235
— Velocidad de búsqueda
ZIFF
185,220,215
36,803,204
284,892
40,866,492
237,622
FT93
197,586,294
42,063,804
291,427
FT94
203,783,923
43,335,126
295,018
AP
250,714,271
53,349,620
269,141
ALL FT
591,568,807
124,971,944
577,352
1,080,719,883
229,596,845
886,190
CALGARY
Mostrando resultados para:2,131,045
— Ratio de compresión 14,749,355
FT91
y compresión
CR— Tiempo de codificación 51,085,545
ALL
— Intel Pentium-III (x2) 800 Mhz con 768Mb RAM.
Antonio Fariña



Debian GNU/Linux (kernel 2.2.19)
gcc 3.3.3 20040429 y optimización –O9
Time muestra CPU user-time
Compresores semistáticos densos
Tiempos de codificación y compresión
Extracción de vocabulario
Proces. del fichero
pal
frec
Vector de palabras ordenado
n
(s-c) DC
Creando árbol Huffman
cons árbol
Generación de códigos
1a pasada
2a pasada
Huffman
Generación secuencial
códigos
Buscar valores (s,c) óptimos
Lista acumulada
de frecuencias
Encontrar mejor S
Generación secuencial
códigos
pal
cod
Tabla Hash
Fase de compresión
To
ETDC
Antonio Fariña
Codificación
est alturas
compresión
1
T1
Compresores semistáticos densos
Resultados Empíricos
Ratio de compresión (%)
Tiempo de codificación (msg.)
280
35
260
Encoding time (msec.)
compression ratio (%)
34
33
32
31
30
240
220
200
180
160
140
29
28
120
30.73
30.88
31.56
(s ,c )-DC
E TDC
(s,c)-DC
ETDC
technique
PH
PH
34.16
100
< (s,c)-DC < ETDC < TH
0.8 pp
0.2 pp
2.5 pp
ETDC <
PH
25
6.1
24.5
5.8
5.7
5.6
5.5
5.4
5.92
5.88
5.90
5.83
5.3
PH
TH
TH
< TH
2%
24
23.5
23
22.5
22
21.5
21
23.86
23.55
24.15
22.51
E TDC
ETDC
TH
TH
20.5
PH
PH
PH
Antonio Fariña
45%
270
Velocidad de descompresión (Mb/sg.)
Deompression speed (Mbytes/sec)
Compression speed (Mbytes/sec)
Velocidad de compresión (Mb/sg.)
104
(s,c)-DC <
25%
6.2
5.9
143
(s ,c )-DC
E TDC
(s,c)-DC
ETDC
te chnique
PH
PH
TH
TH
6
260
(s ,c )-DC
E TDC
(s,c)-DC
ETDC
technique
= ETDC
TH
TH
> (s,c)-DC > TH
PH
PH
ETDC =
(s ,c )-DC
(s,c)-DC
technique
PH
> (s,c)-DC > TH
1,5%
4%
Compresores semistáticos densos
Búsquedas de patrones simples
Tiempo de búsqueda (sg.)
2.5
2.4
Search time (sec.)
2.3
2.2
2.1
2
1.9
1.8
1.7
1.6
2.30
PH
PH
1.70
1.80
(s ,c )-DC
E TDC
(s,c)-DC
tec hnique ETDC
(s,c)-DC <
5%
ETDC
< TH
5-10%
2.00
TH
TH
< PH
10%
Buscando patrones:
- Formados por 1 única palabra
- Cuyos códigos tienen la misma longitud
Antonio Fariña
Compresores semistáticos densos
Búsquedas multipatrón (100pats.)
Compressed Text
Plain Text
Multi-pattern searches
14.602
16
search time (sec.)
14
10.667 10.49
12
9.143
10
8
6
4
1.987
2.497
2.283
2
0
TH
ETDC
SCDC
DETDC+DEC
DETDC
AGREP rev
Set-Hoorspol
Algorithm used
 Multipatrón
Antonio Fariña
TH
ETDC < Plain text
< SCDC <
15-20%
5%
400%
Compresores semistáticos densos
Resultados Empíricos : Resumen
compression ratio
35
Plain Huffman
Tagged Huffman
(s,c)-Dense Code
End-Tagged Dense Code
34
33
32
31
30
100
120
140
160
180
200
220
240
260
280
encoding time (msec)
compression ratio
35
Plain Huffman
Tagged Huffman
(s,c)-Dense Code
End-Tagged Dense Code
34
33
32
31
30
18
18.2
18.4
18.6
18.8
19
19.2
search time (sec)
Antonio Fariña
19.4
19.6
19.8
20
Compresores semistáticos densos
Resultados Empíricos : Resumen
Antonio Fariña
Compresores semistáticos densos
Resultados Empíricos : Resumen


Compresores “densos” semiestáticos: ETDC y SCDC
Codificación más simple y rápida que los basados en
Huffman.
— Codificación secuencial
— Codificación directa (“al vuelo”)




Permiten búsqueda directa y acceso aleatorio
Velocidad: Buena velocidad de compresión y descompresión
Ratio de compresión próximo a Plain Huffman
Superan a Tagged Huffman en (todo):
— Ratio de compresión,
— Velocidad de compresión y de descompresión
— Velocidad de búsquedas.
Antonio Fariña
Compresores semistáticos densos
Ejercicio




Muestra la codificación ETDC que se obtiene para los
vocabularios siguientes (asúmanse bytes de “sólo” 3 bits)
Distribución uniforme: pi=1/17
Distribución exponencial: pi = 2-i
¿En qué se diferencian?
¿En qué caso se obtiene una compresión mejor? Justifica la respuesta.
Y si el vocabulario tuviese 20.000 símbolos. ¿qué codigo le correspondería al
símbolo en la posición 16.512 (para SCDC o ETDC)
Antonio Fariña
Documentos relacionados
Descargar