Métricas de similitud para cadenas de texto. Parte IV: Biblioteca hermetrics para python

Share on facebook
Share on twitter
Share on linkedin
Métrica-textos

Esta es la cuarta y última parte de la serie métricas de similitud para cadenas de texto. La serie completa es la siguiente

En los artículos anteriores se describió el concepto de métrica en general y sus propiedades, así como algunas métricas comunes basadas en operaciones de edición y emparejamiento de caracteres entre otras. En esta ocasión hablaremos de la implementación particular de una biblioteca en pyhton llamada hermetrics, cuya finalidad es facilitar el desarrollo y experimentación de métricas para cadenas de texto.

Visión general

Hermetrics está diseñada para facilitar la construcción de métricas en general, algunas de las cuales ya están implementadas como parte de la biblioteca, como por ejemplo todas las métricas descritas en esta serie de artículos.

La biblioteca cuenta con una clase base llamada Metric, la cual puede ser adaptada para construir otras métricas modificando algunos sus métodos y reutilizando algunos otros.

Como se mencionó en el primer artículo, los valores que normalmente se buscan al usar una métrica son la distancia, la distancia normalizada y la similitud, estos corresponden a los tres métodos principales implementados en Metric:

  • distance
  • normalized_distance
  • similarity

Los métodos de Metric reciben como regla general tres parámetros:

  • source. La cadena origen a comparar.
  • target. La cadena destino a comparar.
  • cost. El costo unitario por operación de edición u otra medida de discrepancia.

Cabe señalar que el objetivo de hermetrics es servir como herramienta experimental por lo que el énfasis en la implementación de las métricas que actualmente la conforman no es la optimización de la complejidad computacional, sino la flexibilidad y reutilización de código.

Instalación y uso

Instalar hermetrics es muy sencillo a través de PyPI, únicamente hay que usar pip desde la línea de comandos:

Una vez instalado, veamos un ejemplo de uso con la distancia de Levenshtein, primero se importa y se instancia la métrica.

Posteriormente se puede utilizar para calcular los valores de distancia y similitud entre dos cadenas de texto.

Es posible modificar el costo asignado a cada operación de edición, el siguiente ejemplo utiliza un costo igual a 2.

También se puede asignar diferentes costos a cada tipo de operación de edición, en el siguiente ejemplo el borrado de un caracter tiene un costo de 1, mientras que la inserción y la sustitución tienen costo de 1.25 y 1.5 respectivamente.

Comparador de métricas

Además de la clase base Metric y varias métricas comunes ya implementadas, la biblioteca también cuenta con una clase MetricComparator cuya función es tomar un conjunto de métricas y aplicarlas a dos cadenas de texto(origen y destino) para comparar los resultados.

El método comparativo que se implementa actualmente es el de similitud entre ambas cadenas, ya que su resultado está acotado entre 0 y 1 y por tanto es más fácil de comparar. Veamos un ejemplo que compara los resultados entre las métricas Optimal String Alignment (OSA) y Damerau-Levenshtein.

Por defecto el comparador de métricas utiliza 8 métricas comunes ya implementadas en hermetrics.

Conclusiones

La biblioteca hermetrics sigue la filosofía de software libre y a pesar de ser un trabajo en desarrollo considero que puede ser de utilidad para aquellos interesados en conocer más sobre el tema, para experimentar con las métricas existentes y desarrollar nuevas, pero sin duda puede servir para su uso en aplicaciones reales tal como ocurre en SoldAI

Algunas características que se planea desarrollar en el futuro son la implementación de más métricas, la ampliación de capacidades de las métricas actuales, un identificador y un visualizador de las operaciones de edición necesarias para transformar la cadenas origen en la cadena destino y algunas otras más.

El tema de las métricas es un tema en el que se podría profundizar mucho más, sin embargo, en esta serie de artículos se tocaron los aspectos fundamentales que permiten al lector darse una idea general sobre el tema y despertar su interés.

Share on facebook
Share on twitter
Share on linkedin

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*

*

¡Conozcámonos mejor!

Súmate a nuestra newsletter donde además de ofertas exclusivas y novedades de SoldAI estaremos envíandote noticias y tendencias del mundo de la tecnología e Inteligencia Artificial.

¡Entérate de todo!