Changeset 1376


Ignore:
Timestamp:
May 3, 2010, 3:40:01 PM (12 years ago)
Author:
malischewski
Message:

Working on it..

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/CostFunction/CostFunction.cs

    r1375 r1376  
    336336                }
    337337            }
    338             //debug
     338            /*debug
    339339            foreach (KeyValuePair<string, double[]> g in corpusBigrams)
    340340            {
    341341                GuiLogMessage(corpusBigrams[g.Key][0].ToString() + " " + g.Key + " " + corpusBigrams[g.Key][1].ToString(), NotificationLevel.Debug);
    342             }
     342            } */
    343343           
    344344            // Count input TriGrams
     
    355355            }
    356356
     357            //Union Bigrams
     358            HashSet<string> allBigrams = new HashSet<string>(inputBiGrams.Keys);
     359            allBigrams.UnionWith(corpusBigrams.Keys);
     360
     361            //Union Trigrams
     362            HashSet<string> allTrigrams = new HashSet<string>(inputTriGrams.Keys);
     363            allTrigrams.UnionWith(corpusTrigrams.Keys);
     364
     365            // Sum of all input Bigrams absolutes
     366            double sumBigrams = inputBiGrams.Values.Sum();
     367
     368            // Sum of all input Trigrams absolutes
     369            double sumTrigrams = inputTriGrams.Values.Sum();
     370
    357371            // First part of the equation: Sum up all [K_b (i,j) - D_b (i,j)]
    358372            double bigramscore = 0.0;
    359             foreach (KeyValuePair<string, double[]> g in corpusBigrams)
    360             {
    361                 // bigramscore += g.Value[1] - inputBiGrams[g]/inputBiGrams.Sum<value;
     373            foreach (string g in allBigrams)
     374            {
     375                if (corpusBigrams.ContainsKey(g) && inputBiGrams.ContainsKey(g))
     376                {
     377                    bigramscore += corpusBigrams[g][1] - inputBiGrams[g] / sumBigrams;
     378                }
     379                else if (!corpusBigrams.ContainsKey(g))
     380                {
     381                    bigramscore += 0.0 - inputBiGrams[g] / sumBigrams;
     382                }
     383                else if (!inputBiGrams.ContainsKey(g))
     384                {
     385                    bigramscore += corpusBigrams[g][1];
     386                }
    362387            }
    363388
    364389            // Second part of the equation: Sum up all [K_t (i,j) - D_t (i,j)]
    365            
    366 
    367             return bigramscore;
     390            double Trigramscore = 0.0;
     391            foreach (string g in allTrigrams)
     392            {
     393                if (corpusTrigrams.ContainsKey(g) && inputTriGrams.ContainsKey(g))
     394                {
     395                    Trigramscore += corpusTrigrams[g][1] - inputTriGrams[g] / sumTrigrams;
     396                }
     397                else if (!corpusTrigrams.ContainsKey(g))
     398                {
     399                    Trigramscore += 0.0 - inputTriGrams[g] / sumTrigrams;
     400                }
     401                else if (!inputTriGrams.ContainsKey(g))
     402                {
     403                    Trigramscore += corpusTrigrams[g][1];
     404                }
     405            }
     406
     407            return 10*bigramscore+10*Trigramscore;
    368408        }//end Execute
    369409
Note: See TracChangeset for help on using the changeset viewer.