implementation of JaroWinklerNormalizedName, addition of various stopwords in different languages and configuration test

This commit is contained in:
Michele De Bonis 2018-11-05 17:22:59 +01:00
parent 9f513352fb
commit 4337e83950
18 changed files with 3689 additions and 172 deletions

View File

@ -33,13 +33,13 @@ public class SparkTest {
public static void main(String[] args) {
final JavaSparkContext context = new JavaSparkContext(new SparkConf().setAppName("Deduplication").setMaster("local[*]"));
final URL dataset = SparkTest.class.getResource("/eu/dnetlib/pace/orgs.test.json");
final URL dataset = SparkTest.class.getResource("/eu/dnetlib/pace/orgs.json");
final JavaRDD<String> dataRDD = context.textFile(dataset.getPath());
counter = new SparkCounter(context);
//read the configuration from the classpath
final DedupConfig config = DedupConfig.load(readFromClasspath("/eu/dnetlib/pace/organization.test.pace.conf"));
final DedupConfig config = DedupConfig.load(readFromClasspath("/eu/dnetlib/pace/organization.pace.conf"));
BlockProcessor.constructAccumulator(config);
BlockProcessor.accumulators.forEach(acc -> {

Binary file not shown.

View File

@ -0,0 +1,31 @@
{
"wf" : {
"threshold" : "0.98",
"dedupRun" : "001",
"entityType" : "organization",
"orderField" : "legalname",
"queueMaxSize" : "2000",
"groupMaxSize" : "10",
"slidingWindowSize" : "200",
"rootBuilder" : [ "organization", "projectOrganization_participation_isParticipant", "datasourceOrganization_provision_isProvidedBy" ],
"includeChildren" : "true"
},
"pace" : {
"clustering" : [
{ "name" : "ngrampairs", "fields" : [ "legalname" ], "params" : { "max" : 1, "ngramLen" : "3"} },
{ "name" : "suffixprefix", "fields" : [ "legalname" ], "params" : { "max" : 1, "len" : "3" } },
{ "name" : "urlclustering", "fields" : [ "websiteurl" ], "params" : { } }
],
"conditions" : [
{ "name" : "exactMatch", "fields" : [ "country" ] }
],
"model" : [
{ "name" : "legalname", "algo" : "Null", "type" : "String", "weight" : "0", "ignoreMissing" : "false", "path" : "organization/metadata/legalname/value" },
{ "name" : "country", "algo" : "Null", "type" : "String", "weight" : "0", "ignoreMissing" : "true", "path" : "organization/metadata/country/classid" },
{ "name" : "legalshortname", "algo" : "JaroWinkler", "type" : "String", "weight" : "0.3", "ignoreMissing" : "true", "path" : "organization/metadata/legalshortname/value" },
{ "name" : "legalname", "algo" : "JaroWinklerNormalizedName", "type" : "String", "weight" : "0.7", "ignoreMissing" : "false", "path" : "organization/metadata/legalname/value" },
{ "name" : "websiteurl", "algo" : "Null", "type" : "URL", "weight" : "0.6", "ignoreMissing" : "true", "path" : "organization/metadata/websiteurl/value", "params" : { "host" : 0.5, "path" : 0.5 } }
],
"blacklists" : { }
}
}

View File

@ -2,7 +2,7 @@ package eu.dnetlib.pace;
import com.google.protobuf.GeneratedMessage;
import com.google.protobuf.InvalidProtocolBufferException;
import eu.dnetlib.data.mapreduce.util.OafDecoder;
//import eu.dnetlib.data.mapreduce.util.OafDecoder;
import eu.dnetlib.data.proto.DatasourceOrganizationProtos.DatasourceOrganization;
import eu.dnetlib.data.proto.DatasourceOrganizationProtos.DatasourceOrganization.Provision;
import eu.dnetlib.data.proto.DatasourceProtos.Datasource;
@ -411,36 +411,36 @@ public class OafTest {
return sf.build();
}
public static OafDecoder embed(final GeneratedMessage msg,
final Kind kind,
final boolean deletedByInference,
final boolean inferred,
final String provenance,
final String action) {
final Oaf.Builder oaf = Oaf
.newBuilder()
.setKind(kind)
.setLastupdatetimestamp(System.currentTimeMillis())
.setDataInfo(
DataInfo.newBuilder().setDeletedbyinference(deletedByInference).setInferred(inferred).setTrust("0.5")
.setInferenceprovenance(provenance).setProvenanceaction(getQualifier(action, action)));
switch (kind) {
case entity:
oaf.setEntity((OafEntity) msg);
break;
case relation:
oaf.setRel((OafRel) msg);
break;
default:
break;
}
return OafDecoder.decode(oaf.build());
}
public static OafDecoder embed(final GeneratedMessage msg, final Kind kind) {
return embed(msg, kind, false, false, "inference_provenance", "provenance_action");
}
// public static OafDecoder embed(final GeneratedMessage msg,
// final Kind kind,
// final boolean deletedByInference,
// final boolean inferred,
// final String provenance,
// final String action) {
//
// final Oaf.Builder oaf = Oaf
// .newBuilder()
// .setKind(kind)
// .setLastupdatetimestamp(System.currentTimeMillis())
// .setDataInfo(
// DataInfo.newBuilder().setDeletedbyinference(deletedByInference).setInferred(inferred).setTrust("0.5")
// .setInferenceprovenance(provenance).setProvenanceaction(getQualifier(action, action)));
// switch (kind) {
// case entity:
// oaf.setEntity((OafEntity) msg);
// break;
// case relation:
// oaf.setRel((OafRel) msg);
// break;
// default:
// break;
// }
//
// return OafDecoder.decode(oaf.build());
// }
//
// public static OafDecoder embed(final GeneratedMessage msg, final Kind kind) {
// return embed(msg, kind, false, false, "inference_provenance", "provenance_action");
// }
}

View File

@ -1,42 +1,42 @@
//package eu.dnetlib.pace.clustering;
//
//import eu.dnetlib.pace.AbstractProtoPaceTest;
//import eu.dnetlib.pace.clustering.BlacklistAwareClusteringCombiner;
//import eu.dnetlib.pace.config.Config;
//import eu.dnetlib.pace.config.Type;
//import eu.dnetlib.pace.model.FieldListImpl;
//import eu.dnetlib.pace.model.FieldValueImpl;
//import eu.dnetlib.pace.model.MapDocument;
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import org.junit.Before;
//import org.junit.Test;
//
//public class BlacklistAwareClusteringCombinerTest extends AbstractProtoPaceTest {
//
// private static final Log log = LogFactory.getLog(BlacklistAwareClusteringCombinerTest.class);
//
// private Config config;
//
// @Before
// public void setUp() {
// config = getResultFullConf();
// }
//
// @Test
// public void testCombine() {
// final MapDocument result =
// result(config, "A", "Dipping in Cygnus X-2 in a multi-wavelength campaign due to absorption of extended ADC emission", "2013");
// final FieldListImpl fl = new FieldListImpl();
// fl.add(new FieldValueImpl(Type.String, "desc", "hello world description pipeline"));
//
// result.getFieldMap().put("desc", fl);
//
// fl.clear();
// fl.add(new FieldValueImpl(Type.String, "title", "lorem ipsum cabalie qwerty"));
// final FieldListImpl field = (FieldListImpl) result.getFieldMap().get("title");
// field.add(fl);
//
// log.info(BlacklistAwareClusteringCombiner.filterAndCombine(result, config));
// }
//}
package eu.dnetlib.pace.clustering;
import eu.dnetlib.pace.AbstractProtoPaceTest;
import eu.dnetlib.pace.clustering.BlacklistAwareClusteringCombiner;
import eu.dnetlib.pace.config.Config;
import eu.dnetlib.pace.config.Type;
import eu.dnetlib.pace.model.FieldListImpl;
import eu.dnetlib.pace.model.FieldValueImpl;
import eu.dnetlib.pace.model.MapDocument;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Before;
import org.junit.Test;
public class BlacklistAwareClusteringCombinerTest extends AbstractProtoPaceTest {
private static final Log log = LogFactory.getLog(BlacklistAwareClusteringCombinerTest.class);
private Config config;
@Before
public void setUp() {
config = getResultFullConf();
}
@Test
public void testCombine() {
final MapDocument result =
result(config, "A", "Dipping in Cygnus X-2 in a multi-wavelength campaign due to absorption of extended ADC emission", "2013");
final FieldListImpl fl = new FieldListImpl();
fl.add(new FieldValueImpl(Type.String, "desc", "hello world description pipeline"));
result.getFieldMap().put("desc", fl);
fl.clear();
fl.add(new FieldValueImpl(Type.String, "title", "lorem ipsum cabalie qwerty"));
final FieldListImpl field = (FieldListImpl) result.getFieldMap().get("title");
field.add(fl);
log.info(BlacklistAwareClusteringCombiner.filterAndCombine(result, config));
}
}

View File

@ -1,39 +1,39 @@
//package eu.dnetlib.pace.clustering;
//
//import eu.dnetlib.pace.AbstractProtoPaceTest;
//import eu.dnetlib.pace.clustering.ClusteringCombiner;
//import eu.dnetlib.pace.config.Config;
//import eu.dnetlib.pace.config.Type;
//import eu.dnetlib.pace.model.FieldListImpl;
//import eu.dnetlib.pace.model.FieldValueImpl;
//import eu.dnetlib.pace.model.MapDocument;
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import org.junit.Before;
//import org.junit.Test;
//
//public class ClusteringCombinerTest extends AbstractProtoPaceTest {
//
// private static final Log log = LogFactory.getLog(ClusteringCombinerTest.class);
//
// private Config config;
//
// @Before
// public void setUp() {
// config = getResultFullConf();
// }
//
// @Test
// public void testCombine() {
// String title = "Dipping in Cygnus X-2 in a multi-wavelength campaign due to absorption of extended ADC emission";
// MapDocument result = result(config, "A", title, "2013");
//
// FieldListImpl fl = new FieldListImpl();
// fl.add(new FieldValueImpl(Type.String, "desc", "lorem ipsum cabalie qwerty"));
//
// result.getFieldMap().put("desc", fl);
// log.info(title);
// log.info(ClusteringCombiner.combine(result, config));
// }
//
//}
package eu.dnetlib.pace.clustering;
import eu.dnetlib.pace.AbstractProtoPaceTest;
import eu.dnetlib.pace.clustering.ClusteringCombiner;
import eu.dnetlib.pace.config.Config;
import eu.dnetlib.pace.config.Type;
import eu.dnetlib.pace.model.FieldListImpl;
import eu.dnetlib.pace.model.FieldValueImpl;
import eu.dnetlib.pace.model.MapDocument;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Before;
import org.junit.Test;
public class ClusteringCombinerTest extends AbstractProtoPaceTest {
private static final Log log = LogFactory.getLog(ClusteringCombinerTest.class);
private Config config;
@Before
public void setUp() {
config = getResultFullConf();
}
@Test
public void testCombine() {
String title = "Dipping in Cygnus X-2 in a multi-wavelength campaign due to absorption of extended ADC emission";
MapDocument result = result(config, "A", title, "2013");
FieldListImpl fl = new FieldListImpl();
fl.add(new FieldValueImpl(Type.String, "desc", "lorem ipsum cabalie qwerty"));
result.getFieldMap().put("desc", fl);
log.info(title);
log.info(ClusteringCombiner.combine(result, config));
}
}

View File

@ -1,50 +1,50 @@
//package eu.dnetlib.pace.model;
//
//import com.google.common.collect.Iterables;
//import com.google.common.collect.Sets;
//import com.google.common.collect.Sets.SetView;
//import eu.dnetlib.pace.AbstractProtoPaceTest;
//import eu.dnetlib.pace.config.Config;
//import eu.dnetlib.pace.distance.DetectorTest;
//import eu.dnetlib.pace.model.MapDocument;
//import eu.dnetlib.pace.model.MapDocumentSerializer;
//import eu.dnetlib.pace.model.ProtoDocumentBuilder;
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import org.junit.Test;
//
//import static org.junit.Assert.assertFalse;
//import static org.junit.Assert.assertTrue;
//
//public class ProtoDocumentBuilderTest extends AbstractProtoPaceTest {
//
// private static final Log log = LogFactory.getLog(ProtoDocumentBuilderTest.class);
//
// @Test
// public void test_serialise1() {
//
// final String id = "12345";
//
// final Config config = getResultFullConf();
//
// final MapDocument document = ProtoDocumentBuilder.newInstance(id, getResult(id), config.model());
//
// assertFalse(document.fieldNames().isEmpty());
// assertFalse(Iterables.isEmpty(document.fields()));
//
// log.info("original:\n" + document);
//
// final String stringDoc = MapDocumentSerializer.toString(document);
//
// log.info("srialization:\n" + stringDoc);
//
// final MapDocument decoded = MapDocumentSerializer.decode(stringDoc.getBytes());
//
// final SetView<String> diff = Sets.difference(document.fieldNames(), decoded.fieldNames());
//
// assertTrue(diff.isEmpty());
//
// log.info("decoded:\n" + decoded);
// }
//
//}
package eu.dnetlib.pace.model;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.common.collect.Sets.SetView;
import eu.dnetlib.pace.AbstractProtoPaceTest;
import eu.dnetlib.pace.config.Config;
import eu.dnetlib.pace.distance.DetectorTest;
import eu.dnetlib.pace.model.MapDocument;
import eu.dnetlib.pace.model.MapDocumentSerializer;
import eu.dnetlib.pace.model.ProtoDocumentBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class ProtoDocumentBuilderTest extends AbstractProtoPaceTest {
private static final Log log = LogFactory.getLog(ProtoDocumentBuilderTest.class);
@Test
public void test_serialise1() {
final String id = "12345";
final Config config = getResultFullConf();
final MapDocument document = ProtoDocumentBuilder.newInstance(id, getResult(id), config.model());
assertFalse(document.fieldNames().isEmpty());
assertFalse(Iterables.isEmpty(document.fields()));
log.info("original:\n" + document);
final String stringDoc = MapDocumentSerializer.toString(document);
log.info("serialization:\n" + stringDoc);
final MapDocument decoded = MapDocumentSerializer.decode(stringDoc.getBytes());
final SetView<String> diff = Sets.difference(document.fieldNames(), decoded.fieldNames());
assertTrue(diff.isEmpty());
log.info("decoded:\n" + decoded);
}
}

View File

@ -1,11 +1,13 @@
package eu.dnetlib.pace.common;
import java.text.Normalizer;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.google.common.collect.Maps;
import eu.dnetlib.pace.distance.algo.JaroWinklerNormalizedName;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
@ -18,6 +20,7 @@ import eu.dnetlib.pace.clustering.NGramUtils;
import eu.dnetlib.pace.model.Field;
import eu.dnetlib.pace.model.FieldList;
import eu.dnetlib.pace.model.FieldListImpl;
import org.apache.spark.util.CollectionsUtils;
/**
* Set of common functions
@ -32,8 +35,8 @@ public abstract class AbstractPaceFunctions {
protected static Set<String> ngramBlacklist = loadFromClasspath("/eu/dnetlib/pace/config/ngram_blacklist.txt");
private static final String alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ";
private static final String aliases_from = "⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎";
private static final String aliases_to = "0123456789+-=()n0123456789+-=()";
private static final String aliases_from = "⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎àáâäæãåāèéêëēėęîïíīįìôöòóœøōõûüùúūßśšłžźżçćčñń";
private static final String aliases_to = "0123456789+-=()n0123456789+-=()aaaaaaaaeeeeeeeiiiiiioooooooouuuuussslzzzcccnn";
protected final static FieldList EMPTY_FIELD = new FieldListImpl();
@ -84,7 +87,7 @@ public abstract class AbstractPaceFunctions {
return s.replaceAll("\\D", "");
}
protected String fixAliases(final String s) {
protected static String fixAliases(final String s) {
final StringBuilder sb = new StringBuilder();
for (final char ch : Lists.charactersOf(s)) {
final int i = StringUtils.indexOf(aliases_from, ch);
@ -164,4 +167,66 @@ public abstract class AbstractPaceFunctions {
return h;
}
public static Map<String, String> loadMapFromClasspath(final String classpath) {
final Map<String, String> m = new HashMap<>();
try {
for (final String s: IOUtils.readLines(JaroWinklerNormalizedName.class.getResourceAsStream(classpath))) {
//string is like this: code;word1;word2;word3
String[] line = s.split(";");
String value = line[0];
for (String key: line){
m.put(fixAliases(key),value);
}
}
} catch (final Throwable e){
return new HashMap<>();
}
return m;
}
//translate the string: replace the keywords with the code
public String translate(String s1, Map<String, String> translationMap){
final StringTokenizer st = new StringTokenizer(s1);
final StringBuilder sb = new StringBuilder();
while (st.hasMoreTokens()){
final String token = st.nextToken();
sb.append(" " + translationMap.getOrDefault(token,token) + " ");
}
return sb.toString();
}
public String removeCodes(String s) {
final String regex = " \\d+ ";
return s.replaceAll(regex, "").trim();
}
//check if 2 strings have same keywords
public boolean sameKeywords(String s1, String s2){
//all keywords in common
//return getKeywords(s1).containsAll(getKeywords(s2)) && getKeywords(s2).containsAll(getKeywords(s1));
//at least 1 keyword in common
if (getKeywords(s1).isEmpty() || getKeywords(s2).isEmpty())
return true;
else
return CollectionUtils.intersection(getKeywords(s1),getKeywords(s2)).size()>0;
}
//get the list of keywords in a string
public List<Integer> getKeywords(String s) {
final String regex = " \\d+ ";
Pattern p = Pattern.compile(regex, Pattern.MULTILINE);
Matcher m = p.matcher(s);
List<Integer> codes = new ArrayList<>();
while (m.find()) {
codes.add(Integer.parseInt(m.group(0).replace(" ", "")));
for (int i = 1; i <= m.groupCount(); i++) {
codes.add(Integer.parseInt(m.group(0).replace(" ", "")));
}
}
return codes;
}
}

View File

@ -0,0 +1,77 @@
package eu.dnetlib.pace.distance.algo;
import com.wcohen.ss.AbstractStringDistance;
import eu.dnetlib.pace.common.AbstractPaceFunctions;
import eu.dnetlib.pace.distance.DistanceClass;
import eu.dnetlib.pace.distance.SecondStringDistanceAlgo;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@DistanceClass("JaroWinklerNormalizedName")
public class JaroWinklerNormalizedName extends SecondStringDistanceAlgo {
private static Set<String> stopwordsEn = AbstractPaceFunctions.loadFromClasspath("/eu/dnetlib/pace/config/stopwords_en.txt");
private static Set<String> stopwordsIt = AbstractPaceFunctions.loadFromClasspath("/eu/dnetlib/pace/config/stopwords_it.txt");
private static Set<String> stopwordsDe = AbstractPaceFunctions.loadFromClasspath("/eu/dnetlib/pace/config/stopwords_de.txt");
private static Set<String> stopwordsFr = AbstractPaceFunctions.loadFromClasspath("/eu/dnetlib/pace/config/stopwords_fr.txt");
private static Set<String> stopwordsPt = AbstractPaceFunctions.loadFromClasspath("/eu/dnetlib/pace/config/stopwords_pt.txt");
private static Set<String> stopwordsEs = AbstractPaceFunctions.loadFromClasspath("/eu/dnetlib/pace/config/stopwords_es.txt");
//key=word, value=global identifier => example: "università"->"university", used to substitute the word with the global identifier
private static Map<String,String> translationMap = AbstractPaceFunctions.loadMapFromClasspath("/eu/dnetlib/pace/config/translation_map.csv");
public JaroWinklerNormalizedName(Map<String, Number> params){
super(params, new com.wcohen.ss.JaroWinkler());
}
public JaroWinklerNormalizedName(double weight) {
super(weight, new com.wcohen.ss.JaroWinkler());
}
protected JaroWinklerNormalizedName(double weight, AbstractStringDistance ssalgo) {
super(weight, ssalgo);
}
@Override
public double distance(String a, String b) {
String ca = cleanup(a);
String cb = cleanup(b);
ca = removeStopwords(ca);
cb = removeStopwords(cb);
//replace keywords with codes
ca = translate(ca, translationMap);
cb = translate(cb, translationMap);
if (sameKeywords(ca,cb)) {
return normalize(ssalgo.score(removeCodes(ca), removeCodes(cb)));
}
return 0.0;
}
@Override
public double getWeight() {
return super.weight;
}
@Override
protected double normalize(double d) {
return d;
}
public String removeStopwords(String s) {
String normString = normalize(s);
normString = filterStopWords(normString, stopwordsIt);
normString = filterStopWords(normString, stopwordsEn);
normString = filterStopWords(normString, stopwordsDe);
normString = filterStopWords(normString, stopwordsFr);
normString = filterStopWords(normString, stopwordsPt);
normString = filterStopWords(normString, stopwordsEs);
return normString;
}
}

View File

@ -0,0 +1,621 @@
a
ab
aber
ach
acht
achte
achten
achter
achtes
ag
alle
allein
allem
allen
aller
allerdings
alles
allgemeinen
als
also
am
an
ander
andere
anderem
anderen
anderer
anderes
anderm
andern
anderr
anders
au
auch
auf
aus
ausser
ausserdem
außer
außerdem
b
bald
bei
beide
beiden
beim
beispiel
bekannt
bereits
besonders
besser
besten
bin
bis
bisher
bist
c
d
d.h
da
dabei
dadurch
dafür
dagegen
daher
dahin
dahinter
damals
damit
danach
daneben
dank
dann
daran
darauf
daraus
darf
darfst
darin
darum
darunter
darüber
das
dasein
daselbst
dass
dasselbe
davon
davor
dazu
dazwischen
daß
dein
deine
deinem
deinen
deiner
deines
dem
dementsprechend
demgegenüber
demgemäss
demgemäß
demselben
demzufolge
den
denen
denn
denselben
der
deren
derer
derjenige
derjenigen
dermassen
dermaßen
derselbe
derselben
des
deshalb
desselben
dessen
deswegen
dich
die
diejenige
diejenigen
dies
diese
dieselbe
dieselben
diesem
diesen
dieser
dieses
dir
doch
dort
drei
drin
dritte
dritten
dritter
drittes
du
durch
durchaus
durfte
durften
dürfen
dürft
e
eben
ebenso
ehrlich
ei
ei,
eigen
eigene
eigenen
eigener
eigenes
ein
einander
eine
einem
einen
einer
eines
einig
einige
einigem
einigen
einiger
einiges
einmal
eins
elf
en
ende
endlich
entweder
er
ernst
erst
erste
ersten
erster
erstes
es
etwa
etwas
euch
euer
eure
eurem
euren
eurer
eures
f
folgende
früher
fünf
fünfte
fünften
fünfter
fünftes
für
g
gab
ganz
ganze
ganzen
ganzer
ganzes
gar
gedurft
gegen
gegenüber
gehabt
gehen
geht
gekannt
gekonnt
gemacht
gemocht
gemusst
genug
gerade
gern
gesagt
geschweige
gewesen
gewollt
geworden
gibt
ging
gleich
gott
gross
grosse
grossen
grosser
grosses
groß
große
großen
großer
großes
gut
gute
guter
gutes
h
hab
habe
haben
habt
hast
hat
hatte
hatten
hattest
hattet
heisst
her
heute
hier
hin
hinter
hoch
hätte
hätten
i
ich
ihm
ihn
ihnen
ihr
ihre
ihrem
ihren
ihrer
ihres
im
immer
in
indem
infolgedessen
ins
irgend
ist
j
ja
jahr
jahre
jahren
je
jede
jedem
jeden
jeder
jedermann
jedermanns
jedes
jedoch
jemand
jemandem
jemanden
jene
jenem
jenen
jener
jenes
jetzt
k
kam
kann
kannst
kaum
kein
keine
keinem
keinen
keiner
keines
kleine
kleinen
kleiner
kleines
kommen
kommt
konnte
konnten
kurz
können
könnt
könnte
l
lang
lange
leicht
leide
lieber
los
m
machen
macht
machte
mag
magst
mahn
mal
man
manche
manchem
manchen
mancher
manches
mann
mehr
mein
meine
meinem
meinen
meiner
meines
mensch
menschen
mich
mir
mit
mittel
mochte
mochten
morgen
muss
musst
musste
mussten
muß
mußt
möchte
mögen
möglich
mögt
müssen
müsst
müßt
n
na
nach
nachdem
nahm
natürlich
neben
nein
neue
neuen
neun
neunte
neunten
neunter
neuntes
nicht
nichts
nie
niemand
niemandem
niemanden
noch
nun
nur
o
ob
oben
oder
offen
oft
ohne
ordnung
p
q
r
recht
rechte
rechten
rechter
rechtes
richtig
rund
s
sa
sache
sagt
sagte
sah
satt
schlecht
schluss
schon
sechs
sechste
sechsten
sechster
sechstes
sehr
sei
seid
seien
sein
seine
seinem
seinen
seiner
seines
seit
seitdem
selbst
sich
sie
sieben
siebente
siebenten
siebenter
siebentes
sind
so
solang
solche
solchem
solchen
solcher
solches
soll
sollen
sollst
sollt
sollte
sollten
sondern
sonst
soweit
sowie
später
startseite
statt
steht
suche
t
tag
tage
tagen
tat
teil
tel
tritt
trotzdem
tun
u
uhr
um
und
und?
uns
unse
unsem
unsen
unser
unsere
unserer
unses
unter
v
vergangenen
viel
viele
vielem
vielen
vielleicht
vier
vierte
vierten
vierter
viertes
vom
von
vor
w
wahr?
wann
war
waren
warst
wart
warum
was
weg
wegen
weil
weit
weiter
weitere
weiteren
weiteres
welche
welchem
welchen
welcher
welches
wem
wen
wenig
wenige
weniger
weniges
wenigstens
wenn
wer
werde
werden
werdet
weshalb
wessen
wie
wieder
wieso
will
willst
wir
wird
wirklich
wirst
wissen
wo
woher
wohin
wohl
wollen
wollt
wollte
wollten
worden
wurde
wurden
während
währenddem
währenddessen
wäre
würde
würden
x
y
z
z.b
zehn
zehnte
zehnten
zehnter
zehntes
zeit
zu
zuerst
zugleich
zum
zunächst
zur
zurück
zusammen
zwanzig
zwar
zwei
zweite
zweiten
zweiter
zweites
zwischen
zwölf
über
überhaupt
übrigens

View File

@ -0,0 +1,732 @@
0
1
2
3
4
5
6
7
8
9
_
a
actualmente
acuerdo
adelante
ademas
además
adrede
afirmó
agregó
ahi
ahora
ahí
al
algo
alguna
algunas
alguno
algunos
algún
alli
allí
alrededor
ambos
ampleamos
antano
antaño
ante
anterior
antes
apenas
aproximadamente
aquel
aquella
aquellas
aquello
aquellos
aqui
aquél
aquélla
aquéllas
aquéllos
aquí
arriba
arribaabajo
aseguró
asi
así
atras
aun
aunque
ayer
añadió
aún
b
bajo
bastante
bien
breve
buen
buena
buenas
bueno
buenos
c
cada
casi
cerca
cierta
ciertas
cierto
ciertos
cinco
claro
comentó
como
con
conmigo
conocer
conseguimos
conseguir
considera
consideró
consigo
consigue
consiguen
consigues
contigo
contra
cosas
creo
cual
cuales
cualquier
cuando
cuanta
cuantas
cuanto
cuantos
cuatro
cuenta
cuál
cuáles
cuándo
cuánta
cuántas
cuánto
cuántos
cómo
d
da
dado
dan
dar
de
debajo
debe
deben
debido
decir
dejó
del
delante
demasiado
demás
dentro
deprisa
desde
despacio
despues
después
detras
detrás
dia
dias
dice
dicen
dicho
dieron
diferente
diferentes
dijeron
dijo
dio
donde
dos
durante
día
días
dónde
e
ejemplo
el
ella
ellas
ello
ellos
embargo
empleais
emplean
emplear
empleas
empleo
en
encima
encuentra
enfrente
enseguida
entonces
entre
era
erais
eramos
eran
eras
eres
es
esa
esas
ese
eso
esos
esta
estaba
estabais
estaban
estabas
estad
estada
estadas
estado
estados
estais
estamos
estan
estando
estar
estaremos
estará
estarán
estarás
estaré
estaréis
estaría
estaríais
estaríamos
estarían
estarías
estas
este
estemos
esto
estos
estoy
estuve
estuviera
estuvierais
estuvieran
estuvieras
estuvieron
estuviese
estuvieseis
estuviesen
estuvieses
estuvimos
estuviste
estuvisteis
estuviéramos
estuviésemos
estuvo
está
estábamos
estáis
están
estás
esté
estéis
estén
estés
ex
excepto
existe
existen
explicó
expresó
f
fin
final
fue
fuera
fuerais
fueran
fueras
fueron
fuese
fueseis
fuesen
fueses
fui
fuimos
fuiste
fuisteis
fuéramos
fuésemos
g
general
gran
grandes
gueno
h
ha
haber
habia
habida
habidas
habido
habidos
habiendo
habla
hablan
habremos
habrá
habrán
habrás
habré
habréis
habría
habríais
habríamos
habrían
habrías
habéis
había
habíais
habíamos
habían
habías
hace
haceis
hacemos
hacen
hacer
hacerlo
haces
hacia
haciendo
hago
han
has
hasta
hay
haya
hayamos
hayan
hayas
hayáis
he
hecho
hemos
hicieron
hizo
horas
hoy
hube
hubiera
hubierais
hubieran
hubieras
hubieron
hubiese
hubieseis
hubiesen
hubieses
hubimos
hubiste
hubisteis
hubiéramos
hubiésemos
hubo
i
igual
incluso
indicó
informo
informó
intenta
intentais
intentamos
intentan
intentar
intentas
intento
ir
j
junto
k
l
la
lado
largo
las
le
lejos
les
llegó
lleva
llevar
lo
los
luego
lugar
m
mal
manera
manifestó
mas
mayor
me
mediante
medio
mejor
mencionó
menos
menudo
mi
mia
mias
mientras
mio
mios
mis
misma
mismas
mismo
mismos
modo
momento
mucha
muchas
mucho
muchos
muy
más
mía
mías
mío
míos
n
nada
nadie
ni
ninguna
ningunas
ninguno
ningunos
ningún
no
nos
nosotras
nosotros
nuestra
nuestras
nuestro
nuestros
nueva
nuevas
nuevo
nuevos
nunca
o
ocho
os
otra
otras
otro
otros
p
pais
para
parece
parte
partir
pasada
pasado
paìs
peor
pero
pesar
poca
pocas
poco
pocos
podeis
podemos
poder
podria
podriais
podriamos
podrian
podrias
podrá
podrán
podría
podrían
poner
por
por qué
porque
posible
primer
primera
primero
primeros
principalmente
pronto
propia
propias
propio
propios
proximo
próximo
próximos
pudo
pueda
puede
pueden
puedo
pues
q
qeu
que
quedó
queremos
quien
quienes
quiere
quiza
quizas
quizá
quizás
quién
quiénes
qué
r
raras
realizado
realizar
realizó
repente
respecto
s
sabe
sabeis
sabemos
saben
saber
sabes
sal
salvo
se
sea
seamos
sean
seas
segun
segunda
segundo
según
seis
ser
sera
seremos
será
serán
serás
seré
seréis
sería
seríais
seríamos
serían
serías
seáis
señaló
si
sido
siempre
siendo
siete
sigue
siguiente
sin
sino
sobre
sois
sola
solamente
solas
solo
solos
somos
son
soy
soyos
su
supuesto
sus
suya
suyas
suyo
suyos
sólo
t
tal
tambien
también
tampoco
tan
tanto
tarde
te
temprano
tendremos
tendrá
tendrán
tendrás
tendré
tendréis
tendría
tendríais
tendríamos
tendrían
tendrías
tened
teneis
tenemos
tener
tenga
tengamos
tengan
tengas
tengo
tengáis
tenida
tenidas
tenido
tenidos
teniendo
tenéis
tenía
teníais
teníamos
tenían
tenías
tercera
ti
tiempo
tiene
tienen
tienes
toda
todas
todavia
todavía
todo
todos
total
trabaja
trabajais
trabajamos
trabajan
trabajar
trabajas
trabajo
tras
trata
través
tres
tu
tus
tuve
tuviera
tuvierais
tuvieran
tuvieras
tuvieron
tuviese
tuvieseis
tuviesen
tuvieses
tuvimos
tuviste
tuvisteis
tuviéramos
tuviésemos
tuvo
tuya
tuyas
tuyo
tuyos
u
ultimo
un
una
unas
uno
unos
usa
usais
usamos
usan
usar
usas
uso
usted
ustedes
v
va
vais
valor
vamos
van
varias
varios
vaya
veces
ver
verdad
verdadera
verdadero
vez
vosotras
vosotros
voy
vuestra
vuestras
vuestro
vuestros
w
x
y
ya
yo
z
él
éramos
ésa
ésas
ése
ésos
ésta
éstas
éste
éstos
última
últimas
último
últimos

View File

@ -0,0 +1,689 @@
a
abord
absolument
afin
ah
ai
aie
aient
aies
ailleurs
ainsi
ait
allaient
allo
allons
allô
alors
anterieur
anterieure
anterieures
apres
après
as
assez
attendu
au
aucun
aucune
aucuns
aujourd
aujourd'hui
aupres
auquel
aura
aurai
auraient
aurais
aurait
auras
aurez
auriez
aurions
aurons
auront
aussi
autre
autrefois
autrement
autres
autrui
aux
auxquelles
auxquels
avaient
avais
avait
avant
avec
avez
aviez
avions
avoir
avons
ayant
ayez
ayons
b
bah
bas
basee
bat
beau
beaucoup
bien
bigre
bon
boum
bravo
brrr
c
car
ce
ceci
cela
celle
celle-ci
celle-là
celles
celles-ci
celles-là
celui
celui-ci
celui-là
celà
cent
cependant
certain
certaine
certaines
certains
certes
ces
cet
cette
ceux
ceux-ci
ceux-là
chacun
chacune
chaque
cher
chers
chez
chiche
chut
chère
chères
ci
cinq
cinquantaine
cinquante
cinquantième
cinquième
clac
clic
combien
comme
comment
comparable
comparables
compris
concernant
contre
couic
crac
d
da
dans
de
debout
dedans
dehors
deja
delà
depuis
dernier
derniere
derriere
derrière
des
desormais
desquelles
desquels
dessous
dessus
deux
deuxième
deuxièmement
devant
devers
devra
devrait
different
differentes
differents
différent
différente
différentes
différents
dire
directe
directement
dit
dite
dits
divers
diverse
diverses
dix
dix-huit
dix-neuf
dix-sept
dixième
doit
doivent
donc
dont
dos
douze
douzième
dring
droite
du
duquel
durant
dès
début
désormais
e
effet
egale
egalement
egales
eh
elle
elle-même
elles
elles-mêmes
en
encore
enfin
entre
envers
environ
es
essai
est
et
etant
etc
etre
eu
eue
eues
euh
eurent
eus
eusse
eussent
eusses
eussiez
eussions
eut
eux
eux-mêmes
exactement
excepté
extenso
exterieur
eûmes
eût
eûtes
f
fais
faisaient
faisant
fait
faites
façon
feront
fi
flac
floc
fois
font
force
furent
fus
fusse
fussent
fusses
fussiez
fussions
fut
fûmes
fût
fûtes
g
gens
h
ha
haut
hein
hem
hep
hi
ho
holà
hop
hormis
hors
hou
houp
hue
hui
huit
huitième
hum
hurrah
hélas
i
ici
il
ils
importe
j
je
jusqu
jusque
juste
k
l
la
laisser
laquelle
las
le
lequel
les
lesquelles
lesquels
leur
leurs
longtemps
lors
lorsque
lui
lui-meme
lui-même
lès
m
ma
maint
maintenant
mais
malgre
malgré
maximale
me
meme
memes
merci
mes
mien
mienne
miennes
miens
mille
mince
mine
minimale
moi
moi-meme
moi-même
moindres
moins
mon
mot
moyennant
multiple
multiples
même
mêmes
n
na
naturel
naturelle
naturelles
ne
neanmoins
necessaire
necessairement
neuf
neuvième
ni
nombreuses
nombreux
nommés
non
nos
notamment
notre
nous
nous-mêmes
nouveau
nouveaux
nul
néanmoins
nôtre
nôtres
o
oh
ohé
ollé
olé
on
ont
onze
onzième
ore
ou
ouf
ouias
oust
ouste
outre
ouvert
ouverte
ouverts
o|
p
paf
pan
par
parce
parfois
parle
parlent
parler
parmi
parole
parseme
partant
particulier
particulière
particulièrement
pas
passé
pendant
pense
permet
personne
personnes
peu
peut
peuvent
peux
pff
pfft
pfut
pif
pire
pièce
plein
plouf
plupart
plus
plusieurs
plutôt
possessif
possessifs
possible
possibles
pouah
pour
pourquoi
pourrais
pourrait
pouvait
prealable
precisement
premier
première
premièrement
pres
probable
probante
procedant
proche
près
psitt
pu
puis
puisque
pur
pure
q
qu
quand
quant
quant-à-soi
quanta
quarante
quatorze
quatre
quatre-vingt
quatrième
quatrièmement
que
quel
quelconque
quelle
quelles
quelqu'un
quelque
quelques
quels
qui
quiconque
quinze
quoi
quoique
r
rare
rarement
rares
relative
relativement
remarquable
rend
rendre
restant
reste
restent
restrictif
retour
revoici
revoilà
rien
s
sa
sacrebleu
sait
sans
sapristi
sauf
se
sein
seize
selon
semblable
semblaient
semble
semblent
sent
sept
septième
sera
serai
seraient
serais
serait
seras
serez
seriez
serions
serons
seront
ses
seul
seule
seulement
si
sien
sienne
siennes
siens
sinon
six
sixième
soi
soi-même
soient
sois
soit
soixante
sommes
son
sont
sous
souvent
soyez
soyons
specifique
specifiques
speculatif
stop
strictement
subtiles
suffisant
suffisante
suffit
suis
suit
suivant
suivante
suivantes
suivants
suivre
sujet
superpose
sur
surtout
t
ta
tac
tandis
tant
tardive
te
tel
telle
tellement
telles
tels
tenant
tend
tenir
tente
tes
tic
tien
tienne
tiennes
tiens
toc
toi
toi-même
ton
touchant
toujours
tous
tout
toute
toutefois
toutes
treize
trente
tres
trois
troisième
troisièmement
trop
très
tsoin
tsouin
tu
u
un
une
unes
uniformement
unique
uniques
uns
v
va
vais
valeur
vas
vers
via
vif
vifs
vingt
vivat
vive
vives
vlan
voici
voie
voient
voilà
vont
vos
votre
vous
vous-mêmes
vu
vôtre
vôtres
w
x
y
z
zut
à
â
ça
ès
étaient
étais
était
étant
état
étiez
étions
été
étée
étées
étés
êtes
être
ô

View File

@ -0,0 +1,660 @@
a
abbastanza
abbia
abbiamo
abbiano
abbiate
accidenti
ad
adesso
affinche
agl
agli
ahime
ahimã¨
ahimè
ai
al
alcuna
alcuni
alcuno
all
alla
alle
allo
allora
altre
altri
altrimenti
altro
altrove
altrui
anche
ancora
anni
anno
ansa
anticipo
assai
attesa
attraverso
avanti
avemmo
avendo
avente
aver
avere
averlo
avesse
avessero
avessi
avessimo
aveste
avesti
avete
aveva
avevamo
avevano
avevate
avevi
avevo
avrai
avranno
avrebbe
avrebbero
avrei
avremmo
avremo
avreste
avresti
avrete
avrà
avrò
avuta
avute
avuti
avuto
basta
ben
bene
benissimo
berlusconi
brava
bravo
buono
c
casa
caso
cento
certa
certe
certi
certo
che
chi
chicchessia
chiunque
ci
ciascuna
ciascuno
cima
cinque
cio
cioe
cioã¨
cioè
circa
citta
città
cittã
ciã²
ciò
co
codesta
codesti
codesto
cogli
coi
col
colei
coll
coloro
colui
come
cominci
comprare
comunque
con
concernente
conciliarsi
conclusione
consecutivi
consecutivo
consiglio
contro
cortesia
cos
cosa
cosi
cosã¬
così
cui
d
da
dagl
dagli
dai
dal
dall
dalla
dalle
dallo
dappertutto
davanti
degl
degli
dei
del
dell
della
delle
dello
dentro
detto
deve
devo
di
dice
dietro
dire
dirimpetto
diventa
diventare
diventato
dopo
doppio
dov
dove
dovra
dovrà
dovrã
dovunque
due
dunque
durante
e
ebbe
ebbero
ebbi
ecc
ecco
ed
effettivamente
egli
ella
entrambi
eppure
era
erano
eravamo
eravate
eri
ero
esempio
esse
essendo
esser
essere
essi
ex
fa
faccia
facciamo
facciano
facciate
faccio
facemmo
facendo
facesse
facessero
facessi
facessimo
faceste
facesti
faceva
facevamo
facevano
facevate
facevi
facevo
fai
fanno
farai
faranno
fare
farebbe
farebbero
farei
faremmo
faremo
fareste
faresti
farete
farà
farò
fatto
favore
fece
fecero
feci
fin
finalmente
finche
fine
fino
forse
forza
fosse
fossero
fossi
fossimo
foste
fosti
fra
frattempo
fu
fui
fummo
fuori
furono
futuro
generale
gente
gia
giacche
giorni
giorno
giu
già
giã
gli
gliela
gliele
glieli
glielo
gliene
governo
grande
grazie
gruppo
ha
haha
hai
hanno
ho
i
ie
ieri
il
improvviso
in
inc
indietro
infatti
inoltre
insieme
intanto
intorno
invece
io
l
la
lasciato
lato
lavoro
le
lei
li
lo
lontano
loro
lui
lungo
luogo
ma
macche
magari
maggior
mai
male
malgrado
malissimo
mancanza
marche
me
medesimo
mediante
meglio
meno
mentre
mesi
mezzo
mi
mia
mie
miei
mila
miliardi
milioni
minimi
ministro
mio
modo
molta
molti
moltissimo
molto
momento
mondo
mosto
nazionale
ne
negl
negli
nei
nel
nell
nella
nelle
nello
nemmeno
neppure
nessun
nessuna
nessuno
niente
no
noi
nome
non
nondimeno
nonostante
nonsia
nostra
nostre
nostri
nostro
novanta
nove
nulla
nuovi
nuovo
o
od
oggi
ogni
ognuna
ognuno
oltre
oppure
ora
ore
osi
ossia
ottanta
otto
paese
parecchi
parecchie
parecchio
parte
partendo
peccato
peggio
per
perche
perchã¨
perchè
perché
percio
perciã²
perciò
perfino
pero
persino
persone
perã²
però
piedi
pieno
piglia
piu
piuttosto
piã¹
più
po
pochissimo
poco
poi
poiche
possa
possedere
posteriore
posto
potrebbe
preferibilmente
presa
press
prima
primo
principalmente
probabilmente
promesso
proprio
puo
pure
purtroppo
puã²
può
qua
qualche
qualcosa
qualcuna
qualcuno
quale
quali
qualunque
quando
quanta
quante
quanti
quanto
quantunque
quarto
quasi
quattro
quel
quella
quelle
quelli
quello
quest
questa
queste
questi
questo
qui
quindi
quinto
realmente
recente
recentemente
registrazione
relativo
riecco
rispetto
salvo
sara
sarai
saranno
sarebbe
sarebbero
sarei
saremmo
saremo
sareste
saresti
sarete
sarà
sarã
sarò
scola
scopo
scorso
se
secondo
seguente
seguito
sei
sembra
sembrare
sembrato
sembrava
sembri
sempre
senza
sette
si
sia
siamo
siano
siate
siete
sig
solito
solo
soltanto
sono
sopra
soprattutto
sotto
spesso
srl
sta
stai
stando
stanno
starai
staranno
starebbe
starebbero
starei
staremmo
staremo
stareste
staresti
starete
starà
starò
stata
state
stati
stato
stava
stavamo
stavano
stavate
stavi
stavo
stemmo
stessa
stesse
stessero
stessi
stessimo
stesso
steste
stesti
stette
stettero
stetti
stia
stiamo
stiano
stiate
sto
su
sua
subito
successivamente
successivo
sue
sugl
sugli
sui
sul
sull
sulla
sulle
sullo
suo
suoi
tale
tali
talvolta
tanto
te
tempo
terzo
th
ti
titolo
torino
tra
tranne
tre
trenta
triplo
troppo
trovato
tu
tua
tue
tuo
tuoi
tutta
tuttavia
tutte
tutti
tutto
uguali
ulteriore
ultimo
un
una
uno
uomo
va
vai
vale
vari
varia
varie
vario
verso
vi
via
vicino
visto
vita
voi
volta
volte
vostra
vostre
vostri
vostro
ã¨
è

View File

@ -0,0 +1,560 @@
a
acerca
adeus
agora
ainda
alem
algmas
algo
algumas
alguns
ali
além
ambas
ambos
ano
anos
antes
ao
aonde
aos
apenas
apoio
apontar
apos
após
aquela
aquelas
aquele
aqueles
aqui
aquilo
as
assim
através
atrás
até
baixo
bastante
bem
boa
boas
bom
bons
breve
cada
caminho
catorze
cedo
cento
certamente
certeza
cima
cinco
coisa
com
como
comprido
conhecido
conselho
contra
contudo
corrente
cuja
cujas
cujo
cujos
custa
da
daquela
daquelas
daquele
daqueles
dar
das
de
debaixo
dela
delas
dele
deles
demais
dentro
depois
desde
desligado
dessa
dessas
desse
desses
desta
destas
deste
destes
deve
devem
deverá
dez
dezanove
dezasseis
dezassete
dezoito
dia
diante
direita
dispoe
dispoem
diversa
diversas
diversos
diz
dizem
dizer
do
dois
dos
doze
duas
durante
dão
dúvida
e
ela
elas
ele
eles
em
embora
enquanto
entao
entre
então
era
eram
essa
essas
esse
esses
esta
estado
estamos
estar
estará
estas
estava
estavam
este
esteja
estejam
estejamos
estes
esteve
estive
estivemos
estiver
estivera
estiveram
estiverem
estivermos
estivesse
estivessem
estiveste
estivestes
estivéramos
estivéssemos
estou
está
estás
estávamos
estão
eu
exemplo
falta
fará
favor
faz
fazeis
fazem
fazemos
fazer
fazes
fazia
faço
fez
fim
final
foi
fomos
for
fora
foram
forem
forma
formos
fosse
fossem
foste
fostes
fui
fôramos
fôssemos
geral
grande
grandes
grupo
ha
haja
hajam
hajamos
havemos
havia
hei
hoje
hora
horas
houve
houvemos
houver
houvera
houveram
houverei
houverem
houveremos
houveria
houveriam
houvermos
houverá
houverão
houveríamos
houvesse
houvessem
houvéramos
houvéssemos
hão
iniciar
inicio
ir
irá
isso
ista
iste
isto
lado
lhe
lhes
ligado
local
logo
longe
lugar
maior
maioria
maiorias
mais
mal
mas
me
mediante
meio
menor
menos
meses
mesma
mesmas
mesmo
mesmos
meu
meus
mil
minha
minhas
momento
muito
muitos
máximo
mês
na
nada
nao
naquela
naquelas
naquele
naqueles
nas
nem
nenhuma
nessa
nessas
nesse
nesses
nesta
nestas
neste
nestes
no
noite
nome
nos
nossa
nossas
nosso
nossos
nova
novas
nove
novo
novos
num
numa
numas
nunca
nuns
não
nível
nós
número
o
obra
obrigada
obrigado
oitava
oitavo
oito
onde
ontem
onze
os
ou
outra
outras
outro
outros
para
parece
parte
partir
paucas
pegar
pela
pelas
pelo
pelos
perante
perto
pessoas
pode
podem
poder
poderá
podia
pois
ponto
pontos
por
porque
porquê
portanto
posição
possivelmente
posso
possível
pouca
pouco
poucos
povo
primeira
primeiras
primeiro
primeiros
promeiro
propios
proprio
própria
próprias
próprio
próprios
próxima
próximas
próximo
próximos
puderam
pôde
põe
põem
quais
qual
qualquer
quando
quanto
quarta
quarto
quatro
que
quem
quer
quereis
querem
queremas
queres
quero
questão
quieto
quinta
quinto
quinze
quáis
quê
relação
sabe
sabem
saber
se
segunda
segundo
sei
seis
seja
sejam
sejamos
sem
sempre
sendo
ser
serei
seremos
seria
seriam
será
serão
seríamos
sete
seu
seus
sexta
sexto
sim
sistema
sob
sobre
sois
somente
somos
sou
sua
suas
são
sétima
sétimo
tal
talvez
tambem
também
tanta
tantas
tanto
tarde
te
tem
temos
tempo
tendes
tenha
tenham
tenhamos
tenho
tens
tentar
tentaram
tente
tentei
ter
terceira
terceiro
terei
teremos
teria
teriam
terá
terão
teríamos
teu
teus
teve
tinha
tinham
tipo
tive
tivemos
tiver
tivera
tiveram
tiverem
tivermos
tivesse
tivessem
tiveste
tivestes
tivéramos
tivéssemos
toda
todas
todo
todos
trabalhar
trabalho
treze
três
tu
tua
tuas
tudo
tão
tém
têm
tínhamos
um
uma
umas
uns
usa
usar
vai
vais
valor
veja
vem
vens
ver
verdade
verdadeiro
vez
vezes
viagem
vindo
vinte
você
vocês
vos
vossa
vossas
vosso
vossos
vários
vão
vêm
vós
zero
à
às
área
é
éramos
és
último

View File

@ -0,0 +1,47 @@
1;university;università;universitario;universitaria;université;universitaire;universitaires;universidad;universitade;Universität;Uniwersytet;университет;universiteit;πανεπιστήμιο
2;studies;studi;études;estudios;estudos;Studien;studia;исследования;studies;σπουδές
3;advanced;superiore;supérieur;supérieure;supérieurs;supérieures;avancado;avancados;fortgeschrittene;fortgeschritten;zaawansowany;передовой;gevorderd;gevorderde;προχωρημένος;προχωρημένη;προχωρημένο;προχωρημένες;προχωρημένα
4;institute;istituto;institut;instituto;instituto;Institut;instytut;институт;instituut;ινστιτούτο
5;hospital;ospedale;hôpital;hospital;hospital;Krankenhaus;szpital;больница;ziekenhuis;νοσοκομείο
6;research;ricerca;recherche;investigacion;pesquisa;Forschung;badania;исследования;onderzoek;έρευνα
7;college;collegio;université;colegio;faculdade;Hochschule;Szkoła Wyższa;Высшая школа;universiteit;κολλέγιο
8;foundation;fondazione;fondation;fundación;fundação;Stiftung;Fundacja;фонд;stichting;ίδρυμα
9;center;centro;centre;centro;centro;zentrum;centrum;центр;centrum;κέντρο
10;national;nazionale;national;nationale;nationaux;nationales;nacional;nacional;national;krajowy;национальный;nationaal;nationale;εθνικό
11;association;associazione;association;asociación;associação;Verein;verband;stowarzyszenie;ассоциация;associatie
12;society;societa;société;sociedad;sociedade;gesellschaft;społeczeństwo;общество;maatschappij;κοινωνία
13;international;internazionale;international;internacional;internacional;international;międzynarodowy;Международный;internationaal;internationale;διεθνής;διεθνή;διεθνές
14;community;comunita;communauté;comunidad;comunidade;Gemeinschaft;społeczność;сообщество;gemeenschap;κοινότητα
15;school;scuola;école;escuela;escola;schule;Szkoła;школа;school;σχολείο
16;education;educazione;éducation;educacion;Educação;Bildung;Edukacja;образование;opleiding;εκπαίδευση
17;academy;accademia;académie;academia;academia;Akademie;akademie;академия;academie;ακαδημία
18;public;pubblico;public;publique;publics;publiques;publico;publico;Öffentlichkeit;publiczny;публичный;publiek;publieke;δημόσιος;δημόσια;δημόσιο
19;museum;museo;musée;mueso;museu;museum;muzeum;музей;museum;μουσείο
20;group;gruppo;groupe;grupo;grupo;gruppe;grupa;группа;groep;ομάδα;όμιλος
21;department;dipartimento;département;departamento;departamento;abteilung;departament;отдел;afdeling;τμήμα
22;council;consiglio;conseil;Consejo;conselho;gesellschaft;rada;совет;raad;συμβούλιο
23;library;biblioteca;bibliothèque;biblioteca;biblioteca;Bibliothek;biblioteka;библиотека;bibliotheek;βιβλιοθήκη
24;ministry;ministero;ministère;ministerio;ministério;Ministerium;ministerstwo;министерство;ministerie;υπουργείο
25;services;servizi;services;servicios;Serviços;Dienstleistungen;usługi;услуги;diensten;υπηρεσίες
26;central;centrale;central;centrale;centrales;central;central;zentral;centralny;цетральный;centraal;κεντρικός;κεντρική;κεντρικό;κεντρικά
27;general;generale;général;générale;généraux;générales;general;geral;general;Allgemeines;general;общий;algemeen;algemene;γενικός;γενική;γενικό;γενικά
28;applied;applicati;appliqué;appliquée;appliqués;appliquées;aplicado;aplicada;angewendet;stosowany;прикладной;toegepast;toegepaste;εφαρμοσμένος;εφαρμοσμένη;εφαρμοσμένο;εφαρμοσμένα
29;european;europee;europea;européen;européenne;européens;européennes;europeo;europeu;europäisch;europejski;европейский;Europees;Europese;ευρωπαϊκός;ευρωπαϊκή;ευρωπαϊκό;ευρωπαϊκά
30;agency;agenzia;agence;agencia;agencia;agentur;agencja;агенция;agentschap;πρακτορείο
31;laboratory;laboratorio;laboratoire;laboratorio;laboratorio;labor;laboratorium;лаборатория;laboratorium;εργαστήριο
32;industry;industria;industrie;индустрия;industrie;βιομηχανία
33;industrial;industriale;industriel;industrielle;industriels;industrielles;индустриальный;industrieel;βιομηχανικός;βιομηχανική;βιομηχανικό;βιομηχανικά;βιομηχανικές
34;consortium;consorzio;consortium;консорциум;consortium;κοινοπραξία
35;organization;organizzazione;organisation;organización;organização;organizacja;организация;organisatie;οργανισμός
36;authority;autorità;autorité;авторитет;autoriteit
37;federation;federazione;fédération;федерация;federatie;ομοσπονδία
38;observatory;osservatorio;observatoire;обсерватория;observatorium;αστεροσκοπείο
39;bureau;ufficio;bureau;офис;bureau;γραφείο
40;company;impresa;compagnie;société;компания;bedrijf;εταιρία
41;polytechnic;politecnico;polytechnique;политехника;polytechnisch;πολυτεχνείο
42;coalition;coalizione;coalition;коалиция;coalitie;συνασπισμός
43;initiative;iniziativa;initiative;инициатива;initiatief;πρωτοβουλία
44;academic;accademico;académique;universitaire;акадеческий academisch;ακαδημαϊκός;ακαδημαϊκή;ακαδημαϊκό;ακαδημαϊκές;ακαδημαϊκοί
45;institution;istituzione;institution;институциональный;instelling;ινστιτούτο
46;division;divisione;division;отделение;divisie;τμήμα
47;committee;comitato;comité;комитет;commissie;επιτροπή
1 1;university;università;universitario;universitaria;université;universitaire;universitaires;universidad;universitade;Universität;Uniwersytet;университет;universiteit;πανεπιστήμιο
2 2;studies;studi;études;estudios;estudos;Studien;studia;исследования;studies;σπουδές
3 3;advanced;superiore;supérieur;supérieure;supérieurs;supérieures;avancado;avancados;fortgeschrittene;fortgeschritten;zaawansowany;передовой;gevorderd;gevorderde;προχωρημένος;προχωρημένη;προχωρημένο;προχωρημένες;προχωρημένα
4 4;institute;istituto;institut;instituto;instituto;Institut;instytut;институт;instituut;ινστιτούτο
5 5;hospital;ospedale;hôpital;hospital;hospital;Krankenhaus;szpital;больница;ziekenhuis;νοσοκομείο
6 6;research;ricerca;recherche;investigacion;pesquisa;Forschung;badania;исследования;onderzoek;έρευνα
7 7;college;collegio;université;colegio;faculdade;Hochschule;Szkoła Wyższa;Высшая школа;universiteit;κολλέγιο
8 8;foundation;fondazione;fondation;fundación;fundação;Stiftung;Fundacja;фонд;stichting;ίδρυμα
9 9;center;centro;centre;centro;centro;zentrum;centrum;центр;centrum;κέντρο
10 10;national;nazionale;national;nationale;nationaux;nationales;nacional;nacional;national;krajowy;национальный;nationaal;nationale;εθνικό
11 11;association;associazione;association;asociación;associação;Verein;verband;stowarzyszenie;ассоциация;associatie
12 12;society;societa;société;sociedad;sociedade;gesellschaft;społeczeństwo;общество;maatschappij;κοινωνία
13 13;international;internazionale;international;internacional;internacional;international;międzynarodowy;Международный;internationaal;internationale;διεθνής;διεθνή;διεθνές
14 14;community;comunita;communauté;comunidad;comunidade;Gemeinschaft;społeczność;сообщество;gemeenschap;κοινότητα
15 15;school;scuola;école;escuela;escola;schule;Szkoła;школа;school;σχολείο
16 16;education;educazione;éducation;educacion;Educação;Bildung;Edukacja;образование;opleiding;εκπαίδευση
17 17;academy;accademia;académie;academia;academia;Akademie;akademie;академия;academie;ακαδημία
18 18;public;pubblico;public;publique;publics;publiques;publico;publico;Öffentlichkeit;publiczny;публичный;publiek;publieke;δημόσιος;δημόσια;δημόσιο
19 19;museum;museo;musée;mueso;museu;museum;muzeum;музей;museum;μουσείο
20 20;group;gruppo;groupe;grupo;grupo;gruppe;grupa;группа;groep;ομάδα;όμιλος
21 21;department;dipartimento;département;departamento;departamento;abteilung;departament;отдел;afdeling;τμήμα
22 22;council;consiglio;conseil;Consejo;conselho;gesellschaft;rada;совет;raad;συμβούλιο
23 23;library;biblioteca;bibliothèque;biblioteca;biblioteca;Bibliothek;biblioteka;библиотека;bibliotheek;βιβλιοθήκη
24 24;ministry;ministero;ministère;ministerio;ministério;Ministerium;ministerstwo;министерство;ministerie;υπουργείο
25 25;services;servizi;services;servicios;Serviços;Dienstleistungen;usługi;услуги;diensten;υπηρεσίες
26 26;central;centrale;central;centrale;centrales;central;central;zentral;centralny;цетральный;centraal;κεντρικός;κεντρική;κεντρικό;κεντρικά
27 27;general;generale;général;générale;généraux;générales;general;geral;general;Allgemeines;general;общий;algemeen;algemene;γενικός;γενική;γενικό;γενικά
28 28;applied;applicati;appliqué;appliquée;appliqués;appliquées;aplicado;aplicada;angewendet;stosowany;прикладной;toegepast;toegepaste;εφαρμοσμένος;εφαρμοσμένη;εφαρμοσμένο;εφαρμοσμένα
29 29;european;europee;europea;européen;européenne;européens;européennes;europeo;europeu;europäisch;europejski;европейский;Europees;Europese;ευρωπαϊκός;ευρωπαϊκή;ευρωπαϊκό;ευρωπαϊκά
30 30;agency;agenzia;agence;agencia;agencia;agentur;agencja;агенция;agentschap;πρακτορείο
31 31;laboratory;laboratorio;laboratoire;laboratorio;laboratorio;labor;laboratorium;лаборатория;laboratorium;εργαστήριο
32 32;industry;industria;industrie;индустрия;industrie;βιομηχανία
33 33;industrial;industriale;industriel;industrielle;industriels;industrielles;индустриальный;industrieel;βιομηχανικός;βιομηχανική;βιομηχανικό;βιομηχανικά;βιομηχανικές
34 34;consortium;consorzio;consortium;консорциум;consortium;κοινοπραξία
35 35;organization;organizzazione;organisation;organización;organização;organizacja;организация;organisatie;οργανισμός
36 36;authority;autorità;autorité;авторитет;autoriteit
37 37;federation;federazione;fédération;федерация;federatie;ομοσπονδία
38 38;observatory;osservatorio;observatoire;обсерватория;observatorium;αστεροσκοπείο
39 39;bureau;ufficio;bureau;офис;bureau;γραφείο
40 40;company;impresa;compagnie;société;компания;bedrijf;εταιρία
41 41;polytechnic;politecnico;polytechnique;политехника;polytechnisch;πολυτεχνείο
42 42;coalition;coalizione;coalition;коалиция;coalitie;συνασπισμός
43 43;initiative;iniziativa;initiative;инициатива;initiatief;πρωτοβουλία
44 44;academic;accademico;académique;universitaire;акадеческий academisch;ακαδημαϊκός;ακαδημαϊκή;ακαδημαϊκό;ακαδημαϊκές;ακαδημαϊκοί
45 45;institution;istituzione;institution;институциональный;instelling;ινστιτούτο
46 46;division;divisione;division;отделение;divisie;τμήμα
47 47;committee;comitato;comité;комитет;commissie;επιτροπή

View File

@ -3,11 +3,13 @@ package eu.dnetlib.pace;
import java.io.IOException;
import java.io.StringWriter;
import com.sun.webkit.network.URLs;
import org.apache.commons.io.IOUtils;
import eu.dnetlib.pace.config.Type;
import eu.dnetlib.pace.model.Field;
import eu.dnetlib.pace.model.FieldValueImpl;
import org.junit.Test;
public abstract class AbstractPaceTest {
@ -29,4 +31,8 @@ public abstract class AbstractPaceTest {
return new FieldValueImpl(Type.JSON, "person", s);
}
protected Field url(final String s) {
return new FieldValueImpl(Type.URL, "url", s);
}
}

View File

@ -5,6 +5,8 @@ import java.util.Map;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import eu.dnetlib.pace.AbstractPaceTest;
import eu.dnetlib.pace.common.AbstractPaceFunctions;
import eu.dnetlib.pace.model.Field;
import org.junit.Before;
import org.junit.Test;
@ -17,6 +19,16 @@ public class ClusteringFunctionTest extends AbstractPaceTest {
params = Maps.newHashMap();
}
@Test
public void testUrlClustering() {
final ClusteringFunction urlClustering = new UrlClustering(params);
final String s = "http://www.test.it/path/to/resource";
System.out.println(s);
System.out.println(urlClustering.apply(Lists.newArrayList(url(s))));
}
@Test
public void testNgram() {
params.put("ngramLen", 3);

View File

@ -1,18 +1,27 @@
package eu.dnetlib.pace.distance;
import eu.dnetlib.pace.distance.algo.JaroWinklerNormalizedName;
import org.apache.commons.lang.StringUtils;
import org.junit.Before;
import org.junit.Test;
import eu.dnetlib.pace.common.AbstractPaceFunctions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DistanceAlgoTest extends AbstractPaceFunctions {
private final static String TEST_STRING = "Toshiba NB550D: è un netbook su piattaforma AMD Fusion⁽¹²⁾.";
private Map<String, Number> params;
@Before
public void setup() {
System.out.println("****************************************************************");
System.out.println("Test String : " + TEST_STRING);
params = new HashMap<>();
params.put("weight", 1.0);
}
@Test
@ -35,4 +44,12 @@ public class DistanceAlgoTest extends AbstractPaceFunctions {
System.out.println("cleaned up : " + cleanup(TEST_STRING));
}
@Test
public void testJaroWinklerNormalizedName() {
final JaroWinklerNormalizedName jaroWinklerNormalizedName = new JaroWinklerNormalizedName(params);
double result = jaroWinklerNormalizedName.distance("universita degli studi di genova", "universita di genova");
System.out.println(result);
}
}