Función DICECOEFFICIENT( )

Devuelve el coeficiente de Dice de dos cadenas especificadas, que es la medida de similitud entre las dos cadenas.

Sintaxis

DICECOEFFICIENT(cadena1; cadena2 <;ngrama>)

Parámetros

Nombre Tipo Descripción
cadena1 carácter La primera cadena de la comparación.
cadena2 carácter La segunda cadena de la comparación.

ngrama

opcional

numérico

La longitud n-grama que se debe utilizar.

Especifique un número entero, 1 o superior. El incremento de la longitud del ngrama hace que el criterio para la similitud entre ambas cadenas sea más estricto.

Si no especifica una longitud, la longitud predeterminada que se utiliza es 2.

Los n-gramas son subcadenas (bloques de caracteres) que se superponen y en los que las cadenas de comparación se dividen como parte del cálculo del coeficiente de Dice.

Si desea obtener información detallada, consulte Observaciones.

Salida

Numérico. El valor es el coeficiente de Dice de las dos cadenas, que representa el porcentaje de la cantidad total de n-gramas de las dos cadenas que son idénticos. El rango es de 0,0000 a 1,0000, inclusive.

Ejemplos

Ejemplos básicos

Cómo afecta el resultado la longitud del n-grama

Los tres ejemplos que se incluyen a continuación comparan las mismas dos cadenas. El grado de similitud que se obtiene varía según la longitud de n-grama que se especificó.

Devuelve 0,9167 (con la longitud predeterminada de n-grama (2), los n-gramas de las dos cadenas tienen una exactitud del 92 %):

DICECOEFFICIENT("125 SW 39TH ST, Suite 100";"Suite 100, 125 SW 39TH ST")

Devuelve 1,0000 (con una longitud de n-grama de 1, los n-gramas de las dos cadenas tienen una exactitud del 100 %):

DICECOEFFICIENT("125 SW 39TH ST, Suite 100";"Suite 100, 125 SW 39TH ST"; 1)

Devuelve 0,8261 (con una longitud de n-grama de 3, los n-gramas de las dos cadenas tienen una exactitud del 83 %):

DICECOEFFICIENT("125 SW 39TH ST, Suite 100";"Suite 100, 125 SW 39TH ST"; 3)

Valor de entrada del campo

Devuelve el coeficiente de Dice de cada valor en el campo Dirección, al ser comparado con la cadena "125 SW 39TH ST, Suite 100" (con la longitud predeterminada de n-grama de 2):

DICECOEFFICIENT(Dirección;"125 SW 39TH ST, Suite 100")

Ejemplos avanzados

Trabajo con elementos transpuestos

Al reducir la longitud de n-grama y eliminar los caracteres que no son esenciales, puede optimizar DICECOEFFICIENT( ) al buscar elementos transpuestos.

Devuelve 0,7368 (con la longitud predeterminada de n-grama (2), los n-gramas de las dos cadenas tienen una exactitud del 74 %):

DICECOEFFICIENT("John Smith";"Smith, John")

Devuelve 1,0000 (al excluir la coma entre el apellido y el nombre, y con una longitud de n-grama de 1, los n-gramas de las dos cadenas tienen una exactitud del 100 %):

DICECOEFFICIENT("John Smith"; EXCLUDE("Smith, John"; ","); 1)

Calificación de los valores en comparación con "125 SW 39TH ST, Suite 100"

Cree el campo calculado Co_Dice para mostrar el coeficiente de Dice entre "125 SW 39TH ST, Suite 100" y cada uno de los valores del campo Dirección:

DEFINE FIELD Co_Dice COMPUTED DICECOEFFICIENT(Dirección;"125 SW 39TH ST, Suite 100")

Agregue el campo calculado Co_Dice a la vista y, a continuación, ordene rápidamente de forma descendente para calificar los valores del campo Dirección sobre la base de su similitud con "125 SW 39TH ST, Suite 100".

Aislamiento de duplicados inexactos para "125 SW 39TH ST, Suite 100"

Cree un filtro que aísle todos los valores del campo Dirección que se encuentren a un grado específico de similitud con "125 SW 39TH ST, Suite 100":

SET FILTER TO DICECOEFFICIENT(Dirección; "125 SW 39TH ST, Suite 100") > 0,5

Cambiar el número de la expresión le permite ajustar el grado de similitud en los valores filtrados.

Observaciones

Cuándo usar DICECOEFFICIENT( )

Utilice DICECOEFFICIENT( ) para buscar valores casi idénticos (duplicados inexactos). También puede utilizar DICECOEFFICIENT( ) para buscar valores con contenido idéntico o casi idéntico, pero con elementos traspuestos. Por ejemplo:

  • números de teléfono o números de seguridad social, con dígitos traspuestos
  • versiones del mismo domicilio, con diferente formato

Cómo funciona

DICECOEFFICIENT( ) devuelve el coeficiente de Dice de las dos cadenas que se evaluaron, que es una medida del grado de similitud entre las cadenas, expresado en una escala de 0,0000 al 1,0000. Cuanto mayor es el valor que se obtiene, mayor es la similitud entre las dos cadenas:

  • 1,0000: significa que cada cadena está compuesta por un conjunto de caracteres idéntico, aunque estos puedan estar en un orden diferente y presentar diferencias en el uso de mayúsculas y minúsculas.

  • 0,7500: significa que los n-gramas de las dos cadenas tienen una exactitud del 75 %.

  • 0,0000: significa que las dos cadenas no comparten ningún n-grama (se explica a continuación) o que la longitud especificada para el n-grama que se usó en el cálculo es más larga que la cadena más corta del par de cadenas que se están comparando.

Consejos de uso

  • Filtrar u ordenar Filtrar u ordenar los valores de un campo sobre la base de su coeficiente de Dice identifica los valores más similares a la cadena de comparación.
  • Distinción entre mayúsculas y minúsculas Esta función no distingue entre mayúsculas y minúsculas; por lo tanto "SMITH" es equivalente a "smith".
  • Espacios en blanco al principio y al final La función recorta automáticamente los espacios en blanco al principio y al final de los campos, por lo que no es necesario utilizar las funciones TRIM( ) u ALLTRIM( ) cuando se especifica un campo como un parámetro.
  • Eliminación de elementos genéricos Las funciones OMIT( ) y EXCLUDE( ) pueden mejorar la eficacia de la función DICECOEFFICIENT( ) quitando elementos genéricos como "Corporación" o "Inc.", o caracteres como comas, puntos y signos et (&) de los valores del campo.

    La eliminación de los elementos genéricos y la puntuación centra la comparación de cadenas de DICECOEFFICIENT( ) solo en la parte de las cadenas donde puede haber una diferencia significativa.

Cómo se calcula el coeficiente de Dice

El coeficiente de Dice representa el porcentaje de la cantidad total de n-gramas de las dos cadenas que son idénticos.

El coeficiente de Dice se calcula dividiendo primero las cadenas que se están comparando en n-gramas. Los n-gramas (también denominados q-gramas) son subcadenas superpuestas o bloques de caracteres superpuestos con una longitud equivalente a n. Puede especificar la longitud de n utilizando el parámetro ngram o aceptar la longitud predeterminada de 2.

Dos nombres divididos en n-gramas

Aquí se ven los nombres "John Smith" y "Smith, John D." divididos en n-gramas con una longitud de 2 y n-gramas con una longitud de 3. Los guiones bajos indican espacios. Los espacios internos y la puntuación se cuentan como caracteres.

Longitud de n-grama

"John Smith" n-gramas

"Smith, John D." n-gramas

2

Jo | oh | hn | n_ | _S | Sm | mi | it | th

Sm | mi | it | th | h, | ,_ | _J | Jo | oh | hn | n_ | _D | D.

3

Joh | ohn | hn_ | n_S | _Sm | Smi | mit | ith

Smi | mit | ith | th, | h,_ | ,_J | _Jo | Joh | ohn | hn_ | n_D | _D.

Fórmula del coeficiente de Dice

Una vez que se hayan establecido los n-gramas de las dos cadenas que se están comparando, el cálculo se completa con la siguiente fórmula:

  • 2 x la cantidad de n-gramas compartidos / la cantidad total de n-gramas en ambas cadenas

Los n-gramas compartidos son los n-gramas que aparecen en ambas cadenas. Por ejemplo, "ABC" y "BCD" comparten el n-grama "BC", suponiendo que la longitud del n-grama sea 2 (AB | BC y BC | CD).

Ejemplos del cálculo del coeficiente de Dice

La siguiente tabla muestra el cálculo del coeficiente de Dice para las dos cadenas, "John Smith" y "Smith, John D.", con distintas longitudes de n-grama.

Observe que, a medida que se incrementa la longitud del n-grama para el mismo par de cadenas, el valor del coeficiente de Dice se reduce, lo cual indica menor similitud. Si bien las cadenas continúan siendo las mismas, el criterio de similitud se vuelve más estricto porque al dividir las cadenas en n-gramas más extensos debe haber secuencias más largas de caracteres coincidentes para que haya un n-grama compartido.

Otra manera de ver esta comparación es considerar que la posición relativa de los caracteres tiene más peso a medida que se incrementa la longitud del n-grama. Por el contrario, la posición relativa de los caracteres no se tiene en cuenta al utilizar un n-grama con una longitud de 1. La posición relativa hace referencia a la posición de los caracteres entre sí, en lugar de su posición absoluta dentro de una cadena.

Consejo

Si está buscando específicamente una trasposición, utilice una longitud de n-grama de 1.

Longitud de n-grama

"John Smith" n-gramas

"Smith, John D." n-gramas

n-gramas compartidos

Coeficiente de Dice

1

J | o | h | n | _ | S | m | i | t | h

(10 n-gramas)

S | m | i | t | h | , | _ | J | o | h | n | _ | D | .

(14 n-gramas)

10

2x10 / (10+14) = 0,8333

2

(predeterminado)

Jo | oh | hn | n_ | _S | Sm | mi | it | th

(9 n-gramas)

Sm | mi | it | th | h, | ,_ | _J | Jo | oh | hn | n_ | _D | D.

(13 n-gramas)

8

2x8 / (9+13) = 0,7273

3

Joh | ohn | hn_ | n_S | _Sm | Smi | mit | ith

(8 n-gramas)

Smi | mit | ith | th, | h,_ | ,_J | _Jo | Joh | ohn | hn_ | n_D | _D.

(12 n-gramas)

6

2x6 / (8+12) = 0,6000

4

John | ohn_ | hn_S | n_Sm | _Smi | Smit | mith

(7 n-gramas)

Smit | mith | ith, | th,_ | h,_J | ,_Jo | _Joh | John | ohn_ | hn_D | n_D.

(11 n-gramas)

4

2x4 / (7+11) = 0,4444

Comparación entre DICECOEFFICIENT( ) e ISFUZZYDUP( ) y LEVDIST( )

Una de las principales diferencias entre la función DICECOEFFICIENT( ) y las funciones ISFUZZYDUP( ) y LEVDIST( ), que utilizan la distancia de Levenshtein, es que DICECOEFFICIENT( ) quita el énfasis o ignora por completo la posición relativa de los caracteres o los bloques de caracteres en las dos cadenas que se están comparando. La posición relativa es significativa en las funciones que utilizan la distancia de Levenshtein.

Valores de comparación con trasposición

Si está comparando cadenas, como domicilios, en los que se pueden trasponer todos los elementos, tal vez sea mejor optar por DICECOEFFICIENT( ). Por ejemplo, el mismo domicilio con el elemento "Suite" traspuesto se identifica como un elemento muy similar con DICECOEFFICIENT( ), pero muy diferente con LEVDIST( ):

Par de domicilios

Coeficiente de Dice

(valor predeterminado de n-grama de 2)

Distancia de Levenshtein

  • 125 SW 39TH ST, Suite 100

  • Suite 100, 125 SW 39TH ST

0,9167

22

(cuanto mayor sea la distancia de Levenshtein, mayor será la diferencia entre dos cadenas)

Valores de comparación con trasposición

Si la trasposición no es un problema, la función LEVDIST( ) puede ofrecer resultados más útiles. Por ejemplo, el mismo nombre corporativo con diferente puntuación se identifica como un elemento muy diferente con DICECOEFFICIENT( ), pero muy similar con LEVDIST( ):

Par de nombres corporativos

Coeficiente de Dice

(valor predeterminado de n-grama de 2)

Distancia de Levenshtein

  • AVS, Inc

  • A.V.S. Inc

0,3750

3
Guía de creación de scripts de ACL 14.1