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 RunIDS() { for (int groupIndex = 0; groupIndex < GroupVariable.AnnotatorGroups.Length; ++groupIndex) { foreach (Sentence sentence in Variable.Sentences) { sentence.AnnotaitonGroups[groupIndex].IDSNumResult = new NumericResult(); sentence.AnnotaitonGroups[groupIndex].IDSResult = new Result(); } foreach (Label label in Variable.LabelArray) { Sij sij = CoreFunction.InitializeSij(new Label[] { label }, groupIndex); CoreFunction.Intgerate(new Label[] { label }, groupIndex, ref sij); ObtainLabelResult(sij, groupIndex); } Function.WriteBinaryResultFile("IDS", groupIndex); } }
static public void RunPDS() { for (int groupIndex = 0; groupIndex < GroupVariable.AnnotatorGroups.Length; ++groupIndex) { foreach (Sentence sentence in Variable.Sentences) { sentence.AnnotaitonGroups[groupIndex].PDSNumResult = new NumericResult(); sentence.AnnotaitonGroups[groupIndex].PDSResult = new Result(); } LabelPair[] bilabels = GenerateBilabels(groupIndex); foreach (LabelPair bilabel in bilabels) { Sij sij = CoreFunction.InitializeSij(bilabel.ToArray(), groupIndex); CoreFunction.Intgerate(bilabel.ToArray(), groupIndex, ref sij); ObtainLabelResult(bilabel, groupIndex, sij); } Function.WriteBinaryResultFile("PDS", 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)); }