Cuántas cosas dicen los presidentes en sus discursos y pasan desapercibidas por la sociedad, principalmente porque hablan mucho y no tenemos tiempo de estar continuamente analizando sus palabras.

Mediante el uso de NLP (Procesamiento del Lenguaje Natural) podemos realizar diferentes tipos de análisis sobre los discursos de manera automática, en este post vamos a hablar de una técnica que se utilizó para la elaboración de las notas publicadas en Chequeado y La Nación.

Para esta tarea podemos recurrir a la creación de secuencias contiguas de palabras, comúnmente llamadas n-grams. La n indica la longitud de esa secuencia, siendo las variantes más utilizadas en la práctica n=2 y n=3, llamados también bigrams y trigrams respectivamente.

Por ejemplo, si tenemos la frase: “La vida te da sorpresas, sorpresas te da la vida” sus trigrams serían los siguientes:

la vida te

vida te da

te da sorpresas

da sorpresas sorpresas

sorpresas sorpresas te

sorpresas te da

te da la

da la vida

¿Por qué usar ngrams en lugar de simplemente comparar todas las frases de los discursos entre sí y contar las que son iguales? La respuesta simple es porque no siempre las frases se repiten tal cual y muchas veces las mismas frases se mencionan dentro de una oración donde se dicen otras cosas.

Un ejemplo para explicar esto último:

Frase 1: “Nosotros podemos, yo sé que lo vamos a lograr.”

Frase 2: “Yo sé que lo vamos a lograr porque creo en los argentinos.”

Si hacemos comparación de las oraciones completas no vamos a llegar a un buen resultado porque no son iguales, pero en el caso de usar ngrams sí obtendríamos que en ambas oraciones existe la secuencia “yo sé que lo vamos a lograr”.

Por ejemplo, el resultado de aplicar ngrams para los discursos de Macri como presidente (el código está disponible en github para el que le interese saber como implementarlo) arroja un conjunto grande de n-grams. Algunos interesantes, después de limpiar secuencias repetitivas o no informativas, son los siguientes:

('de un día para el otro', 45), ('lo que somos capaces de hacer', 39), ('construir la argentina que soñamos', 24), ('el valor de la palabra', 23), ('en lo que somos capaces de hacer', 21), ('lucha contra el cambio climático', 20), ('la calidad de la educación pública', 20), ('haciendo lo que había que hacer', 19), ('al servicio de la gente', 19)

Como vemos en el output de los ngrams que más se repiten, hay bastantes secuencias muy similares y que debemos limpiar porque no componen una frase completa. Esta limpieza se puede hacer de forma automática pero lo dejo para otra oportunidad (si alguien quiere aportarlo es totalmente bienvenido).

En este post utilizamos ngrams para obtener un resultado directo (frases más mencionadas) pero no es el uso más común. Los ngrams son principalmente utilizados para Language Modeling.

¿Cómo se usan los ngrams para Language Modeling?

Básicamente los ngrams se usan para crear modelos que asignen una probabilidad de ocurrencia de una palabra en base a palabras que ya están presentes en el texto. Si alguien escribe en su celular las palabras “salgo a pasear al”, es muy probable que el sistema operativo del celular tenga un diccionario con los ngrams más frecuentes, donde “salgo a pasear al perro” esté dentro de las posibilidades con alta probabilidad.

Alguna de sus aplicaciones son (ayudar a):

– Corregir palabras mal escritas

– Sugerir palabras en base a lo que se va escribiendo (el autopredictivo del celular)

– Traducir de un idioma a otro

– Abreviar textos

Algunos recursos útiles: