java algorithm duplicates fuzzy-logic duke

java - Motor de deduplicación de Duke: el mismo registro exacto no coincide



algorithm duplicates (1)

Está realizando una vinculación de registros (dos conjuntos de datos) y no una deduplicación (conjunto único de datos), por lo tanto, elimine la llamada .deduplicate ().

Además, no use el nombre del paquete ''no.priv.garshol.duke''. Nunca debe usar nombres de dominio que no sea suyo.

De todos modos, la razón por la que no puede encontrar coincidencias es porque los dos registros tienen la misma identificación. Duke verifica que no está informando que los registros coinciden, por lo que la coincidencia se filtra. Si haces una copia del archivo csv y lo usas para el grupo 2, entonces haz un cambio en el ID y luego Duke encuentra el duplicado.

Esto es lo que sucede cuando intento eso:

[lars.garshol@laptop tmp]$ java -cp ~/cvs-co/duke/duke-core/target/duke-core-1.3-SNAPSHOT.jar:. no.priv.garshol.duke.Duke --showmatches presonalCare.xml MATCH 0.9982630751840313 ID: ''SHDRNFKAQ4AFYE8'', Model: ''littmann 3m classic ii s.e acoustic stethoscope'', Price: ''6297'', CompanyName: ''littmann'', Url: ''http://dl.flipkart.com/dl/littmann-3m-classic-ii-s-e-acoustic-stethoscope/p/itme3uhzbqxhzfda?pid=sthdrnfkaqfafye8&affid=3ba0de4902524e2b90e43b84b89ea0ef'', ID: ''STHDRNFKAQ4AFYE8'', Model: ''littmann 3m classic ii s.e acoustic stethoscope'', Price: ''6297'', CompanyName: ''littmann'', Url: ''http://dl.flipkart.com/dl/littmann-3m-classic-ii-s-e-acoustic-stethoscope/p/itme3uhzbqxhzfda?pid=sthdrnfkaqfafye8&affid=3ba0de4902524e2b90e43b84b89ea0ef'',

Estoy intentando usar Duke para unir registros de una csv a otra. Primero csv y segundo ambas tienen ID,Model,Price,CompanyName,Review,Url columnas de ID,Model,Price,CompanyName,Review,Url . Estoy tratando de hacer coincidir con otra csv para encontrar registros duplicados.

package no.priv.garshol.duke; import no.priv.garshol.duke.matchers.PrintMatchListener; public class RunDuke { public static void main(String[] argv) throws Exception { Configuration config = ConfigLoader .load("/home/kishore/Duke-master/doc/example-data/presonalCare.xml"); Processor proc = new Processor(config); proc.addMatchListener(new PrintMatchListener(true, true, true, false, config.getProperties(), true)); proc.link(); proc.close(); } }

Aquí hay un ejemplo de personalCare.xml :

<!-- language: xml --> <!-- For more information, see https://github.com/larsga/Duke/wiki/ Improvements needed: - some area numbers have spaces in them - not stripping accents from names --> <duke> <schema> <threshold>0.7</threshold> <property type="id"> <name>ID</name> </property> <property> <name>Model</name> <comparator>no.priv.garshol.duke.comparators.Levenshtein</comparator> <low>0.4</low> <high>0.8</high> </property> <property> <name>Price</name> <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator> <low>0.04</low> <high>0.73</high> </property> <property> <name>CompanyName</name> <comparator>no.priv.garshol.duke.comparators.Levenshtein</comparator> <low>0.4</low> <high>0.8</high> </property> <property> <name>Review</name> <comparator>no.priv.garshol.duke.comparators.Levenshtein</comparator> <low>0.12</low> <high>0.93</high> </property> <property> <name>Url</name> <comparator>no.priv.garshol.duke.comparators.Levenshtein</comparator> <low>0.12</low> <high>0.93</high> </property> </schema> <database class="no.priv.garshol.duke.databases.InMemoryDatabase"> </database> <group> <csv> <param name="input-file" value="personal_care_11.csv" /> <param name="header-line" value="false" /> <column name="1" property="ID" /> <column name="2" property="Model" cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/> <column name="3" property="Price" /> <column name="4" property="CompanyName" cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/> <column name="5" property="Review" cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/> <column name="6" property="Url" cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/> </csv> </group> <group> <csv> <param name="input-file" value="personal_care_11.csv" /> <param name="header-line" value="false" /> <column name="1" property="ID" /> <column name="2" property="Model" cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/> <column name="3" property="Price" /> <column name="4" property="CompanyName" cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/> <column name="5" property="Review" cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/> <column name="6" property="Url" cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/> </csv> </group> </duke>

El código anterior está funcionando bien, pero no coincide con el ejemplo de registro exacto

STHDRNFKAQ4AFYE8,Littmann 3M Classic II S.E Acoustic Stethoscope,6297,Littmann,,http://dl.flipkart.com/dl/littmann-3m-classic-ii-s-e-acoustic-stethoscope/p/itme3uhzbqxhzfda?pid=STHDRNFKAQFAFYE8&affid=3ba0de4902524e2b90e43b84b89ea0ef

que está en ambos archivos csv. También quiero saber el trabajo de valor de propiedad alto y bajo que se proporciona en el archivo .xml , cómo decidir el valor bajo y alto para el valor de columna.