Maison > base de données > tutoriel mysql > Comment calculer le pourcentage de similarité de chaînes dans MySQL ?

Comment calculer le pourcentage de similarité de chaînes dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-12-30 17:59:09
original
220 Les gens l'ont consulté

How to Calculate String Similarity Percentage in MySQL?

Comment calculer la similarité de chaînes dans MySQL

Problème :

Vous avez deux chaînes dans MySQL et devez déterminer leur pourcentage de similarité. Par exemple, étant donné les chaînes "@a = 'Welcome to Stack Overflow'" et "@b = 'Bonjour à stack overflow'", vous souhaitez trouver la similitude entre elles.

Solution :

  1. Créer la distance de Levenshtein Fonction :

    Utilisez la fonction suivante pour calculer la distance de Levenshtein entre deux chaînes :

    CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11)
    DETERMINISTIC
    BEGIN 
    ...
    END
    Copier après la connexion

    La fonction ci-dessus est adaptée de celle fournie sur http://www.artfulsoftware .com/infotree/queries.php#552.

  2. Créez le Fonction de rapport de similarité de Levenshtein :

    Pour convertir la distance de Levenshtein en un rapport de similarité, utilisez cette fonction :

    CREATE FUNCTION `levenshtein_ratio`( s1 text, s2 text ) RETURNS int(11)
    DETERMINISTIC
    BEGIN 
    ...
    END
    Copier après la connexion

Utilisation :

Pour calculer le pourcentage de similarité entre deux chaînes, utilisez ce qui suit formule :

similarity_percentage = ((1 - LEVENSHTEIN(s1, s2) / MAX_LENGTH) * 100)
Copier après la connexion
  • LEVENSHTEIN(s1, s2) : calcule la distance de Levenshtein entre les deux chaînes.
  • MAX_LENGTH : la longueur maximale des deux chaînes.

Exemple :

SELECT levenshtein_ratio('Welcome to Stack Overflow', 'Hello to stack overflow') AS similarity;
Copier après la connexion

Cette requête renverra le pourcentage de similarité entre les deux chaînes, qui dans ce cas serait de 66 %.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal