Procesamiento de textos

Matheus Marabesi and Emmanuel Valverde

Matheus Marabesi and Emmanuel Valverde

Ver biografía y publicaciones del autor

Introducción

Como un desarrollador que escribe blogs quiero una herramienta que me ayude a entender mejor el texto que estoy redactando. Para ello necesito una herramienta que me permita saber lo siguiente:

  1. ¿Cuáles son las palabras más utilizadas en el texto?
  2. ¿Cuántos caracteres tiene el texto?
interface Processor {
analyse(text: string);
}

No es necesario utilizar esta interfaz.

Primer reto

Dado el siguiente texto:

 
Hello, this is an example for you to practice. You should grab this text and make it as your test case.
 

El output debería ser:

Those are the top 10 words used:

1. you
2. this
3. your
4. to
5. text
6. test
7. should
8. practice
9. make
10. it

The text has in total 21 words

Algunas observaciones

  • Como habrás notado, el ejemplo asume que 'You' y 'you' son lo mismo, es decir, no distingue entre mayúsculas y minúsculas.
  • Las palabras que tienen el mismo número no aparecen en orden. Por ejemplo, 'this' y 'it', aparecen una vez, y no están ordenadas alfabéticamente.

A continuación, la kata empieza a ser un poco más compleja. Asegúrate de completar primero este reto antes de pasar al segundo.

Segundo reto

Ahora me gustaría saber cuánto tiempo tardaría el usuario en leer mi post, para ello debería aplicar la siguiente fórmula:

(La velocidad media de lectura es de 238, según este estudio, pero 200 es un buen compromiso y es más fácil de recordar).

Esta es la fórmula:

  • Obtén el número total de palabras (incluidos el titular y el subtítulo).
  • Divide el número total de palabras por 200. El número antes del decimal son los minutos.
  • Toma los decimales y multiplícalo por 0,60. Así obtendrás los segundos. 

Ejemplo:

783 words ÷ 200 = 3.915 (3 = 3 minutes)
.915 × .60 = .549 (a little over 54 seconds, so I'd bump it up to 60 seconds, or a full minute).
 

El tiempo de lectura de este artículo es de 4 minutos.

Tercer reto

Además de las características anteriores, el procesamiento de texto también debe tener:

  • Una forma de ignorar una parte determinada del texto para analizar (Por ejemplo, un fragmento de código - el fragmento de código se encuentra entre javascript cualquier cosa dentro debe ser ignorado).
  • Una forma de ofrecer palabras clave y eliminarlas del análisis.

Dado el ejemplo de 1, este sería un texto con fragmentos de código:

Hello, this is an example for you to practice. You should grab this text and make it as your test case:

if (true) {
console.log('should should should')
}

 

La salida de procesamiento de texto debe ignorar el fragmento de código. Es decir, que el output salida debe ser:

Those are the top 10 words used:

1. you
2. this
3. your
4. to
5. text
6. test
7. should
8. practice
9. make
10. it

The text has in total 21 words

 

Observa que la palabra 'should' es la misma, y no sube en la lista ya que 'should' aparece cuatro veces (más que la palabra 'you').