public List<Tuple<string, double, NamedEntityType>> GetMatches(string word, int take)
{
var l = Locations.Select(x =>
{
var sim = CompareStrings(word, RemoveDiacritics(x));
return new Tuple<string, double, NamedEntityType>(string.Format("'{0}' is location (sim: {1:0.0%})", x, sim), sim, NamedEntityType.Location);
})
.OrderByDescending(t => t.Item2).Take(take).ToList();
var p = Persons.Select(x =>
{
var sim = CompareStrings(word, RemoveDiacritics(x));
return new Tuple<string, double, NamedEntityType>(string.Format("'{0}' is person (sim: {1:0.0%})", x, sim), sim, NamedEntityType.Person);
})
.OrderByDescending(t => t.Item2).Take(take).ToList();
var o = Organizations.Select(x =>
{
var sim = CompareStrings(word, RemoveDiacritics(x));
return new Tuple<string, double, NamedEntityType>(string.Format("'{0}' is organization (sim: {1:0.0%})", x, sim), sim, NamedEntityType.Organization);
})
.OrderByDescending(t => t.Item2).Take(take).ToList();
l.AddRange(p);
l.AddRange(o);
return l.OrderByDescending(x => x.Item2).ToList();
}