Example #1
0
        public void evaluateCombination()
        {
            List<SuggesterConfig> MaxPrecisionConfigurations = new List<SuggesterConfig>();
            List<SuggesterConfig> MaxRecallConfigurations = new List<SuggesterConfig>();
            List<SuggesterConfig> MaxFMeasureConfigurations = new List<SuggesterConfig>();
            double maxPrecision = 0;
            double maxRecall = 0;
            double maxFMeasure = 0;

            if (sourceASTL != null && targetASTL != null)
            {
                this.sourceASTL.prepare();
                this.targetASTL.prepare();

                SuggesterConfig config = new SuggesterConfig();

                //use different combintions
                for (int i = 0; i < 2; i++)
                {
                    config.UseIsoRankSimSuggester = !config.UseIsoRankSimSuggester;
                    for (int j = 0; j < 2; j++)
                    {
                        config.UseNameSimSuggester = !config.UseNameSimSuggester;
                        for (int k = 0; k < 2; k++)
                        {
                            config.UseStructSimSuggester = !config.UseStructSimSuggester;
                            for (int l = 0; l < 2; l++)
                            {
                                config.UseTypeSimSuggester = !config.UseTypeSimSuggester;
                                for (int m = 0; m < 2; m++)
                                {
                                    config.UseValueSimSuggester = !config.UseValueSimSuggester;
                                    for (int p = 0; p < 2; p++)
                                    {
                                        config.UseNeighborSimSuggester = !config.UseNeighborSimSuggester;

                                        //create suggester and test it
                                        mapperSuggester = new Suggester(sourceASTL, targetASTL, config);
                                        mapperSuggester.imFeelingLucky();
                                        //apperSuggester.getRankedSuggestions(2);

                                        SuggesterEvaluator eval = new SuggesterEvaluator(mapperSuggester);

                                        //get max precision
                                        if (eval.Precision > maxPrecision)
                                        {
                                            MaxPrecisionConfigurations.Clear();
                                            MaxPrecisionConfigurations.Add(config.Clone());
                                            maxPrecision = eval.Precision;
                                        }
                                        else if (eval.Precision == maxPrecision)
                                            MaxPrecisionConfigurations.Add(config.Clone());

                                        //get best recalls
                                        if (eval.Recall > maxRecall)
                                        {
                                            MaxRecallConfigurations.Clear();
                                            MaxRecallConfigurations.Add(config.Clone());
                                            maxRecall = eval.Recall;
                                        }
                                        else if (eval.Recall == maxRecall)
                                            MaxRecallConfigurations.Add(config.Clone());

                                        //get best FMeasures
                                        if (eval.FMeasure > maxFMeasure)
                                        {
                                            MaxFMeasureConfigurations.Clear();
                                            MaxFMeasureConfigurations.Add(config.Clone());
                                            maxFMeasure = eval.FMeasure;
                                        }
                                        else if (eval.FMeasure == maxFMeasure)
                                            MaxFMeasureConfigurations.Add(config.Clone());

                                        //SuggesterEvaluator eval = new SuggesterEvaluator(mapperSuggester);//evaluation is included in imFeelingLucky
                                    }
                                }
                            }
                        }
                    }
                }

                StreamWriter writer = new StreamWriter("Eval.csv");

                //write best precisions
                writer.WriteLine("Max precision of: " + maxPrecision + " Achieved by:");
                writer.WriteLine("");
                string header = "ISO, Name, Struct, Type, Value, Neighbors, Precision, Recall, FMeasure";
                writer.WriteLine(header);
                writer.WriteLine("");

                foreach (SuggesterConfig sc in MaxPrecisionConfigurations)
                {
                    string rl = (sc.UseIsoRankSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseNameSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseStructSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseTypeSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseValueSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseNeighborSimSuggester ? "1" : "0");

                    writer.WriteLine(rl);
                }
                writer.WriteLine("");
                writer.WriteLine("");

                //write best recalls
                writer.WriteLine("Max Recall of: " + maxRecall + " Achieved by:");
                writer.WriteLine("");
                writer.WriteLine(header);
                writer.WriteLine("");

                foreach (SuggesterConfig sc in MaxRecallConfigurations)
                {
                    string rl = (sc.UseIsoRankSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseNameSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseStructSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseTypeSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseValueSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseNeighborSimSuggester ? "1" : "0");

                    writer.WriteLine(rl);
                }
                writer.WriteLine("");
                writer.WriteLine("");

                //write best FMeasures
                writer.WriteLine("Max FMeasure of: " + maxFMeasure + " Achieved by:");
                writer.WriteLine("");
                writer.WriteLine(header);
                writer.WriteLine("");

                foreach (SuggesterConfig sc in MaxFMeasureConfigurations)
                {
                    string rl = (sc.UseIsoRankSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseNameSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseStructSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseTypeSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseValueSimSuggester ? "1" : "0") + ", ";
                    rl += (sc.UseNeighborSimSuggester ? "1" : "0");

                    writer.WriteLine(rl);
                }

                writer.Flush();
                writer.Close();

                ReportStatusBar.ShowStatus("Suggestor valuation complete!", ReportIcon.Info);
            }
        }
Example #2
0
        private void Test_Click(object sender, RoutedEventArgs e)
        {
            //AbstractLattice sabs = new AbstractLattice(@"C:\Users\iavazpour\Desktop\CitationsEndNote.xml");
            //AbstractLattice tabs = new AbstractLattice(@"C:\Users\iavazpour\Desktop\FromJobRefDocBook.xml");

            AbstractLattice tabs = new AbstractLattice("real_estate_nky.xml");
            //AbstractLattice sabs = new AbstractLattice("real_estate_texas.xml");
            //AbstractLattice tabs = new AbstractLattice("real_estate_yahoo.xml");
            //AbstractLattice tabs = new AbstractLattice("real_estate_homeseeker.xml");
            AbstractLattice sabs = new AbstractLattice("real_estate_windermere.xml");

            Suggester testSugg;

            SuggesterConfig scP = new SuggesterConfig();
            SuggesterConfig scR = new SuggesterConfig();

            double prec = 0;
            double reca = 1;

            SuggesterConfig sct = new SuggesterConfig();
            sct.UseIsoRankSimSuggester = true;
            sct.UseNameSimSuggester = true;
            sct.UseNeighborSimSuggester = true;
            sct.UseStructSimSuggester = true;
            sct.UseTypeSimSuggester = true;
            sct.UseValueSimSuggester = true;

            testSugg = new Suggester(sabs, tabs, sct);
            testSugg.imFeelingLucky();

            String test1 =  "Evaluation Results for test1 " + testSugg.evaluator.printAnalysisResults();
            //MessageBox.Show(test1);

            SuggesterConfig sc = new SuggesterConfig();
            sc.UseIsoRankSimSuggester = false;
            sc.UseNameSimSuggester = false;
            sc.UseNeighborSimSuggester = false;
            sc.UseStructSimSuggester = false;
            sc.UseTypeSimSuggester = false;
            sc.UseValueSimSuggester = false;

            for (int i = 1; i < 2; i++)
            {
                sc.UseIsoRankSimSuggester = !sc.UseIsoRankSimSuggester;
                for (int j = 1; j < 2; j++)
                {
                    sc.UseNameSimSuggester = !sc.UseNameSimSuggester;
                    for (int t = 0; t < 2; t++)
                    {
                        sc.UseNeighborSimSuggester = !sc.UseNeighborSimSuggester;
                        for (int a = 0; a < 2; a++)
                        {
                            sc.UseStructSimSuggester = !sc.UseStructSimSuggester;
                            for (int b = 0; b < 2; b++)
                            {
                                sc.UseTypeSimSuggester = !sc.UseTypeSimSuggester;
                                for (int d = 0; d < 2; d++)
                                {
                                    sc.UseValueSimSuggester = !sc.UseValueSimSuggester;

                                    testSugg = new Suggester(sabs, tabs, sc);
                                    testSugg.imFeelingLucky();

                                    if (testSugg.evaluator.Precision > prec)
                                    {
                                        scP = sc;
                                        prec = testSugg.evaluator.Precision;
                                    }

                                    if (testSugg.evaluator.Recall < reca)
                                    {
                                        scR = sc;
                                        reca = testSugg.evaluator.Recall;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            testSugg = new Suggester(sabs, tabs, scP);
            testSugg.imFeelingLucky();
            //MessageBox.Show(scP.ToString() + testSugg.evaluator.printAnalysisResults(), "Evaluation Results for precision");
            string test2 = "Evaluation Results for precision" + testSugg.evaluator.printAnalysisResults();

            testSugg = new Suggester(sabs, tabs, scR);
            testSugg.imFeelingLucky();
            //MessageBox.Show(scR.ToString() + testSugg.evaluator.printAnalysisResults(), "Evaluation Results for recall");
            string test3 = "Evaluation Results for recall" + testSugg.evaluator.printAnalysisResults();

            MessageBox.Show(test1 + test2 + test3);

            //AbstractLattice sabsR = new AbstractLattice(@"C:\Users\iavazpour\Desktop\CitationsEndNote.xml");
            //AbstractLattice tabsR = new AbstractLattice(@"C:\Users\iavazpour\Desktop\FromJobRefDocBook.xml");

            //First Create the instance of Stopwatch Class
            //Stopwatch sw = new Stopwatch();

            // Start The StopWatch ...From 000
            //sw.Start();

            //testSugg.imFeelingLucky();

            //sw.Stop();

            //this.updateSuggestions(testSugg.getSuggestionsAsStrings(testSugg.LastResults));

            //MessageBox.Show(string.Format("Minutes :{0}\nSeconds :{1}\n Mili seconds :{2}", sw.Elapsed.Minutes,
             //   sw.Elapsed.Seconds, sw.Elapsed.TotalMilliseconds));

            //testSugg = new Suggester(sabs, tabs, sc);

            //sw = new Stopwatch();

            // Start The StopWatch ...From 000
            //sw.Start();

            //testSugg.imFeelingLucky();

            //sw.Stop();

            //this.updateSuggestions(testSugg.getSuggestionsAsStrings(testSugg.LastResults));

            //MessageBox.Show(string.Format("Minutes :{0}\nSeconds :{1}\n Mili seconds :{2}", sw.Elapsed.Minutes,
               // sw.Elapsed.Seconds, sw.Elapsed.TotalMilliseconds));

            /*Object obj = TestVisual.Resources["sourceData"];
            MessageBox.Show(obj.GetType().ToString());
            if ((obj as XmlDataProvider) != null)
            {
                XmlNode xnode = (obj as XmlDataProvider).Document.DocumentElement.Clone();
                if (xnode != null)
                {
                    XElement xmlDocumentWithoutNs = RemoveAllNamespaces(XElement.Parse(xnode.OuterXml));
                    MessageBox.Show(xmlDocumentWithoutNs.ToString());
                    XmlDocument xdoc = new XmlDocument();
                    xdoc.LoadXml(xmlDocumentWithoutNs.ToString());
                    TestVisual.Data =  xdoc.DocumentElement;
                }

            }*/

            //string test = @"javasource/class_declarations/class_declaration/properties/java_property/identifier";

            //MyLogicalTreeHelper helper = new MyLogicalTreeHelper();
            //Collection<object> results = helper.getVisualElementsByName(SourceCanvas, QualifiedNameString.Convert("javasource"));

            //foreach (var obj in results)
            //{
            //    AdornerLayer myAdornerLayer = AdornerLayer.GetAdornerLayer(this);
            //    FrameworkElement found = (obj) as FrameworkElement;
            //    FrameworkElementAdorner fea = new FrameworkElementAdorner(found);
            //    if (myAdornerLayer != null)
            //    {
            //        myAdornerLayer.Add(fea);

            //    }
            //}

            //var foundTextBox = LogicalTreeHelper.FindLogicalNode(SourceCanvas, "type");
            //if (foundTextBox != null)
            //{
            //    AdornerLayer myAdornerLayer = AdornerLayer.GetAdornerLayer(this);
            //    FrameworkElementAdorner fea = new FrameworkElementAdorner(foundTextBox as FrameworkElement);
            //    if (myAdornerLayer != null)
            //    {
            //        myAdornerLayer.Add(fea);
            //        //(foundTextBox as Label).Background = Brushes.Red;
            //    }
            //}
            //else
            //    ReportStatusBar.ShowMessage("not found", ReportIcon.Error);
            //evaluateCombination();
        }