8


3

Faire correspondre les chaînes floues

J’ai deux tables que je dois fusionner dans PostgreSQL, sur la variable commune "nom de l’entreprise". Malheureusement, de nombreux noms d’entreprises ne correspondent pas exactement (c.-à-d. MICROSOFT dans une table, MICROSFT dans l’autre). J’ai essayé de supprimer les mots courants des deux colonnes, comme "corporation" ou "inc" ou "ltd" afin d’essayer de normaliser les noms sur les deux tables, mais j’ai du mal à penser à des stratégies supplémentaires. Des idées?

Merci.

En outre, si nécessaire, je peux le faire dans R.

1 Answer


7


Avez-vous envisagé le module fuzzystrmatch? Vous pouvez utiliser soundex,` difference`, levenshtein,` metaphone` et dmetaphone, ou une combinaison.

SELECT something
FROM somewhere
WHERE levenshtein(item1, item2) < Carefully_Selected_Threshold

Par exemple, la distance de levenshtein de * MICROSOFT * à * MICROSFT * est de un (1).

levenshtein(dmetaphone('MICROSOFT'), dmetaphone('MICROSFT')

Ce qui précède renvoie zéro (0). La combinaison du levenshtein et du dmétaphone pourrait vous aider à faire correspondre de nombreuses fautes d’orthographe.