5. Representación del texto en computación

5.1 Introducción

Después de ver por qué el lenguaje humano es tan difícil para las computadoras, aparece una pregunta inevitable: si una máquina no entiende directamente el significado del texto, entonces cómo lo representa internamente para poder procesarlo.

La respuesta general es que una computadora no trabaja con significado abstracto, sino con símbolos y números. Por eso, antes de aplicar cualquier técnica de NLP, el texto debe transformarse en una estructura computable. Esa transformación es uno de los pilares del área.

En este tema estudiaremos cómo se representa el texto en computación, desde caracteres y codificaciones hasta tokens, vocabularios, índices y secuencias numéricas. Esta base será esencial para entender los próximos temas de limpieza, tokenización y modelos.

5.2 El texto como secuencia de símbolos

Cuando una persona ve una frase, percibe palabras, ideas e intención. Una computadora, en cambio, recibe inicialmente una secuencia de símbolos. Esos símbolos pueden ser caracteres individuales, palabras completas, subpalabras o incluso bytes, según el nivel de representación elegido.

Por ejemplo, la oración:

El gato duerme.

puede verse como:

  • Una secuencia de caracteres.
  • Una secuencia de palabras.
  • Una secuencia de identificadores numéricos.
  • Una secuencia de vectores.

La forma elegida depende del objetivo y del modelo que vayamos a usar.

5.3 ¿Por qué el texto debe convertirse en números?

Los algoritmos y modelos matemáticos no operan directamente sobre palabras como "casa", "perro" o "felicidad". Operan sobre valores numéricos. Por eso, cualquier sistema de NLP necesita una forma de traducir lenguaje a números.

Esto no significa que el significado desaparezca, sino que debe codificarse indirectamente en una representación matemática útil para la tarea.

Sin esta conversión, no podríamos:

  • Contar palabras.
  • Comparar documentos.
  • Entrenar clasificadores.
  • Calcular similitud semántica.
  • Alimentar redes neuronales.
Idea clave: el NLP siempre necesita una representación numérica del texto. Sin números, no hay cálculo; sin cálculo, no hay modelo.

5.4 Caracteres y codificación

Antes de hablar de palabras o tokens, hay que entender que el texto se almacena como caracteres codificados. Una computadora no guarda directamente "á", "ñ" o "A" como conceptos lingüísticos, sino como códigos numéricos según un estándar.

Entre los estándares más importantes se encuentran:

  • ASCII: uno de los más antiguos, limitado principalmente a caracteres básicos del inglés.
  • Unicode: estándar más amplio que permite representar caracteres de muchos idiomas y símbolos.
  • UTF-8: una forma muy utilizada de codificar Unicode.

Esto es importante porque en NLP trabajamos con idiomas reales, tildes, signos, emojis y otros símbolos. Si la codificación se maneja mal, aparecen errores de lectura y procesamiento.

5.5 Del archivo de texto a la memoria

Cuando abrimos un archivo de texto en un programa, la computadora interpreta una secuencia de bytes según una codificación concreta. Si esa interpretación es correcta, vemos los caracteres esperados. Si es incorrecta, aparecen símbolos extraños o texto corrupto.

En consecuencia, incluso antes del NLP propiamente dicho, ya existe una etapa técnica importante: asegurar que el texto fue leído correctamente y que la codificación es coherente con el idioma y la fuente de datos.

5.6 Representación a nivel de caracteres

Una forma básica de representar texto es tratarlo como secuencia de caracteres individuales. Por ejemplo, la palabra:

casa

puede descomponerse como:

c, a, s, a

Este enfoque es útil en ciertos problemas, por ejemplo:

  • Corrección ortográfica.
  • Modelado de texto muy ruidoso.
  • Lenguajes con gran variación morfológica.
  • Procesamiento de nombres o cadenas cortas.

Su ventaja principal es que no depende de un vocabulario fijo de palabras. Su desventaja es que las secuencias suelen volverse más largas y menos semánticamente directas.

5.7 Representación a nivel de palabras

La representación más intuitiva en NLP clásico es trabajar con palabras. En este caso, una oración se divide en unidades léxicas que luego pueden analizarse o convertirse en números.

Por ejemplo, la oración:

El gato duerme en el sillón

puede representarse como la secuencia:

[El, gato, duerme, en, el, sillón]

Este enfoque fue durante mucho tiempo la base del NLP tradicional porque resulta sencillo de entender y útil para conteos, frecuencias y modelos clásicos.

5.8 Tokens y tokenización

En la práctica, en lugar de hablar siempre de palabras, se usa mucho el término token. Un token es una unidad de texto producida por un proceso de segmentación llamado tokenización.

Un token no tiene por qué coincidir exactamente con una palabra tradicional. Puede ser:

  • Una palabra completa.
  • Un signo de puntuación.
  • Una subpalabra.
  • Un número.
  • Un emoji.

La tokenización será estudiada en detalle más adelante, pero aquí es importante entender que la representación del texto depende fuertemente de cómo decidimos segmentarlo.

5.9 Vocabulario

Una vez que tenemos tokens, suele construirse un vocabulario. El vocabulario es el conjunto de unidades textuales conocidas por el sistema.

Por ejemplo, si nuestro corpus contiene las palabras:

gato, perro, casa, calle

entonces ese conjunto puede formar parte del vocabulario del modelo.

El tamaño del vocabulario influye en muchos aspectos:

  • Memoria necesaria.
  • Cobertura del lenguaje.
  • Capacidad para manejar palabras raras.
  • Complejidad del modelo.

Un vocabulario demasiado pequeño pierde información. Uno demasiado grande puede volverse costoso e ineficiente.

5.10 Índices numéricos

Una vez definido el vocabulario, cada token suele asociarse a un número entero. Ese número funciona como identificador interno.

Por ejemplo:

{
  "el": 0,
  "gato": 1,
  "duerme": 2,
  "en": 3,
  "sillon": 4
}

Entonces la oración:

el gato duerme

puede representarse como:

[0, 1, 2]

Este paso es fundamental porque permite pasar del texto simbólico a una secuencia manipulable por algoritmos.

5.11 Palabras desconocidas

En la práctica, siempre aparecen palabras que no estaban en el vocabulario de entrenamiento. Para manejar ese problema, muchos sistemas reservan un token especial para términos desconocidos, a menudo representado como <UNK>.

Esto permite que el sistema siga funcionando aunque no reconozca un término concreto. Sin embargo, también implica pérdida de información, porque varias palabras distintas pueden quedar colapsadas en la misma categoría desconocida.

5.12 Longitud variable de los textos

A diferencia de muchas estructuras numéricas clásicas, los textos no tienen longitud fija. Una frase puede tener tres palabras y otra puede tener cincuenta. Esto genera un problema técnico: muchos algoritmos necesitan entradas de tamaño uniforme.

Para resolverlo suelen usarse técnicas como:

  • Padding: agregar tokens vacíos hasta alcanzar una longitud fija.
  • Truncado: recortar textos demasiado largos.
  • Lotes por longitud: agrupar ejemplos de tamaño similar.

Estas decisiones afectan eficiencia, memoria y calidad del entrenamiento.

5.13 Secuencias ordenadas

La representación del texto no solo debe conservar qué tokens aparecen, sino muchas veces también en qué orden aparecen. El orden cambia el significado.

Comparemos estas dos oraciones:

  • el perro mordió al hombre
  • el hombre mordió al perro

Las palabras son prácticamente las mismas, pero el orden altera por completo el sentido. Por eso, muchas representaciones modernas preservan la secuencia y no solo el conjunto de términos presentes.

5.14 Texto como secuencia de enteros

En muchos pipelines de NLP, después de tokenizar e indexar, el texto termina representado como una secuencia de enteros. Por ejemplo:

[15, 203, 44, 9, 18]

A simple vista esta representación pierde interpretación humana directa, pero para la máquina es muy útil porque:

  • Permite almacenar texto de manera estructurada.
  • Puede transformarse fácilmente en vectores o embeddings.
  • Sirve como entrada para modelos neuronales.

En otras palabras, este paso es el puente entre lenguaje y cálculo.

5.15 Representaciones dispersas y densas

En NLP suelen distinguirse dos grandes familias de representaciones numéricas:

  • Representaciones dispersas: tienen muchos ceros y suelen basarse en vocabularios grandes, como Bag of Words o TF-IDF.
  • Representaciones densas: usan vectores compactos donde casi todas las posiciones contienen información, como los embeddings.

Las representaciones dispersas fueron fundamentales en NLP clásico. Las densas se volvieron centrales en enfoques modernos porque capturan mejor similitudes y relaciones semánticas.

5.16 Vectores de características

Una vez que el texto se convierte en números, a menudo se lo representa como un vector de características. Ese vector resume cierta información útil para la tarea.

Por ejemplo, puede indicar:

  • Qué palabras aparecen.
  • Cuántas veces aparece cada una.
  • Qué importancia relativa tiene dentro del documento.
  • Qué posición semántica ocupa en un espacio vectorial.

En definitiva, el vector es la forma en que el algoritmo "ve" el texto.

5.17 Matrices y lotes de documentos

Cuando no trabajamos con un solo texto sino con muchos documentos a la vez, las representaciones suelen organizarse en matrices. Por ejemplo:

  • Filas: documentos.
  • Columnas: características o posiciones de tokens.

Esto permite procesar colecciones completas y entrenar modelos de forma más eficiente. Más adelante, con Deep Learning, incluso trabajaremos con tensores de varias dimensiones.

5.18 Tensores en NLP moderno

En modelos neuronales modernos, las representaciones del texto suelen almacenarse como tensores. Un tensor puede verse como una generalización de vectores y matrices a más dimensiones.

Por ejemplo, un lote de secuencias tokenizadas podría tener dimensiones como:

lote x longitud_de_secuencia

Y después de aplicar embeddings:

lote x longitud_de_secuencia x dimension_del_embedding

Este nivel de representación será clave cuando trabajemos con redes neuronales para texto.

5.19 Ejemplo conceptual completo

Tomemos la oración:

El gato duerme en el sillón

Una posible cadena de representación sería:

  1. Texto original como secuencia de caracteres.
  2. Tokenización en unidades como [el, gato, duerme, en, el, sillón].
  3. Asignación de índices numéricos.
  4. Conversión de esos índices en vectores.
  5. Procesamiento de la secuencia por un modelo.

Este recorrido resume una idea central del NLP: el lenguaje entra como texto humano, pero el sistema lo transforma progresivamente en estructuras matemáticas.

Un modelo no trabaja sobre "frases" en el sentido humano. Trabaja sobre representaciones numéricas construidas a partir de esas frases.

5.20 Elección de la representación

No existe una única representación correcta para todo problema. La mejor opción depende de:

  • La tarea concreta.
  • El idioma.
  • La cantidad de datos disponible.
  • El tipo de modelo elegido.
  • El costo computacional aceptable.

Por ejemplo, para una tarea simple de clasificación puede bastar una representación clásica. Para generación de texto o comprensión contextual avanzada, se necesitan representaciones más ricas.

5.21 Diferencia entre almacenamiento y representación para modelado

Conviene distinguir dos ideas relacionadas pero distintas:

  • Almacenamiento del texto: cómo se guarda físicamente en memoria o disco.
  • Representación para modelado: cómo se transforma para que un algoritmo pueda usarlo.

Un archivo UTF-8 y un vector TF-IDF no son lo mismo. El primero sirve para guardar el texto; el segundo sirve para modelarlo matemáticamente.

5.22 Resumen conceptual

Nivel Qué representa Ejemplo
Caracteres Símbolos individuales del texto. c, a, s, a
Tokens Unidades segmentadas para análisis. [el, gato, duerme]
Índices Identificadores numéricos de tokens. [0, 1, 2]
Vectores Representaciones numéricas útiles para modelado. Bag of Words, TF-IDF, embeddings
Tensores Estructuras multidimensionales para redes neuronales. lote x secuencia x dimensión

5.23 Qué debes recordar de este tema

  • Una computadora no procesa significado directamente; procesa símbolos y números.
  • El texto debe convertirse en una representación numérica antes de aplicar NLP.
  • Podemos representar texto a nivel de caracteres, palabras, tokens, índices, vectores o tensores.
  • El vocabulario y la tokenización influyen mucho en la calidad de la representación.
  • El orden de las palabras y la longitud variable de los textos son aspectos fundamentales.
  • La representación elegida depende de la tarea y del tipo de modelo.

5.24 Conclusión

La representación del texto en computación es la base técnica de todo NLP. Antes de clasificar, resumir, traducir o generar, necesitamos decidir cómo transformar lenguaje humano en una estructura manipulable por algoritmos.

Este paso parece técnico, pero en realidad es conceptual: la forma en que representamos el texto determina qué información conservamos, qué relaciones podemos modelar y qué tipo de herramientas podremos usar después.

En el próximo tema abordaremos la preparación y limpieza de texto, que es el paso práctico siguiente antes de construir representaciones más útiles para los modelos.