stringtranslate.com

Metafono

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.

Procedimiento

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:

  1. Eliminar letras adyacentes duplicadas, excepto C.
  2. Si la palabra comienza con 'KN', 'GN', 'PN', 'AE', 'WR', omite la primera letra.
  3. Omite la «B» si va después de la «M» al final de la palabra.
  4. 'C' se transforma en 'X' si va seguida de 'IA' o 'H' (a menos que en este último caso sea parte de '-SCH-', en cuyo caso se transforma en 'K'). 'C' se transforma en 'S' si va seguida de 'I', 'E' o 'Y'. De lo contrario, 'C' se transforma en 'K'.
  5. La letra "D" se transforma en "J" si va seguida de "GE", "GY" o "GI". De lo contrario, la letra "D" se transforma en "T".
  6. Omite la "G" si va seguida de una "H" y la "H" no está al final o antes de una vocal. Omite la "G" si va seguida de una "N" o "NED" y está al final.
  7. "G" se transforma en "J" si está antes de "I", "E" o "Y" y no está en "GG". De lo contrario, "G" se transforma en "K".
  8. Omite la "H" si está después de una 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 va seguido de 'H', 'IO' o 'IA'.
  13. "T" se transforma en "X" si va seguido de "IA" o "IO". "TH" se transforma en "0". Se omite "T" si va seguido de "CH".
  14. 'V' se transforma en 'F'.
  15. "WH" se transforma en "W" si está al principio. Omite "W" si no va seguido de una vocal.
  16. "X" se transforma en "S" si está al principio. De lo contrario, "X" se transforma en "KS".
  17. Omite "Y" si no va seguida de una vocal.
  18. 'Z' se transforma en 'S'.
  19. Omite todas las vocales a menos que sea el principio.

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]

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 . [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.

Metafono 3

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]

Conceptos erróneos comunes

Existen 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 habituales del "diccionario", no sólo nombres, y
  2. Los algoritmos metafónicos 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 de vocal tendrán una 'A', que representa cualquier vocal, como el primer carácter de la codificación (en Double Metaphone y Metaphone 3, el Metaphone original solo conserva la vocal real).
  • Las vocales después de un sonido vocálico inicial se ignorarán 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 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.

Metáfono de otras lenguas

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.

Véase también

Referencias

  1. ^ Colgado del metafono, Lawrence Philips. Computer Language, vol. 7, n.º 12 (diciembre), 1990.
  2. ^ "Morfoedro - Tecnología". www.morfoedro.it . Consultado el 16 de mayo de 2018 .
  3. ^ Philips, Lawrence (1999) [1998]. "Double Metaphone" (CPP) . GNU Aspell . Consultado el 23 de febrero de 2024 .
  4. ^ "OpenRefine". GitHub . 19 de mayo de 2022.
  5. ^ Philips, Lawrence (junio de 2000). "El algoritmo de búsqueda de doble metáfono". C/C++ Users Journal . 18 (6): 38–43.
  6. ^ 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 desde el original (PDF) el 1 de diciembre de 2023 . Consultado el 23 de febrero de 2024 .
  7. ^ Atkinson, Kevin. "El algoritmo metafónico de Lawrence Philips". aspell.net . Consultado el 16 de mayo de 2018 .
  8. ^ "Software antropomórfico". www.amorphics.com . Consultado el 16 de mayo de 2018 .
  9. ^ "Código fuente de OpenRefine para Metaphone3". github.com . Consultado el 2 de noviembre de 2020 .

Enlaces externos

Algoritmos metafónicos para otros idiomas