static public void GenerateIndependentResult() { foreach (Sentence sentence in Variable.Sentences) { sentence.IndependentResult = new Result(); } foreach (Label label in Variable.LabelArray) { //Variable.OutputFile.WriteLine("Start: " + Variable.LabelToString[label]); IList <double> Pdatas = new List <double>(); Initialize(label); for (int time = 1; time <= Variable.ConvergeTimeThreshold; ++time) { //计算Pk NoGroupIDSVariable.Pj = CoreFunction.CalculatePj(NoGroupIDSVariable.Sij, time); //计算π NoGroupIDSVariable.PAkjl = CoreFunction.CalculatePAkjl(new Label[] { label }, NoGroupIDSVariable.Sij, time, -1); //计算Sij //if (CoreFunction.CalculatePdataAndSij(new Label[] { label }, ref NoGroupIDSVariable.Sij, NoGroupIDSVariable.Pj, NoGroupIDSVariable.Pajl, NoGroupIDSVariable.Mcj, ref NoGroupIDSVariable.Pdata, -1, Pdatas, // new Dictionary<Tuple<Labelset, Labelset>, double>(), new Dictionary<Tuple<Character, Character>, IDictionary<Tuple<Labelset, Labelset>, double>>())) //{ // ObtainLabelResult(label); // break; //} } } OutputResult(); }
static public void RunPeTM(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 = InitializeMce(groupIndex); Sije sije = null; if (bnOrNot == BnOrNot.Yes) { sije = InitializeSijeWithBN(mce, groupIndex); } else { sije = InitializeSije(mce, groupIndex); //old new } 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(sije, groupIndex); PAkjl pakjl = CoreFunction.CalculatePAkjl(Variable.LabelArray, sije.ToSij, convergeTime, groupIndex); BEkef bekef = PersonalityFunction.CalculateBExy(mce, okcx, SmoothingBE, convergeTime, groupIndex); if (PorS == PorSForJointje.P) { pje = CalculatePje(sije, convergeTime); } if (CalculatePdataAndSije(ref sije, pakjl, bekef, pje, mce, okcx, ref pdata, Pdatas, groupIndex))//old/new { break; } } IDictionary <Sentence, IDictionary <Will, double> > sic = ObtainBinaryResult(sije, mce, groupIndex); WriteBinaryResultFile(sic, mce, groupIndex); PersonalityFunction.WriteMVResultFile(mce, groupIndex); accuracyOfPersonalityForEachGroup[groupIndex] = PersonalityPaperFunction.AccuracyOfPersonalityForEachGroup(PersonalityVariable.TruePersonality, mce.EstimatedPersonality); } Function.ConsoleWriteLine("Accuracy Of PeTM: " + 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); } }