stringtranslate.com

Codificación de pares de bytes

La codificación de pares de bytes [1] [2] (también conocida como codificación de digramas ) [3] es un algoritmo, descrito por primera vez en 1994 por Philip Gage para codificar cadenas de texto en forma de tabla para su uso en el modelado posterior. [4] Su modificación es notable como el tokenizador de modelo de lenguaje grande con una capacidad de combinar tokens que codifican caracteres individuales (incluidos dígitos individuales o signos de puntuación individuales) y aquellos que codifican palabras completas (incluso las palabras compuestas más largas). [5] [6] [7] Esta modificación, en el primer paso, supone que todos los caracteres únicos son un conjunto inicial de n-gramas de 1 carácter de longitud (es decir, "tokens" iniciales). Luego, sucesivamente, el par más frecuente de caracteres adyacentes se fusiona en un nuevo n-grama de 2 caracteres de longitud y todas las instancias del par se reemplazan por este nuevo token. Esto se repite hasta que se obtiene un vocabulario del tamaño prescrito. Tenga en cuenta que siempre se pueden construir nuevas palabras a partir de tokens de vocabulario final y caracteres del conjunto inicial. [8] Este enfoque algorítmico se ha extendido del lenguaje hablado al lenguaje de señas en los últimos años. [9]

Todos los tokens únicos encontrados en un corpus se enumeran en un vocabulario de tokens, cuyo tamaño, en el caso de GPT-3.5 y GPT-4 , es 100256.

La diferencia entre el algoritmo modificado y el original es que el algoritmo original no fusiona el par de bytes de datos más frecuente, sino que los reemplaza por un nuevo byte que no estaba incluido en el conjunto de datos inicial. Se requiere una tabla de búsqueda de los reemplazos para reconstruir el conjunto de datos inicial. El algoritmo es eficaz para la tokenización porque tiene una sobrecarga computacional baja y sigue siendo consistente y confiable.

Algoritmo original

El algoritmo original funciona reemplazando iterativamente las secuencias contiguas de caracteres más comunes en un texto de destino con bytes de "marcador de posición" no utilizados. La iteración finaliza cuando no se pueden encontrar secuencias, lo que deja el texto de destino efectivamente comprimido. La descompresión se puede realizar invirtiendo este proceso, consultando los términos de marcador de posición conocidos contra su secuencia indicada correspondiente, utilizando una tabla de búsqueda. En el artículo original, esta tabla de búsqueda está codificada y almacenada junto con el texto comprimido.

Ejemplo

Supongamos que los datos a codificar son

aaabdaaabac

El par de bytes "aa" es el que aparece con más frecuencia, por lo que se reemplazará por un byte que no se utiliza en los datos, como "Z". Ahora tenemos la siguiente tabla de datos y reemplazos:

ZabdZabacZ=aa

Luego se repite el proceso con el par de bytes "ab", reemplazándolo por "Y":

ZYdZYacY=abZ=aa

El único par de bytes literal que queda aparece solo una vez y la codificación podría detenerse aquí. Como alternativa, el proceso podría continuar con la codificación recursiva de pares de bytes, reemplazando "ZY" por "X":

XdXacX=ZYY=abZ=aa

Estos datos no se pueden comprimir aún más mediante la codificación de pares de bytes porque no hay pares de bytes que aparezcan más de una vez.

Para descomprimir los datos, simplemente realice los reemplazos en el orden inverso.

Véase también

Referencias

  1. ^ Gage, Philip (1994). "Un nuevo algoritmo para la compresión de datos". The C User Journal .
  2. ^ "Un nuevo algoritmo para la compresión de datos". Diario del Dr. Dobb . 1 de febrero de 1994. Consultado el 10 de agosto de 2020 .
  3. ^ Witten, Ian H.; Moffat, Alistair; Bell, Timothy C. (1994). Managing Gigabytes (Administración de gigabytes ). Nueva York: Van Nostrand Reinhold. ISBN. 978-0-442-01863-4.
  4. ^ "Codificación de pares de bytes". Archivado desde el original el 26 de marzo de 2016.
  5. ^ Sennrich, Rico; Birch, Alexandra; Haddow, Barry (31 de agosto de 2015). "Traducción automática neuronal de palabras raras con unidades de subpalabras". arXiv : 1508.07909 [cs.CL].
  6. ^ Brown, Tom B.; Mann, Benjamin; Ryder, Nick; Subbiah, Melanie; Kaplan, Jared; Dhariwal, Prafulla; Neelakantan, Arvind; Shyam, Pranav; Sastry, Girish; Askell, Amanda; Agarwal, Sandhini (4 de junio de 2020). "Los modelos de lenguaje son aprendices de pocas oportunidades". arXiv : 2005.14165 [cs.CL].
  7. ^ "google/sentencepiece". Google. 2021-03-02 . Consultado el 2021-03-02 .
  8. ^ Paaß, Gerhard; Giesselbach, Sven (2022). "Modelos de lenguaje preentrenados". Modelos básicos para el procesamiento del lenguaje natural . Inteligencia artificial: fundamentos, teoría y algoritmos. págs. 19–78. doi :10.1007/978-3-031-23190-2_2. ISBN 9783031231902. Recuperado el 3 de agosto de 2023 .
  9. ^ Taro Miyazaki, Sihan Tan, Tsubasa Uchida, Hiroyuki Kaneko (25 de mayo de 2024). "Traducción de lenguas de señas con codificación de pares de glosas" (PDF) . Actas del 11.º Taller sobre la representación y el procesamiento de las lenguas de señas .{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace )