Sistema de extracción de información mediante gramáticas y NLTK, parte 2

7 de Enero de 2020 · 3 min de lectura

Troncomovil900-parte2

Recuperamos

Hasta ahora (en la parte 1) lo que tenemos es un texto donde nos describen entre otras cosas la capacidad de un maletero. Hemos definido la gramática que sigue estos textos como

  • Sintagma de descripción de maletero o SM

Un SM puede estar formado por:

  1. Cantidad+indicativo de volumen, (400l, 400 l, 400L, 400 litros…)
  2. SM + condición (por ejemplo 400 L con asientos tumbados)
  3. SM + SM (per ejemplo 400 L con todos los asientos tumbados y 300 L con las plazas levantadas)

Ventajas y Desventaja de este algoritmo

Ventajas del análisis gramatical: velocidad y análisis “in one go”

Una vez tenemos una gramática completa, las librerías de análisis gramatical contenidas en NLTK nos permiten categorizar un texto de una sola pasada, sin necesidad de hacer una llamada por cada elemento que busquemos. Esto ahorra tiempo y costes.

Ventajas del análisis gramatical: parsing

Al tener definida en la gramática el elemento que define la cantidad y el que define las condiciones, la misma categorización nos hace de parseo. Por ejemplo:

  1. El elemento que define cantidad siempre será convertible en un número
  2. Las condiciones siempre serán controladas y identificadas donde empiezan y acaban

Desventaja del análisis gramatical: necesitamos una gramática completa

Las gramáticas son una herramienta fantástica si tenemos una gramática completa, es decir si tenemos cubiertos todos los casos posibles. Como os podéis imaginar no suele ser el caso en que tengamos definido cada posible caso, así que, ¿qué nos queda? Pues ir añadiendo cada caso que encontremos

Y el Machine Learning, ¿no lo usamos?

Nuestro amigo el Machine Learning, tan olvidado que lo tenemos. Veamos cómo lo aplicaríamos. Nuestro problema es que no conocemos todas las posibilidades, así pues lo que podemos hacer es alimentar el algoritmo con las definiciones y sinónimos e intentar ver si aquellos sintagmas que desconozca pueda inferir una estructura. Por ejemplo, nos encontramos la frase “Llantas de piedra volcánica”.

  • Volcánica es un adjetivo y piedra un nombre por lo que se puede inferir que van juntos
  • de es una preposición que junta dos sintagmas por lo que el sintagma piedra volcánica irá con Llantas.
  • Además (si quisiéramos) podríamos añadir a la máquina que el núcleo de la frase suele preceder el de.

Si juntamos todo ante una frase del estilo maletero de 400 L y llantas de piedra volcánica la máquina nos diría:

  • Sintagma de descripción de maletero:
    • Cantidad 400
    • Condiciones Ninguna
  • Sintagma otros:
    • Núcleo lógico Llantas
    • Atributos de piedra volcánica

Al aceptar esta clasificación reforzaremos el aprendizaje de la máquina por un lado y ella además creará un nuevo tipo de sintagma (Sintagma de descripción de llantas) con lo que a cada nuevo texto se va completando la gramática.

¿Todo esto por no rellenar una tabla con la descripción de un coche?

Todo esto puede parecer un trabajo muy elaborado para evitar “rellenar una tabla de excel con los datos”. No hay que olvidar que lo que está generalizado y bien estructurado puede integrarse con otras herramientas. Por ejemplo podríamos enlazarlo con una herramienta de scrapping para:

  • Capturar todos los posibles coches y luego filtrar para ver los mejores candidatos.
  • Analizar los coches de nuestros competidores y ver qué diferencias tienen con nosotros

Por otro lado gracias a que la gramática puede seguir creciendo y que tenemos semiautomatizado el aprendizaje podemos aplicarlo a otras áreas como:

  • Analizar los puntos más comunes en las reviews de nuestros clientes (por ejemplo que consideren que el maletero es pequeño).
  • Hacer evolutivos para comparar rápidamente las ventajas de nuevos modelos.

Si crees que tienes un problema en el que nuestro departamento de Data Science pueda ayudarte no dudes en enviarnos un correo a data@apsl.net.

Comparte este artículo
Etiquetas
Artículos relacionados