public List <RecognitionResulType> Match(string city, string street, string pna) { city = WordRecognizerType.RemoveAllSpecialCharacters(city, true, true, true, false); street = WordRecognizerType.RemoveAllSpecialCharacters(street, true, true, true, false); pna = pna.Replace("-", "").Replace(" ", ""); city = city.ToLower(); street = street.ToLower(); pna = pna.ToLower(); if (string.IsNullOrEmpty(city)) { NoMatched.Add(city + "_" + street + "_" + pna); return(new List <RecognitionResulType>()); } if (string.IsNullOrEmpty(pna)) { new List <RecognitionResulType>(); } street = street.Replace("ul.", ""); street = street.ToLower().Replace("ul.", " ").Replace("Ul.", ""); if (street.ToLower().StartsWith("ul ")) { street = street.Substring(3, street.Length - 3); } street = street.Replace("pl.", ""); street = street.ToLower().Replace("pl.", " ").Replace("Pl.", ""); if (street.ToLower().StartsWith("pl ")) { street = street.Substring(3, street.Length - 3); } List <RecognitionResulType> Results = new List <RecognitionResulType>(); if (UseMatchAlias == true) { Results = MatchAlias(city + street); } if (Results.Count == 0) { if (UseMatchEquals == true) { Results = MatchEquals(city, street, pna).ToList(); } } if (Results.Count == 0) { if (UseMatchFrases == true) { Results = MatchFrases(city, street, pna).ToList(); } } if (Results.Count == 0) { if (UseContainsFrases == true) { Results = ContainsFrases(city, street, pna).ToList(); } } if (Results.Count == 0) { if (UseMatchFrasesPNA == true) { Results = MatchFrasesPNA(city, street, pna).ToList(); } } if (Results.Count > 1) { List <string> DistResults = new List <string>(); var dist = (from o in Results select o.ResultDict.City + o.ResultDict.Street).Distinct().ToList(); var ndResults = Results; if (UseMatchFrasesPNA == true) { Results = MatchFrasesPNA(city, street, pna).ToList(); } if (Results.Count == 0) { if (dist.Count > 1) { RecognitionResulType.ResulDecisionType nd = new RecognitionResulType.ResulDecisionType(); nd.input = city + "_" + street + "_" + pna; nd.Results = ndResults; NeedDecision.Add(nd); } NoMatched.Add(city + "_" + street + "_" + pna); return(new List <RecognitionResulType>()); } } if (Results.Count == 0) { NoMatched.Add(city + "_" + street + "_" + pna); } return(DistResults(Results)); }
static void Main(string[] args) { WordRecognizerType Recognizer = new WordRecognizerType(); Recognizer.Load("wrdDict.csv", "wrdaliases.csv"); //Recognizer.UseMatchFrasesPNA = false; //Recognizer.UseMatchFrases = false; //Recognizer.UseContainsFrases = false; Console.Clear(); Recognizer.NoMatched.Clear(); Recognizer.NeedDecision.Clear(); int Nomatch = 0; List <string> Examples = File.ReadAllLines("example.txt").ToList(); foreach (var frase in Examples) { string city = WordRecognizerType.RemoveAllSpecialCharacters(frase.Split(';')[0], true, true, true, false); string street = WordRecognizerType.RemoveAllSpecialCharacters(frase.Split(';')[1], true, true, true, false); string pna = frase.Split(';')[2]; bool ok = false; foreach (var r in Recognizer.Match(city, street, pna)) { Console.WriteLine(r.Input + "^" + r.Method + "^" + r.ResultDict.City + "^" + r.ResultDict.Street + "^" + r.ResultDict.PNA + "^" + r.MatchPercentage + "%"); ok = true; } if (ok == false) { Console.WriteLine(frase); Nomatch += 1; } } double nom = Nomatch; double all = Examples.Count; double per = double.Parse("100") - ((nom / all) * 100); Console.WriteLine("All:" + Examples.Count + " NoMatch:" + Nomatch + " Percentage:" + per + "%"); //aliasy foreach (var n in Recognizer.NoMatched.Distinct()) { string nn = n.Replace("_", " "); string acity; string astreet; string apna; Console.WriteLine("Miejscowosc dla:" + nn); acity = Console.ReadLine(); Console.WriteLine("Ulica dla:" + nn); astreet = Console.ReadLine(); Console.WriteLine("PNA dla:" + nn); apna = Console.ReadLine(); AliasType o = new AliasType(); o.Alias = nn; o.City = acity; o.Street = astreet; o.PNA = apna; Recognizer.Aliasses.Add(o); List <string> nl = new List <string>(); nl.Add(o.Alias + ";" + o.City + ";" + o.Street + ";" + o.PNA); File.AppendAllLines("wrdaliases.csv", nl.ToArray()); } }