
Aprendizaje automático para la ciberseguridad
Aprendizaje automático para la ciberseguridad
Procesamiento del lenguaje natural
A menudo encontramos en ciencia de datos que los objetos que deseamos analizar son textuales. Dado que nuestros algoritmos requieren entradas numéricas, debemos encontrar una manera de convertir dicho texto en características numéricas.
Un token es una unidad de texto. Por ejemplo, podemos especificar que nuestros tokens sean palabras, oraciones o caracteres.
Un vectorizador de conteo toma una entrada textual y luego produce un vector que consiste en los conteos de los tokens textuales. Un vectorizador de hashing es una variación del vectorizador de conteo que busca ser más rápido y escalable, a costa de la interpretabilidad y las colisiones de hashing.
Aunque puede ser útil, solo tener los conteos de las palabras que aparecen en un documento puede ser engañoso. La razón es que palabras sin importancia, como "el" o "un" (conocidas como palabras vacías o stop words), tienen una alta frecuencia de aparición y, por lo tanto, poco contenido informativo. Por razones como esta, a menudo damos a las palabras diferentes pesos para contrarrestar esto.
La técnica principal para hacerlo es tf-idf, que significa Frecuencia de Término - Frecuencia Inversa de Documentos. La idea principal es que consideramos el número de veces que un término ocurre, pero lo descontamos según la cantidad de documentos en los que aparece.
Para esta receta se presenta el concepto de n-gramas, esto se usa en el vectorizador de hashing y consiste en secuencias contiguas de n elementos dentro de un texto, un ejemplo básico sería: Si yo tengo el texto = 'La programación es divertida'. los n-gramas con n = 1 y 2 serian: 1-gramas -> 'La', 'programación', 'es', 'divertida'. 2-gramas -> 'La programación', programación es', 'es divertida'.