static public Result GetResult(ICollection <Annotation> annotations, GoldType goldType) { switch (goldType) { case GoldType.Joint: return(GenerateJointJointResult(annotations)); case GoldType.JointOnlyOne: return(GenerateJointOnlyOneResult(annotations)); case GoldType.SeparateOverTrueLabelNumber: return(GenerateSeparateOverTrueLabelNumberResult(annotations)); case GoldType.SeparateOverHalf: return(GenerateSeparateOverHalfResult(annotations)); case GoldType.SeperateOverTrueLabelNumberAndHalf: return(JointTwoResults(GoldstandardFunction.GenerateSeparateOverTrueLabelNumberResult(annotations), GoldstandardFunction.GenerateSeparateOverHalfResult(annotations))); case GoldType.SeperateOverTrueLabelNumberAndHalfAndJoint: return(JointThreeResults(GoldstandardFunction.GenerateSeparateOverTrueLabelNumberResult(annotations), GoldstandardFunction.GenerateSeparateOverHalfResult(annotations), GoldstandardFunction.GenerateJointJointResult(annotations))); default: return(new Result()); } }
//得到依赖黄金标准(最多一项,Majority Vote) static private void MajorityVoteGold(string allOrReminded) { foreach (Sentence sentence in Variable.Sentences) { ICollection <Annotation> annotations = new List <Annotation>(); foreach (Annotator annotator in Variable.Annotators) { if (Variable.Data[annotator].ContainsKey(sentence)) { foreach (Annotation annotation in Variable.Data[annotator][sentence]) { annotations.Add(annotation);//取到当前句子的所有标注 } } } sentence.BinaryGold = GoldstandardFunction.GetResult(annotations, Variable.GoldType); } Function.WriteGoldToFile(allOrReminded); }