Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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());
            }
        }