El presente Trabajo de Fin de Grado describe el diseño, la implementación y la evaluación de un sistema de compresión y descompresión de datos sin pérdida, enfocado a archivos de hojas de estilo en cascada (CSS) Mediante el uso de un diccionario compartido.
La propuesta nace de lograr una mejora en la experiencia del usuario optimizando los recursos web. Aprovechando la naturaleza repetitiva del lenguaje CSS consiguiendo asi una reducción de los tiempos de carga de las páginas. El algoritmo principal del sistema es la Codificación Huffman. A diferencia de los métodos tradicionales a nivel de carácter, este trabajo propone una tokenización semántica que identifica palabras, propiedades, valores y signos de puntuación como unidades básicas de información.
El sistema se ha desarrollado bajo una arquitectura híbrida combinando la versatilidad de Python para el análisis estadístico y la robustez de Java para el procesamiento de archivos. Dividiendo en fases el proceso, se comenzó con la creación de un corpus representativo de archivos CSS de diversas fuentes. Mediante los scripts de Python se realizó un análisis de frecuencias para identificar los tokens más comunes, generando un árbol binario de Huffman que sirve de base para el diccionario compartido.
La implementación del software de compresión y descompresión se realizó en Java, gestionando el flujo de datos a nivel de bit. Y logrando una descompresión de archivo sin pérdida de datos, igual al original. Logrando hasta un 80% de compresión en ciertos escenarios.
El proyecto busca contribuir al ámbito de la tecnología proporcionando una base para crear un método de paso de información sin pérdida. Su diseño está orientado a optimizar el paso de información a través de la web y a facilitar la transferencia eficiente de datos estructurados, reduciendo costes de ancho de banda y latencia de red.
ABSTRACT
This Final Degree Project describes the design, implementation, and evaluation of a lossless data compression and decompression system, specifically focused on Cascading Style Sheets (CSS) files through the use of a shared dictionary. The proposal aims to improve user experience by optimizing web resources, leveraging the repetitive nature of the CSS language to achieve a significant reduction in page loading times. The system’s core algorithm is Huffman Coding. Unlike traditional character level methods, this work proposes a semantic tokenization approach that identifies words, properties, values, and punctuation marks as basic units of information. The system was developed under a hybrid architecture, combining the versatility of Python for statistical analysis with the sturdiness of Java for file processing.
The process was divided into several phases, beginning with the creation of a representative corpus of CSS files from various sources. Using Python scripts, a frequency analysis was conducted to identify the most common tokens, generating a Huffman tree that serves as the foundation for the shared dictionary.
The implementation of the compression and decompression software was carried out in Java, managing the data flow at the bit level and achieving lossless decompression that restores the file to its exact original state. Experimental results show compression rates of up to 80% in specific scenarios.
This project seeks to contribute to the field of technology by providing a foundation for creating lossless information transfer methods. Its design is oriented toward optimizing data flow across the web and facilitating the efficient transfer of structured data, thereby reducing bandwidth costs and network latency.
El presente Trabajo de Fin de Grado describe el diseño, la implementación y la evaluación de un sistema de compresión y descompresión de datos sin pérdida, enfocado a archivos de hojas de estilo en cascada (CSS) Mediante el uso de un diccionario compartido.
La propuesta nace de lograr una mejora en la experiencia del usuario optimizando los recursos web. Aprovechando la naturaleza repetitiva del lenguaje CSS consiguiendo asi una reducción de los tiempos de carga de las páginas. El algoritmo principal del sistema es la Codificación Huffman. A diferencia de los métodos tradicionales a nivel de carácter, este trabajo propone una tokenización semántica que identifica palabras, propiedades, valores y signos de puntuación como unidades básicas de información.
El sistema se ha desarrollado bajo una arquitectura híbrida combinando la versatilidad de Python para el análisis estadístico y la robustez de Java para el procesamiento de archivos. Dividiendo en fases el proceso, se comenzó con la creación de un corpus representativo de archivos CSS de diversas fuentes. Mediante los scripts de Python se realizó un análisis de frecuencias para identificar los tokens más comunes, generando un árbol binario de Huffman que sirve de base para el diccionario compartido.
La implementación del software de compresión y descompresión se realizó en Java, gestionando el flujo de datos a nivel de bit. Y logrando una descompresión de archivo sin pérdida de datos, igual al original. Logrando hasta un 80% de compresión en ciertos escenarios.
El proyecto busca contribuir al ámbito de la tecnología proporcionando una base para crear un método de paso de información sin pérdida. Su diseño está orientado a optimizar el paso de información a través de la web y a facilitar la transferencia eficiente de datos estructurados, reduciendo costes de ancho de banda y latencia de red.
ABSTRACT
This Final Degree Project describes the design, implementation, and evaluation of a lossless data compression and decompression system, specifically focused on Cascading Style Sheets (CSS) files through the use of a shared dictionary. The proposal aims to improve user experience by optimizing web resources, leveraging the repetitive nature of the CSS language to achieve a significant reduction in page loading times. The system’s core algorithm is Huffman Coding. Unlike traditional character level methods, this work proposes a semantic tokenization approach that identifies words, properties, values, and punctuation marks as basic units of information. The system was developed under a hybrid architecture, combining the versatility of Python for statistical analysis with the sturdiness of Java for file processing.
The process was divided into several phases, beginning with the creation of a representative corpus of CSS files from various sources. Using Python scripts, a frequency analysis was conducted to identify the most common tokens, generating a Huffman tree that serves as the foundation for the shared dictionary.
The implementation of the compression and decompression software was carried out in Java, managing the data flow at the bit level and achieving lossless decompression that restores the file to its exact original state. Experimental results show compression rates of up to 80% in specific scenarios.
This project seeks to contribute to the field of technology by providing a foundation for creating lossless information transfer methods. Its design is oriented toward optimizing data flow across the web and facilitating the efficient transfer of structured data, thereby reducing bandwidth costs and network latency. Read More



