2012-08-01 10 views
5

¿Alguien puede sugerir un módulo Perl que pueda comparar dos cadenas y devolver un grado con el que coincidan? Busqué CPAN extensamente, y aunque hay módulos similares como String :: Approx y Data :: Compare, no son lo que estoy buscando. Supongamos que tengo dos cadenas: Te amo, y Yo te lo. Quiero funcionalidad que compare estas dos cadenas, teniendo en cuenta numerosos parámetros, la coincidencia de palabras en el orden correcto (amor como la primera palabra en una cadena no debe "coincidir" amor como la cuarta palabra en la segunda cadena , aunque ambas cadenas tienen esa palabra), las palabras no coinciden pero se deletrean casi de manera similar (como love y loge), número de palabras, etc. y devuelven un índice, digamos un número del 0 al 1 en una escala de 1, que representa el grado de similitud entre las dos cadenas. ¿Hay algún módulo Perl de este tipo?Módulo Perl para comparación de texto

+2

¿Sería http://search.cpan.org/dist/Text-Levenshtein/Levenshtein.pm hacer lo que estás buscando ¿para? –

+0

Bueno, no estoy seguro, los ejemplos y el artículo de Wikipedia sobre el acuerdo de distancia de Levenshtein solo en comparaciones de palabras, ninguna comparación de cadenas. Así que no sé cómo va a comparar cadenas con algunas de las palabras que coinciden, pero en diferentes posiciones, que no deberían equivaler a una coincidencia. – SexyBeast

+0

Hacer ese tipo de comparación de cuerdas es algo que los humanos hacen trivialmente, pero que es realmente difícil de hacer con una computadora. –

Respuesta

6

Existen muchos de estos módulos. A menudo, sin embargo, tendrá que hacer uso de ellos de alguna manera especial para dar cuenta de sus propias suposiciones. La mayoría de las herramientas de comparación de cadenas como esta solo implementan algún algoritmo para comparar una cadena con otra. La mayoría asume que si tiene que tomar decisiones políticas específicas, las codificará usted mismo.

Personalmente, no estoy seguro de que recomendaría Text::Levenshtein debido a errores y falta de soporte ut8. Aunque no tengo una mejor recomendación tampoco.

Sin embargo, estas búsquedas revelan una gran cantidad de módulos potenciales que usted podría mirar en y determinar lo que funciona mejor para su propósito (basado en los nombres de los algoritmos comunes para hacer este tipo de cosas):

Si usted está interesado en similitudes habladas, también se puede ver i ONT comparaciones fonéticas:

+0

Wow. Muchos recursos los buscarán a todos. ¡Gracias! – SexyBeast

Cuestiones relacionadas