static public void RunIDDS() { for (int groupIndex = 0; groupIndex < GroupVariable.AnnotatorGroups.Length; ++groupIndex) { Sij sij = Initialize(groupIndex); CoreFunction.Intgerate(Variable.LabelArray, groupIndex, ref sij); DDSFunction.ObtainBinaryResult(sij, "IDDS", groupIndex); Function.WriteBinaryResultFile("IDDS", groupIndex); } }
static public void RunNDDS(double threshold, IndependenceEstimation independentEstimation) { for (int groupIndex = 0; groupIndex < GroupVariable.AnnotatorGroups.Length; ++groupIndex) { Sij sij = Initialize(groupIndex, threshold, independentEstimation); CoreFunction.Intgerate(Variable.LabelArray, groupIndex, ref sij); DDSFunction.ObtainBinaryResult(sij, "NDDS", groupIndex); Function.WriteBinaryResultFile("NDDS", groupIndex); } }
static public void RunJDDS() { //遍历在某个group size分组下的第几组 for (int groupIndex = 0; groupIndex < GroupVariable.AnnotatorGroups.Length; ++groupIndex) { Sij sij = CoreFunction.InitializeSij(Variable.LabelArray, groupIndex); CoreFunction.Intgerate(Variable.LabelArray, groupIndex, ref sij);//迭代在此 DDSFunction.ObtainBinaryResult(sij, "JDDS", groupIndex); Function.WriteBinaryResultFile("JDDS", groupIndex); } }
static public void RunPeT(PorSForJointje PorS, Smoothing SmoothingBE, BnOrNot bnOrNot) { double[] accuracyOfPersonalityForEachGroup = new double[GroupVariable.AnnotatorGroups.Length]; for (int groupIndex = 0; groupIndex < GroupVariable.AnnotatorGroups.Length; ++groupIndex) { IDictionary <Annotator, IDictionary <Character, IDictionary <Will, double> > > okcx = PersonalityFunction.CalculateOkcx(groupIndex);//模拟人对角色个性的标注,计算一次就不变了 Mce mce = null; Sij sij = null; if (bnOrNot == BnOrNot.Yes) { sij = NDDSFunction.Initialize(groupIndex, Math.Pow(10, -1), IndependenceEstimation.MutualInformation); } else { sij = CoreFunction.InitializeSij(Variable.LabelArray, groupIndex); } Pje pje = null;//p(t|e) Pdata pdata = null; IList <double> Pdatas = new List <double>(); for (int convergeTime = 1; convergeTime <= Variable.ConvergeTimeThreshold; ++convergeTime) { mce = CalculateMce(sij, groupIndex); PersonalityFunction.WriteMVResultFile(mce, groupIndex); PAkjl pakjl = CoreFunction.CalculatePAkjl(Variable.LabelArray, sij, convergeTime, groupIndex); BEkef bekef = PersonalityFunction.CalculateBExy(mce, okcx, SmoothingBE, convergeTime, groupIndex); if (PorS == PorSForJointje.P) { pje = CalculatePje(sij, convergeTime); } if (CalculatePdataAndSij(ref sij, pakjl, bekef, pje, mce, okcx, ref pdata, Pdatas, groupIndex))//old/new { break; } } DDSFunction.ObtainBinaryResult(sij, "PeT", groupIndex); Function.WriteBinaryResultFile("PeT", groupIndex); accuracyOfPersonalityForEachGroup[groupIndex] = PersonalityPaperFunction.AccuracyOfPersonalityForEachGroup(PersonalityVariable.TruePersonality, mce.EstimatedPersonality); } Function.ConsoleWriteLine("Accuracy Of PeT: " + PersonalityPaperFunction.AccuracyOfPersonality(accuracyOfPersonalityForEachGroup)); }
static public void RunTDDS() { for (int groupIndex = 0; groupIndex < GroupVariable.AnnotatorGroups.Length; ++groupIndex) { Initialize(groupIndex); IList <double> Pdatas = new List <double>(); for (int time = 1; time <= Variable.ConvergeTimeThreshold; ++time) { //计算Pk //计算Pk,mcj(consistent:角色c有j标签的概率) ChoiceFunction.PriorPj(ref TDDSVariable.Pj, ref TDDSVariable.Mcj, TDDSVariable.Sij, time); //计算π TDDSVariable.PAkjl = CoreFunction.CalculatePAkjl(Variable.LabelArray, TDDSVariable.Sij, time, groupIndex); //计算Sij //if (CoreFunction.CalculatePdataAndSij(Variable.LabelArray, ref TDDSVariable.Sij, TDDSVariable.Pj, TDDSVariable.Pajl, TDDSVariable.Mcj, ref TDDSVariable.Pdata, groupIndex, Pdatas, // TDDSVariable.ConditionalPj, TDDSVariable.ConditionalMcj)) //break; } DDSFunction.ObtainBinaryResult(TDDSVariable.Sij, "TDDS", groupIndex); DDSFunction.ObtainNumericResult(TDDSVariable.Sij, "TDDS", groupIndex); Function.WriteBinaryResultFile("TDDS", groupIndex); } }
static public void RunSDDS() { if (!SupervisedFunction.IsNumberOfTraningSentencesValid()) { return; } InitializeTrainingSijAndTrainingPj(); for (int groupIndex = 0; groupIndex < GroupVariable.AnnotatorGroups.Length; ++groupIndex) { CalculatePij(groupIndex); CalculatePj(); CalculatePAkjl(groupIndex); CalculateSij(groupIndex); DDSFunction.ObtainNumericResult(SDDSVariable.Sij, "SDDS", groupIndex); DDSFunction.ObtainBinaryResult(SDDSVariable.Sij, "SDDS", groupIndex); Function.WriteNumericResultFile("SDDS", groupIndex); Function.WriteBinaryResultFile("SDDS", groupIndex);//连计算再输出 } double NumericIndependentEuclidean = 0; double BinaryIndependentDice = 0; double BinaryDependentDice = 0; double BinaryIndependentCompare = 0; double BinaryDependentCompare = 0; double BinaryDependentJaccard = 0; double BinaryAndNumeric = 0; for (int groupIndex = 0; groupIndex < GroupVariable.AnnotatorGroups.Length; ++groupIndex) { double groupNumericIndependentEuclidean = 0; double groupBinaryIndependentDice = 0; double groupBinaryDependentDice = 0; double groupBinaryIndependentCompare = 0; double groupBinaryDependentCompare = 0; double groupBinaryDependentJaccard = 0; double groupBinaryAndNumeric = 0; foreach (Sentence sentence in Variable.Sentences) { if (sentence.ID < SupervisedVariable.NumberOfTraningSentences) { continue; } groupNumericIndependentEuclidean += SimilarityMeasure.Euclidean(sentence.AnnotaitonGroups[groupIndex].SDDSNumResult, sentence.NumericGold); groupBinaryIndependentDice += SimilarityMeasure.DicePlusANumber(sentence.AnnotaitonGroups[groupIndex].SDDSNumResult.ToBinaryResult(), sentence.NumericGold.ToBinaryResult()); groupBinaryIndependentCompare += SimilarityMeasure.Compare(sentence.AnnotaitonGroups[groupIndex].SDDSNumResult.ToBinaryResult(), sentence.NumericGold.ToBinaryResult()); groupBinaryDependentCompare += SimilarityMeasure.Compare(sentence.AnnotaitonGroups[groupIndex].SDDSResult, sentence.BinaryGold); groupBinaryDependentDice += SimilarityMeasure.DicePlusANumber(sentence.AnnotaitonGroups[groupIndex].SDDSResult, sentence.BinaryGold); groupBinaryDependentJaccard += SimilarityMeasure.JaccardPlusANumber(sentence.AnnotaitonGroups[groupIndex].SDDSResult, sentence.BinaryGold); groupBinaryAndNumeric += SimilarityMeasure.BinaryAndNumeric(sentence.AnnotaitonGroups[groupIndex].SDDSResult, sentence.NumericGold); } NumericIndependentEuclidean += groupNumericIndependentEuclidean / (Variable.Sentences.Count - SupervisedVariable.NumberOfTraningSentences); BinaryIndependentDice += groupBinaryIndependentDice / (Variable.Sentences.Count - SupervisedVariable.NumberOfTraningSentences); BinaryDependentDice += groupBinaryDependentDice / (Variable.Sentences.Count - SupervisedVariable.NumberOfTraningSentences); BinaryIndependentCompare += groupBinaryIndependentCompare / (Variable.Sentences.Count - SupervisedVariable.NumberOfTraningSentences); BinaryDependentCompare += groupBinaryDependentCompare / (Variable.Sentences.Count - SupervisedVariable.NumberOfTraningSentences); BinaryDependentJaccard += groupBinaryDependentJaccard / (Variable.Sentences.Count - SupervisedVariable.NumberOfTraningSentences); BinaryAndNumeric += groupBinaryAndNumeric / (Variable.Sentences.Count - SupervisedVariable.NumberOfTraningSentences); } NumericIndependentEuclidean /= GroupVariable.AnnotatorGroups.Length; BinaryIndependentDice /= GroupVariable.AnnotatorGroups.Length; BinaryDependentDice /= GroupVariable.AnnotatorGroups.Length; BinaryIndependentCompare /= GroupVariable.AnnotatorGroups.Length; BinaryDependentCompare /= GroupVariable.AnnotatorGroups.Length; BinaryDependentJaccard /= GroupVariable.AnnotatorGroups.Length; BinaryAndNumeric /= GroupVariable.AnnotatorGroups.Length; }