Example #1
0
        /*
         * public string generateSummary(DocsStatistics docStats, string newDocText)
         * {
         *  Document newDoc = Conf.getDocumentProcessor().process(newDocText);
         *
         *  return (generateSummary(docStats, newDoc));
         * }
         * //*/

        //private static double DEGREE_CENTRALITY = 0.1;

        //override public string generateSummary(DocsStatistics docStats, Document newDoc)
        override public string generateSummary(ArrayList docs, double compressionRatio)
        {
            string genSummary = null;

            ArrayList allSents = new ArrayList();

            foreach (Document doc in docs)
            {
                allSents.AddRange(doc.sentences);
            }

            double[][] idfModifiedCosine = LexRankCommon.generateIdfModifiedCosineMatrix(IDF.getInstance(), allSents);

            Trace.write(" IDF Cosine Matrix : ");
            Trace.write(MatrixUtil.printMatrix(idfModifiedCosine));

            for (int i = 0; i < idfModifiedCosine.Length; i++)
            {
                int sentDegree = 0;

                for (int j = 0; j < idfModifiedCosine[i].Length; j++)
                {
                    if (idfModifiedCosine[i][j] > this.degreeCentrality)
                    {
                        ++sentDegree;
                    }
                }

                ((Sentence)allSents[i]).weight = sentDegree;
            }

            Sentence[] sents = (Sentence[])allSents.ToArray(typeof(Sentence));

            genSummary = SummaryUtil.SummarizeByCompressionRatio(sents, compressionRatio);

            /*
             * Array.Sort(sents, new SentenceComparer());
             * Array.Reverse(sents);
             *
             * foreach (Sentence sent in sents)
             * {
             *  Trace.write(sent.fullText);
             *  Trace.write("Weight : " + sent.weight);
             * }
             *
             * genSummary = getText(sents);
             * //*/

            return(genSummary);
        }
Example #2
0
        //override public string generateSummary(DocsStatistics docStats, Document newDoc)
        override public string generateSummary(ArrayList docs, double compressionRatio)
        {
            string genSummary = "";

            ArrayList allSents = new ArrayList();

            foreach (Document doc in docs)
            {
                allSents.AddRange(doc.sentences);
            }

            double[][] idfModifiedCosineMatrix = LexRankCommon.generateIdfModifiedCosineMatrix(IDF.getInstance(), allSents);

            //*
            Trace.write(" IDF Cosine Matrix : ");
            Trace.write(MatrixUtil.printMatrix(idfModifiedCosineMatrix));
            //*/

            double[] sentDegree = new double[allSents.Count];

            for (int i = 0; i < sentDegree.Length; i++)
            {
                sentDegree[i] = 0;
            }

            for (int i = 0; i < idfModifiedCosineMatrix.Length; i++)
            {
                for (int j = 0; j < idfModifiedCosineMatrix[i].Length; j++)
                {
                    /*
                     * if (i == j)
                     *  continue;
                     * //*/
                    if (idfModifiedCosineMatrix[i][j] > this.threshold)
                    {
                        idfModifiedCosineMatrix[i][j] = 1;
                        sentDegree[i]++;
                    }
                    else
                    {
                        idfModifiedCosineMatrix[i][j] = 0;
                    }
                }
            }

            Trace.write(MatrixUtil.printMatrix(idfModifiedCosineMatrix));

            for (int i = 0; i < idfModifiedCosineMatrix.Length; i++)
            {
                for (int j = 0; j < idfModifiedCosineMatrix[i].Length; j++)
                {
                    idfModifiedCosineMatrix[i][j] = idfModifiedCosineMatrix[i][j] / sentDegree[i];
                    idfModifiedCosineMatrix[i][j] = (dampingFactor / idfModifiedCosineMatrix.Length) + ((1 - dampingFactor) * idfModifiedCosineMatrix[i][j]);
                }
            }

            Trace.write(MatrixUtil.printMatrix(idfModifiedCosineMatrix));

            double[] weights = LexRankCommon.powerMethod(idfModifiedCosineMatrix, 0.1);

            for (int i = 0; i < allSents.Count; i++)
            {
                ((Sentence)allSents[i]).weight = weights[i];
            }

            Sentence[] sents = (Sentence[])allSents.ToArray(new Sentence().GetType());

            genSummary = SummaryUtil.SummarizeByCompressionRatio(sents, compressionRatio);

            /*
             * Array.Sort(sents, new SentenceComparer());
             * Array.Reverse(sents);
             *
             * foreach (Sentence sent in sents)
             * {
             *  Trace.write(sent.fullText);
             *  Trace.write("Weight : " + sent.weight);
             * }
             *
             * genSummary = getText(sents);
             * //*/
            return(genSummary);
        }