Metaphone es un algoritmo fonético , publicado por Lawrence Philips en 1990, para indexar palabras según su pronunciación en inglés. [ 1 ] Mejora sustancialmente el algoritmo Soundex al utilizar información sobre variaciones e inconsistencias en la ortografía y pronunciación del inglés para producir una codificación más precisa, que realiza un mejor trabajo al relacionar palabras y nombres que suenan parecido. Al igual que con Soundex, las palabras que suenan parecido deberían compartir las mismas claves. Metaphone está disponible como operador integrado en varios sistemas.
Posteriormente, Philips desarrolló una nueva versión del algoritmo, a la que denominó Double Metaphone . A diferencia del algoritmo original, cuya aplicación se limitaba al inglés, esta versión tiene en cuenta las particularidades ortográficas de otros idiomas. En 2009, Philips lanzó una tercera versión, Metaphone 3, que alcanza una precisión de aproximadamente el 99 % para palabras en inglés, palabras no inglesas conocidas por los estadounidenses y nombres y apellidos comunes en Estados Unidos. Esta versión se desarrolló siguiendo los estándares de ingeniería modernos y se probó con un conjunto de codificaciones correctas predefinidas.
Procedimiento
Los códigos Metaphone originales utilizan los 16 símbolos consonánticos 0BFHJKLMNPRSTWXY. [ 2 ] El '0' representa " th " (como una aproximación ASCII de Θ ), la 'X' representa " sh " o " ch ", y los demás representan sus pronunciaciones habituales en inglés. También se utilizan las vocales AEIOU, pero solo al principio del código. [ 3 ] Esta tabla resume la mayoría de las reglas de la implementación original:
- Elimine las letras adyacentes duplicadas, excepto la C.
- Si la palabra comienza con 'KN', 'GN', 'PN', 'AE', 'WR', elimine la primera letra.
- Omita la 'B' si está después de la 'M' al final de la palabra.
- La 'C' se transforma en 'X' si va seguida de 'IA' o 'H' (a menos que en este último caso forme parte de '-SCH-', en cuyo caso se transforma en 'K'). La 'C' se transforma en 'S' si va seguida de 'I', 'E' o 'Y'. En caso contrario, la 'C' se transforma en 'K'.
- La letra 'D' se transforma en 'J' si va seguida de 'GE', 'GY' o 'GI'. En caso contrario, la 'D' se transforma en 'T'.
- Se omite la 'G' si va seguida de 'H' y la 'H' no está al final ni antes de una vocal. Se omite la 'G' si va seguida de 'N' o 'NED' y está al final.
- La letra 'G' se transforma en 'J' si está antes de 'I', 'E' o 'Y', y no forma parte de 'GG'. En caso contrario, la 'G' se transforma en 'K'.
- Se omite la 'H' si va después de una vocal y no antes de una vocal.
- 'CK' se transforma en 'K'.
- 'PH' se transforma en 'F'.
- La 'Q' se transforma en 'K'.
- La 'S' se transforma en 'X' si va seguida de 'H', 'IO' o 'IA'.
- La 'T' se transforma en 'X' si va seguida de 'IA' o 'IO'. La 'TH' se transforma en '0'. Se elimina la 'T' si va seguida de 'CH'.
- La 'V' se transforma en 'F'.
- La 'WH' se transforma en 'W' si está al principio. Se omite la 'W' si no va seguida de una vocal.
- 'X' se transforma en 'S' si está al principio. De lo contrario, 'X' se transforma en 'KS'.
- Omita la 'Y' si no va seguida de una vocal.
- La 'Z' se transforma en 'S'.
- Elimina todas las vocales a menos que estén al principio de la palabra.
Esta tabla no constituye una descripción completa del algoritmo Metaphone original, y a partir de ella no es posible codificarlo correctamente. El Metaphone original contenía muchos errores y fue reemplazado por Double Metaphone, y a su vez, Double Metaphone y el Metaphone original fueron reemplazados por Metaphone 3, que corrige miles de errores de codificación que se producirían en las dos primeras versiones.
Para implementar Metaphone sin adquirir una copia (del código fuente) de Metaphone 3, se puede utilizar la implementación de referencia de Double Metaphone. [ 4 ] Como alternativa, la versión 2.1.3 de Metaphone 3, una versión anterior de 2009 sin varias correcciones de codificación realizadas en la versión actual, la versión 2.5.4, se ha puesto a disposición bajo los términos de la Licencia BSD a través del proyecto OpenRefine. [ 5 ]
Doble metáfora
El algoritmo de codificación fonética Double Metaphone es la segunda generación de este algoritmo. Su implementación se describió en el número de junio de 2000 de C/C++ Users Journal . [ 6 ] Introduce varias mejoras de diseño fundamentales con respecto al algoritmo Metaphone original.
Se denomina "Double" porque puede devolver un código primario y uno secundario para una cadena; esto permite resolver algunos casos ambiguos, así como múltiples variantes de apellidos con un origen común. Por ejemplo, al codificar el nombre "Smith" se obtiene un código primario SM0 y un código secundario XMT , mientras que el nombre "Schmidt" produce un código primario XMT y un código secundario SMT ; ambos tienen XMT en común.
Double Metaphone intenta dar cuenta de las innumerables irregularidades del inglés de origen eslavo , germánico , celta , griego , francés , italiano , español , chino y otros. Por lo tanto, utiliza un conjunto de reglas de codificación mucho más complejo que su predecesor; por ejemplo, analiza aproximadamente 100 contextos diferentes del uso de la letra C sola.
Metaphone 3
En octubre de 2009 se lanzó una versión profesional, desarrollada por el mismo autor, Lawrence Philips. Se trata de un producto comercial que se vende como código fuente. Metaphone 3 mejora aún más la codificación fonética de palabras en inglés, palabras no inglesas conocidas por los estadounidenses y nombres de pila y apellidos comunes en Estados Unidos. Mejora considerablemente la codificación de nombres propios en particular. [ 7 ] El autor afirma que, en general, mejora la precisión para todas las palabras, pasando del 89 % de Double Metaphone al 98 %. Los desarrolladores también pueden configurar interruptores en el código para que el algoritmo codifique las claves de Metaphone 1) teniendo en cuenta las vocales no iniciales, y 2) codificando las consonantes sonoras y sordas de forma diferente. Esto permite refinar el conjunto de resultados si el desarrollador considera que los resultados de la búsqueda incluyen demasiadas palabras que no se parecen lo suficiente al término de búsqueda. [ 8 ] Metaphone 3 se vende como código fuente en C++, Java, C#, PHP, Perl y PL/SQL , envoltorios para Ruby y Python que acceden a un archivo JAR de Java, y también Metaphone 3 para la pronunciación en español y alemán disponible como código fuente en Java y C#. [ 9 ] La última revisión del algoritmo Metaphone 3 es la v2.5.4, publicada en marzo de 2015. El código fuente de Metaphone3 en Java para una versión anterior, la 2.1.3, que carece de una gran cantidad de correcciones de codificación realizadas en la versión actual, la versión 2.5.4, se incluyó como parte del proyecto OpenRefine y es de acceso público. [ 10 ]
conceptos erróneos comunes
Existen algunas ideas erróneas sobre los algoritmos de Metaphone que conviene aclarar. Las siguientes afirmaciones son verdaderas:
- Todos ellos están diseñados para abordar palabras regulares, de "diccionario", no solo nombres, y
- Los algoritmos de Metaphone no producen representaciones fonéticas de las palabras y nombres de entrada; más bien, la salida es una representación fonética intencionalmente aproximada , de acuerdo con este estándar:
- Las palabras que comienzan con un sonido vocálico tendrán una 'A', que representa cualquier vocal, como primer carácter de la codificación (en Double Metaphone y Metaphone 3; el Metaphone original solo conserva la vocal real).
- Las vocales que siguen a un sonido vocálico inicial serán ignoradas y no se codificarán, y
- Los pares de consonantes sonoras/sordas se asignarán a la misma codificación. (Ejemplos de pares de consonantes sonoras/sordas son D/T, B/P, Z/S, G/K, etc.).
Esta codificación aproximada es necesaria para tener en cuenta la forma en que los hablantes de inglés varían su pronunciación y escriben mal o modifican de alguna otra manera las palabras y los nombres que intentan deletrear. Las vocales, por supuesto, son notoriamente variables. Los hablantes británicos a menudo se quejan de que los estadounidenses parecen pronunciar la 'T' igual que la 'D'. Considere también que todos los hablantes de inglés suelen pronunciar la 'Z' donde se escribe la 'S', casi siempre cuando un sustantivo que termina en consonante sonora o líquida se pluraliza, por ejemplo, "seasons", "beams", "examples", etc. No codificar las vocales después de un sonido vocálico inicial ayudará a agrupar palabras donde una vocal y una consonante pueden transponerse en la escritura incorrecta o la pronunciación alternativa.
Metáfora de otros idiomas
Metaphone es útil para variantes del inglés y otros idiomas, y se ha preferido a Soundex en varias lenguas indoeuropeas . Por otro lado, la codificación fonética aproximada genera dependencia lingüística —o , en el caso de una variante lingüística, dependencia promedio entre el idioma y el hablante— principalmente para variantes distintas del inglés.
Quizás el primer ejemplo de adaptación estable de un metáfono no inglés fue el portugués brasileño : se originó alrededor de 2008 como una solución de base de datos en el municipio de Várzea Paulista de Brasil, y evolucionó hasta el algoritmo actualmetaphone-ptbr .
Véase también
Referencias
- ↑ Colgando del Metaphone, Lawrence Philips. Computer Language, Vol. 7, No. 12 (diciembre), 1990.
- ↑ "Alternativa a Soundex" . www.sound-ex.com . Archivado del original el 6 de marzo de 2014. Consultado el 16 de mayo de 2018 .
- ↑ "Morfoedro - Tecnología" . www.morfoedro.it . Consultado el 16 de mayo de 2018 .
- ↑ Philips, Lawrence (1999) [1998]. "Double Metaphone" (CPP) . GNU Aspell . Consultado el 23 de febrero de 2024 .
- ↑ «AbrirRefinar» . GitHub . 19 de mayo de 2022.
- ↑ Philips, Lawrence (junio de 2000). "El algoritmo de búsqueda de doble metáfono" . C/C++ Users Journal . 18 (6): 38– 43.
- ↑ Guy, Ido; Ur, Sigalit; Ronen, Inbal; Weber, Sara; Oral, Tolga (2012). "Best Faces Forward: A Large-scale Study of People Search in the Enterprise" (PDF) . Archivado del original (PDF) el 1 de diciembre de 2023. Recuperado el 23 de febrero de 2024 .
- ↑ Atkinson, Kevin. "El algoritmo Metaphone de Lawrence Philips" . aspell.net . Consultado el 16 de mayo de 2018 .
- ↑ "Software antropomórfico" . www.amorphics.com . Consultado el 16 de mayo de 2018 .
- ↑ "Código fuente de OpenRefine para Metaphone3" . github.com . Consultado el 2 de noviembre de 2020 .
Enlaces externos
- El algoritmo de búsqueda Double Metaphone en Wayback Machine (archivado el 3 de mayo de 2012) , por Lawrence Phillips, 1 de junio de 2000, Dr. Dobb's, artículo original.
Algoritmos de Metaphone para otros idiomas
- Portugués brasileño en C Metaphone para portugués brasileño, en C con puerto PHP y PostgreSQL .
- Portugués brasileño en Java Metaphone para portugués brasileño, en Java.
- Español Metaphone en Python
- Algoritmo de doble metafonema para bengalí
- Algoritmo de doble metafonema para el amárico
- Metaphone ruso en Ruby .
- Metaphone doble y Metaphone en JavaScript
- Algoritmos fonéticos