2008-09-03 49 views

Respuesta

13

Soundex es bastante primitivo, fue desarrollado originalmente para ser calculado a mano. Resulta en una clave que se puede comparar.

Soundex funciona bien con los nombres occidentales, ya que fue desarrollado originalmente para los datos del censo de EE. UU. Está destinado a la comparación fonética.

Levenshtein distance observa dos valores y produce un valor basado en su similitud. Está buscando letras perdidas o sustituidas.

Básicamente Soundex es mejor para encontrar que "Schmidt" y "Smith" pueden ser del mismo apellido.

distancia Levenshtein es mejor para detectar que el usuario ha escrito mal "Levnshtein" ;-)

0

@Keith:

Como he publicado en la otra pregunta, Daitch-Mokotoff es mejor para nosotros los europeos (y yo argumentaría en los Estados Unidos).

También he leído la Wiki en Levenshtein. Pero no veo por qué (en la vida real) es mejor para el usuario que Soundex.

8

Sugeriría usar Metaphone, no Soundex. Como se señaló, Soundex se desarrolló en el siglo XIX con nombres estadounidenses. Metaphone le dará algunos resultados al verificar el trabajo de los deficientes deletreadores que están "sondeándolo" y deletreando fonéticamente.

La distancia de edición es buena para atrapar errores tipográficos, como letras repetidas, letras transpuestas o presionar la tecla incorrecta.

Considera la aplicación para decidir cuál se ajustará mejor a tus usuarios — o úsalas ambas juntas, con Metaphone complementando las sugerencias producidas por Levenshtein.

Con respecto a la pregunta original, he usado n-grams con éxito en aplicaciones de recuperación de información.

+0

e iría por metafonía doble, devuelve 2 códigos, uno para sonido occidental y otro para sonidos 'extranjeros' (más slavic IIRC). – gbjbaanb

+0

Soundex se desarrolló a principios del siglo XX y se usó para datos censales del siglo XIX. – webmaster777

2

Estoy de acuerdo con usted en Daitch-Mokotoff, Soundex es parcial porque los encuestadores originales de Estados Unidos querían nombres 'americanizados'.

Tal vez un ejemplo de la diferencia ayudaría:

Soundex pone adición de valor en el inicio de una palabra - de hecho, sólo tiene en cuenta los 4 primeros sonidos fonéticos. Entonces, si "Schmidt" y "Smith" coincidirán con "Smith" y "Wmith" no lo harán.

El algoritmo de Levenshtein sería mejor para encontrar errores tipográficos: una o dos letras faltantes o reemplazadas produce una alta correlación, mientras que el impacto fonético de esas letras faltantes es menos importante.

No creo que ninguno sea mejor, y consideraría tanto un algoritmo de distancia como uno fonético para ayudar a los usuarios a corregir la entrada mecanografiada.

Cuestiones relacionadas