示例#1
0
        public void printScore(String queryLaTeX, String resultLaTeX)
        {
            //这个函数用来打印每个指标的分数
            AAZhiBiao aazhibiao = new AAZhiBiao();

            //首先是包含的话是,是最匹配的,并且树的层次越接近根的话,以最接近根的那个为标准,就越相似,这是第一点
            Console.WriteLine("第一个:树的高度层次分数:" + aazhibiao.BTLevelScore(queryLaTeX, resultLaTeX));

            //第二个指标:查询表达式在结果表达式中的个数*0.8  + 与查询表达式节点相同的个数*0.2 这个指标
            Console.WriteLine("第二个:查询表达式在结果表达式个数以及与查询表达式节点相同的个数:" + aazhibiao.childrenCountScore(queryLaTeX, resultLaTeX));

            //第三个指标:查询表达式的子式个数在结果表达式里面占的比重
            Console.WriteLine("第三个:公式覆盖度" + aazhibiao.formulaCoverage(queryLaTeX, resultLaTeX));

            //第四个指标:树根路径求交集,
            Console.WriteLine("第四个:树根路径用Jaccard系数求交集:" + aazhibiao.RootPath(queryLaTeX, resultLaTeX));

            //第五个指标:运算符所在层次和类型
            Console.WriteLine("第五个:运算符所在层次和类型:" + aazhibiao.OperateBTLevelAndType(queryLaTeX, resultLaTeX));

            ////第六个指标:tfIdf
            //Console.WriteLine("第六个:TF-IDF:"+aazhibiao.TFIDF(queryLaTeX,resultLaTeX));
        }
示例#2
0
        //传入查询表达式,和含有检索出来的结果表达式的集合,开始对每一个表达式进行排序
        public /*List<AAAData>*/ void  FinalScore(String queryLaTeX, List <String> resultLaTeXList, double baoHan /*,double jieGou*/)
        {
            List <AAAData> finalList = new List <AAAData>();
            AAAData        tempdata  = new AAAData();
            AAZhiBiao      aazhibiao = new AAZhiBiao();

            //现在开始遍历检索到的每一个结果表达式,我开始计算他们之间的分数
            foreach (var resultLaTeX in resultLaTeXList)
            {
                //Console.WriteLine("AAFinalScore.cs:"+resultLaTeX);
                double a, b;
                double d;

                //a = (   (1 - aazhibiao.BTLevelScore(queryLaTeX, resultLaTeX)  ) * (1 - aazhibiao.BTLevelScore(queryLaTeX, resultLaTeX)) + (1 - aazhibiao.childrenCountScore(queryLaTeX, resultLaTeX)) * (1 - aazhibiao.childrenCountScore(queryLaTeX, resultLaTeX)) + (1 - aazhibiao.formulaCoverage(queryLaTeX,resultLaTeX)) * (1 - aazhibiao.formulaCoverage(queryLaTeX,resultLaTeX))) / 3;
                //b = ((1 - aazhibiao.RootPath(queryLaTeX, resultLaTeX)) * (1 - aazhibiao.RootPath(queryLaTeX, resultLaTeX)) + (1 - aazhibiao.OperateBTLevelAndType(queryLaTeX, resultLaTeX)) * (1 - aazhibiao.OperateBTLevelAndType(queryLaTeX, resultLaTeX))) / 2; ;
                a = aazhibiao.formulaCoverage(queryLaTeX, resultLaTeX);
                /*b = aazhibiao.RootPath(queryLaTeX, resultLaTeX);*/
                d = a * baoHan /*+ b*jieGou*/;

                AAAData data = new AAAData();
                data.LaTeX = resultLaTeX;
                data.Score = d;
                finalList.Add(data);
            }

            //开始对相似度进行排序

            /*Console.WriteLine("排序前:");
             * for (int i = 0; i < finalList.Count; i++)
             * {
             *  Console.WriteLine("LaTeX为:" + finalList[i].LaTeX + "分数为:" + finalList[i].Score);
             * }*/


            //开始排序
            for (int i = 0; i < finalList.Count - 1; i++)
            {
                for (int j = i + 1; j < finalList.Count; j++)
                {
                    if (finalList[j].Score > finalList[i].Score)
                    {
                        tempdata     = finalList[j];
                        finalList[j] = finalList[i];
                        finalList[i] = tempdata;
                    }
                }
            }

            //List<AAAData> finalLists = new List<AAAData>();
            //for (int k = 0; k < 5; k++)
            //{
            //    if (finalList.Count > 5)
            //    {
            //        finalLists.Add(finalList[k]);
            //    }
            //}
            //return finalLists;

            Console.WriteLine("排序后最终结果为:");
            for (int i = 0; i < finalList.Count; i++)
            {
                if (finalList[i].Score > 0.1)
                {
                    Console.WriteLine("LaTeX:" + finalList[i].LaTeX + "分数为:" + finalList[i].Score);
                }
            }
        }