Procesamiento del lenguaje natural con ElasticSearch

por:

Procesamiento del lenguaje natural con ElasticSearch

Uno de los problemas que se presentan con una mayor frecuencia hoy en día, es la realización de búsquedas textuales. Esto problema se puede resolver con muchos enfoques, desde una búsqueda exacta como permiten la mayoría de los lenguajes de programación, hasta la utilización de algoritmos de procesamiento del lenguaje natural.

¿Qué es el procesamiento del lenguaje natural?

El procesamiento del lenguaje natural, conocido también por sus siglas en inglés NPL consiste en desarrollar y aplicar distintas técnicas, metodologías y algoritmos que utilizan como entrada y/o salida texto o voz. La complejidad de este campo, es que agrupa conceptos como:

  • El reconocimiento de voz (traducir la voz en texto).
  • La síntesis de voz (traducir el texto en voz).
  • La traducción en tiempo real.
  • La identificación del idioma del usuario.

Además, hay que tener en cuenta que mientras que la escritura por ordenador es siempre igual, en el caso de la voz cada usuario dependiendo de su lugar, sexo, edad, etc presenta características distintas.

¿Qué es ElasticSearch?

ElasticSearch es un proyecto basado en Apache Lucene, que nos permite tener un servidor para realizar búsquedas. El proyecto fue creado por Shay Banon y tiene como principales características la velocidad de búsqueda y la escalabilidad. Este software es ampliamente usado en buscadores, e-commerce y para tratar el lenguaje natural.

¿Cómo funciona ElasticSearch?

La verdad es que ElasticSearch es bastante complejo de utilizar ya que utiliza una conjunto de conceptos específicos de este software y su configuración no es del todo intuitiva. Sin embargo, los resultados valen la pena. Por este motivo os dejo la siguiente presentación, en la cual podéis ver un explicación detallada de todos los conceptos, cómo configurar ElasticSearch y algunos casos de uso. Esta presentación es la que yo he utilizado para desarrollar un trabajo sobre este software y es de lo mejor que he leído en español sobre este tema.

Procesamiento del lenguaje natural con ElasticSearch

Muchos os preguntaréis por qué hablo de ElasticSearch si es un software de búsqueda. Esto es debido a que ElasticSearch tiene implementado multitud de algoritmos para el procesamiento del lenguaje natural, ya que estos se usan para mejorar los resultados. Por ejemplo, si el usuario busca por “coches” también le interesan los resultados de “coche”.

Los algoritmos de procesamiento del lenguaje más destacados se pueden categorizar en:

  • Stemmers: son algoritmos que reducen una palabra a su raíz, para ello:
    • Elimina los plurales
    • Transforma las formas verbales a su raíz.
    • Elimina los sufijos con los que se forman otras palabras por derivación.
  • Lowercase: transforma a minúsculas todas las letras de la entrada de datos.
  • Stop Words: elimina un conjunto de palabras que no aportan significado a la frase, por ejemplo los artículos o las preposiciones.

Para obtener los mejores resultados, hay que utilizar los tres anteriores de manera consecutiva.

Para ilustrar cómo funcionaría, si nosotros realizásemos la siguiente búsqueda: “¿Dónde comer en Salamanca?”, con lo anterior se transformaría en “donde come salamanca”. Esto haría que el número de resultados desfavorables se redujera ya que, aquellos que tienen en su título la palabra “en” no saldrían, al haber sido eliminada.

Espero que esta entrada os anime a profundizar en ElasticSearch y que lo podáis utilizar para vuestros sistemas de búsqueda.

The following two tabs change content below.

Jorge Durán

Administrador, redactor y creador de Somos Binarios
Entusiasta de la tecnología desde los 10 años, desarrollador y creador de varios proyectos de software y autodidacta por naturaleza. Ingeniero Informático por la USAL

Latest posts by Jorge Durán (see all)