Metáfono

Ajustar Compartir Imprimir Citar

Metaphone es un algoritmo fonético, publicado por Lawrence Philips en 1990, para indexar palabras por su pronunciación en inglés. Mejora fundamentalmente el algoritmo de Soundex mediante el uso de 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 hace un mejor trabajo al hacer coincidir palabras y nombres que suenan similares. Al igual que con Soundex, las palabras que suenan de forma similar deben compartir las mismas claves. Metaphone está disponible como operador integrado en varios sistemas.

Philips más tarde produjo una nueva versión del algoritmo, al que llamó Double Metaphone. A diferencia del algoritmo original cuya aplicación se limita solo 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 y apellidos que se encuentran comúnmente en los Estados Unidos, habiendo sido desarrollado de acuerdo con estándares de ingeniería modernos contra un arnés de prueba de codificaciones correctas preparadas.

Procedimiento

Los códigos originales de Metaphone usan los 16 símbolos de consonantes 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. También se utilizan las vocales AEIOU, pero sólo al principio del código. Esta tabla resume la mayoría de las reglas en la implementación original:

  1. Suelte letras adyacentes duplicadas, excepto C.
  2. Si la palabra comienza con 'KN', 'GN', 'PN', 'AE', 'WR', suelta la primera letra.
  3. Suelta 'B' si después de 'M' al final de la palabra.
  4. 'C' se transforma en 'X' si sigue por 'IA' o 'H' (a menos que en este último caso, es parte de '-SCH-', en cuyo caso se transforma en 'K'). 'C' se transforma en 'S' si es seguido por 'I', 'E', o 'Y'. De lo contrario, 'C' se transforma en 'K'.
  5. 'D' se transforma en 'J' si sigue por 'GE', 'GY', o 'GI'. De lo contrario, 'D' se transforma en 'T'.
  6. Suelta 'G' si sigue 'H' y 'H' no está al final o antes de una vocal. Suelta 'G' si sigue 'N' o 'NED' y está al final.
  7. 'G' se transforma en 'J' si antes 'I', 'E', o 'Y', y no está en 'GG'. De lo contrario, 'G' se transforma en 'K'.
  8. Suelta 'H' si después de la vocal y no antes de una vocal.
  9. 'CK' se transforma en 'K'.
  10. 'PH' se transforma en 'F'.
  11. 'Q' se transforma en 'K'.
  12. 'S' se transforma en 'X' si sigue por 'H', 'IO', o 'IA'.
  13. 'T' se transforma en 'X' si sigue por 'IA' o 'IO'. 'TH' se transforma en '0'. Deja 'T' si sigue 'CH'.
  14. 'V' se transforma en 'F'.
  15. 'WH' se transforma en 'W' si al principio. Deja 'W' si no sigue una vocal.
  16. 'X' se transforma en 'S' si al principio. De lo contrario, 'X' se transforma en 'KS'.
  17. Deja 'Y' si no sigue una vocal.
  18. 'Z' se transforma en 'S'.
  19. Deja todas las vocales a menos que sea el principio.

Esta tabla no constituye una descripción completa del algoritmo Metaphone original, y el algoritmo no se puede codificar correctamente a partir de ella. Metaphone original contenía muchos errores y fue reemplazado por Double Metaphone y, a su vez, Double Metaphone y Metaphone original fueron reemplazados por Metaphone 3, que corrige miles de errores de codificación que producirán las dos primeras versiones.

Para implementar Metaphone sin comprar una copia (código fuente) de Metaphone 3, se puede usar la implementación de referencia de Double Metaphone. 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, está disponible bajo los términos de la licencia BSD a través del proyecto OpenRefine.

Doble Metáfono

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. Realiza una serie de mejoras de diseño fundamentales sobre el algoritmo Metaphone original.

Se llama "Doble" porque puede devolver un código primario y secundario para una cadena; esto explica algunos casos ambiguos, así como múltiples variantes de apellidos con ascendencia común. Por ejemplo, codificar el nombre "Smith" produce un código principal de SM0 y un código secundario de XMT, mientras que el nombre "Schmidt" produce un código principal de XMT y un código secundario de SMT; ambos tienen XMT en común.

Double Metaphone trata de dar cuenta de innumerables irregularidades en 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 mucho más complejo para la codificación que su predecesor; por ejemplo, prueba aproximadamente 100 contextos diferentes del uso de la letra C sola.

Metáfono 3

En octubre de 2009 se lanzó 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 el idioma inglés, palabras no inglesas familiares para los estadounidenses y nombres y apellidos que se encuentran comúnmente en los Estados Unidos. Mejora considerablemente la codificación de los nombres propios en particular. El autor afirma que, en general, mejora la precisión de todas las palabras desde aproximadamente el 89 % de Double Metáfono hasta el 98 %. Los desarrolladores ahora también pueden configurar interruptores en el código para que el algoritmo codifique las teclas 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. Metaphone 3 se vende como fuente C++, Java, C#, PHP, Perl y PL/SQL, envoltorios de Ruby y Python que acceden a un jar de Java, y también Metaphone 3 para la pronunciación en español y alemán disponible como fuente Java y C#. La última revisión del algoritmo Metaphone 3 es v2.5.4, lanzada en marzo de 2015. El código fuente de Metaphone3 Java para una versión anterior, 2.1.3, que carecía de una gran cantidad de correcciones de codificación realizadas en la versión actual, versión 2.5.4, fue incluido como parte del proyecto OpenRefine y es visible públicamente.

Errores comunes

Hay algunos conceptos erróneos sobre los algoritmos de Metaphone que deben abordarse. Las siguientes afirmaciones son verdaderas:

  1. Todos ellos están diseñados para abordar palabras regulares, "diccionarias", no sólo nombres, y
  2. Los algoritmos de metabolismo sí no producir representaciones fonéticas de las palabras y nombres de entrada; más bien, la salida es intencionalmente aprox. representación fonética, según este estándar:
  • palabras que comienzan con un sonido vocal tendrán un 'A', representando cualquier vocal, como el primer carácter de la codificación (en doble metáfono y metáfono 3 - Metáfono original sólo conserva la vocal real),
  • las vocales después de una vocal inicial serán ignoradas y no codificadas, y
  • los pares consonantes con voz / novoiced serán mapeados a la misma codificación. (Los ejemplos de pares consonantes con voz o sin voto 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 sus pronunciaciones y escriben mal o varían las palabras y los nombres que intentan escribir. Las vocales, por supuesto, son notoriamente muy variables. Los hablantes británicos a menudo se quejan de que los estadounidenses parecen pronunciar 'T's lo mismo que 'D'. Considere, también, que todos los angloparlantes a menudo pronuncian 'Z' donde 'S' se escribe, casi siempre cuando se pluraliza un sustantivo que termina en una consonante sonora o un líquido, por ejemplo "estaciones", "vigas", "ejemplos", etc. No codificar las vocales después de un sonido de vocal inicial ayudará a agrupar palabras donde una vocal y una consonante pueden transponerse en el error ortográfico o pronunciación alternativa.

Metáfono de otros idiomas

Metaphone es útil para variantes en inglés y otros idiomas, ya que se prefiere a Soundex en varios idiomas indoeuropeos. Por otro lado, la codificación fonética aproximada genera dependencia del idioma (o, en una variante del idioma, dependencia del hablante del idioma promedio), principalmente para las variantes que no están en inglés.

Quizás el primer ejemplo de adaptación estable de metáfono que no está en inglés fue el portugués de Brasil: se originó en ~2008 como una solución de base de datos en el municipio de Várzea Paulista de Brasil y evolucionó hasta convertirse en el algoritmo metaphone-ptbr actual.