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 fundamentalmente el algoritmo Soundex al utilizar información sobre variaciones e inconsistencias en la ortografía y pronunciación en inglés para producir una codificación más precisa, que hace un mejor trabajo de emparejamiento de palabras y nombres que suenan similares. Al igual que con Soundex, las palabras que suenan similares deben compartir las mismas claves. Metaphone está disponible como operador integrado en varios sistemas.
Philips produjo posteriormente una nueva versión del algoritmo, a la que llamó Double Metaphone. A diferencia del algoritmo original, cuya aplicación se limita únicamente al inglés, esta versión tiene en cuenta las peculiaridades ortográficas de varios otros idiomas. En 2009, Philips lanzó una tercera versión, llamada Metaphone 3, que logra una precisión de aproximadamente el 99% para palabras en inglés, palabras no inglesas familiares para los estadounidenses y nombres de pila y apellidos que se encuentran comúnmente en los Estados Unidos, habiendo sido desarrollada de acuerdo con los estándares de ingeniería modernos frente a un conjunto de pruebas de codificaciones correctas preparadas.
Los códigos originales de Metaphone utilizan los 16 símbolos consonánticos 0BFHJKLMNPRSTWXY. El '0' representa " th " (como una aproximación ASCII de Θ ), "X" representa " sh " o " ch ", y los demás representan sus pronunciaciones habituales en inglés. Las vocales AEIOU también se utilizan, pero solo al principio del código. [2] Esta tabla resume la mayoría de las reglas en la implementación original:
Esta tabla no constituye una descripción completa del algoritmo Metaphone original y no se puede codificar correctamente a partir de ella. 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 comprar una copia (de código fuente) de Metaphone 3, se puede utilizar la implementación de referencia de Double Metaphone. [3] Alternativamente, la versión 2.1.3 de Metaphone 3, una versión anterior de 2009 sin una serie de 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. [4]
El algoritmo de codificación fonética Double Metaphone es la segunda generación de este algoritmo. Su implementación se describió en la edición de junio de 2000 de C/C++ Users Journal . [5] Presenta una serie de mejoras de diseño fundamentales con respecto al algoritmo Metaphone original.
Se denomina "Double" porque puede devolver tanto un código primario como uno secundario para una cadena; esto explica algunos casos ambiguos, así como las múltiples variantes de apellidos con ascendencia común. Por ejemplo, codificar el nombre "Smith" produce un código primario de SM0 y un código secundario de XMT , mientras que el nombre "Schmidt" produce un código primario de XMT y un código secundario de 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 ello, utiliza un conjunto de reglas de codificación mucho más complejo que su predecesor; por ejemplo, prueba aproximadamente 100 contextos diferentes de uso de la letra C únicamente.
En octubre de 2009 se publicó una versión profesional, desarrollada por el mismo autor, Lawrence Philips. Es 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 familiares para los estadounidenses y nombres de pila y apellidos que se encuentran comúnmente en los Estados Unidos. Mejora la codificación de nombres propios en particular en una medida considerable. [6] El autor afirma que, en general, mejora la precisión de todas las palabras del 89% aproximadamente de Double Metaphone al 98%. Los desarrolladores también pueden ahora establecer interruptores en el código para hacer que el algoritmo codifique las claves de Metaphone 1) teniendo en cuenta las vocales no iniciales, así como 2) codificando las consonantes sonoras y sordas de manera diferente. Esto permite que el conjunto de resultados esté más enfocado si el desarrollador encuentra que los resultados de la búsqueda incluyen demasiadas palabras que no se parecen lo suficiente al término de búsqueda. [7] Metaphone 3 se vende como código fuente en C++, Java, C#, PHP, Perl y PL/SQL, como envoltorios Ruby y Python que acceden a un jar de Java, y también Metaphone 3 para pronunciación en español y alemán disponible como código fuente en Java y C#. [8] La última revisión del algoritmo Metaphone 3 es la v2.5.4, publicada en marzo de 2015. El código fuente Java de Metaphone3 para una versión anterior, 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 visible públicamente. [9]
Existen algunos conceptos erróneos sobre los algoritmos de Metaphone que deben abordarse. Las siguientes afirmaciones son verdaderas:
Esta codificación aproximada es necesaria para tener en cuenta la forma en que los hablantes de inglés varían sus pronunciaciones y escriben mal o varían de otro modo las palabras y los nombres que intentan deletrear. Las vocales, por supuesto, son notoriamente muy variables. Los hablantes británicos a menudo se quejan de que los estadounidenses parecen pronunciar la "T" igual que la "D". Consideremos, también, que todos los hablantes de inglés a menudo pronuncian "Z" donde se escribe "S", casi siempre cuando se pluraliza un sustantivo que termina en una consonante sonora o un líquido, por ejemplo, "seasons", "beams", "examples", etc. No codificar las vocales después de un sonido vocálico inicial ayudará a agrupar palabras en las que una vocal y una consonante pueden transponerse en la ortografía incorrecta o la pronunciación alternativa.
Metaphone es útil para variantes del inglés y otros idiomas, y se ha preferido a Soundex en varios idiomas indoeuropeos . Por otro lado, la codificación fonética aproximada causa dependencia del idioma (o, en el caso de una variante de un idioma, dependencia promedio del hablante del idioma) principalmente para variantes distintas del inglés.
Quizás el primer ejemplo de adaptación estable del metaphone no inglés fue el portugués brasileño : se originó en ~2008 como una solución de base de datos en el municipio de Várzea Paulista en Brasil, y evolucionó hasta el actual algoritmo metaphone-ptbr.