public StatisticalCorefAlgorithm(Properties props, Dictionaries dictionaries, string wordCountsFile, string modelPath, int maxMentionDistance, int maxMentionDistanceWithStringMatch, double[] thresholds)
 {
     extractor  = new FeatureExtractor(props, dictionaries, null, wordCountsFile);
     classifier = PairwiseModel.NewBuilder("classifier", MetaFeatureExtractor.NewBuilder().Build()).ModelPath(modelPath).Build();
     this.maxMentionDistance = maxMentionDistance;
     this.maxMentionDistanceWithStringMatch = maxMentionDistanceWithStringMatch;
     this.thresholds = MakeThresholds(thresholds);
 }
 public ClusteringCorefAlgorithm(Properties props, Dictionaries dictionaries, string clusteringPath, string classificationPath, string rankingPath, string anaphoricityPath, string wordCountsPath)
 {
     clusterer           = new Clusterer(clusteringPath);
     classificationModel = PairwiseModel.NewBuilder("classification", MetaFeatureExtractor.NewBuilder().Build()).ModelPath(classificationPath).Build();
     rankingModel        = PairwiseModel.NewBuilder("ranking", MetaFeatureExtractor.NewBuilder().Build()).ModelPath(rankingPath).Build();
     anaphoricityModel   = PairwiseModel.NewBuilder("anaphoricity", MetaFeatureExtractor.AnaphoricityMFE()).ModelPath(anaphoricityPath).Build();
     extractor           = new FeatureExtractor(props, dictionaries, null, wordCountsPath);
 }
 public PairwiseModel(PairwiseModel.Builder builder)
 {
     name             = builder.name;
     meta             = builder.meta;
     trainingExamples = builder.trainingExamples;
     epochs           = builder.epochs;
     singletonRatio   = builder.singletonRatio;
     classifier       = new SimpleLinearClassifier(builder.loss, builder.learningRateSchedule, builder.regularizationStrength, builder.modelFile == null ? null : ((builder.modelFile.EndsWith(".ser") || builder.modelFile.EndsWith(".gz")) ? builder.modelFile
                          : StatisticalCorefTrainer.pairwiseModelsPath + builder.modelFile + "/model.ser"));
     str = StatisticalCorefTrainer.FieldValues(builder);
 }
Esempio n. 4
0
        /// <exception cref="System.Exception"/>
        public static void DoTraining(Properties props)
        {
            SetTrainingPath(props);
            Dictionaries dictionaries = new Dictionaries(props);

            SetDataPath("train");
            wordCountsFile = trainingPath + "train/word_counts.ser";
            CorefProperties.SetInput(props, CorefProperties.Dataset.Train);
            Preprocess(props, dictionaries, true);
            SetDataPath("dev");
            CorefProperties.SetInput(props, CorefProperties.Dataset.Dev);
            Preprocess(props, dictionaries, false);
            SetDataPath("train");
            dictionaries = null;
            PairwiseModel classificationModel = PairwiseModel.NewBuilder(ClassificationModel, MetaFeatureExtractor.NewBuilder().Build()).Build();
            PairwiseModel rankingModel        = PairwiseModel.NewBuilder(RankingModel, MetaFeatureExtractor.NewBuilder().Build()).Build();
            PairwiseModel anaphoricityModel   = PairwiseModel.NewBuilder(AnaphoricityModel, MetaFeatureExtractor.AnaphoricityMFE()).TrainingExamples(5000000).Build();

            PairwiseModelTrainer.TrainRanking(rankingModel);
            PairwiseModelTrainer.TrainClassification(classificationModel, false);
            PairwiseModelTrainer.TrainClassification(anaphoricityModel, true);
            SetDataPath("dev");
            PairwiseModelTrainer.Test(classificationModel, predictionsName, false);
            PairwiseModelTrainer.Test(rankingModel, predictionsName, false);
            PairwiseModelTrainer.Test(anaphoricityModel, predictionsName, true);
            new Clusterer().DoTraining(ClusteringModelName);
        }
 public static MetaFeatureExtractor AnaphoricityMFE()
 {
     return(MetaFeatureExtractor.NewBuilder().SingleConjunctions(new MetaFeatureExtractor.SingleConjunction[] { MetaFeatureExtractor.SingleConjunction.Index, MetaFeatureExtractor.SingleConjunction.IndexLast }).DisallowedPrefixes(new string[] { "parent-word" }).AnaphoricityClassifier(true).Build());
 }
 public Builder(string name, MetaFeatureExtractor meta)
 {
     // output in config file with reflection
     this.name = name;
     this.meta = meta;
 }
 public static PairwiseModel.Builder NewBuilder(string name, MetaFeatureExtractor meta)
 {
     return(new PairwiseModel.Builder(name, meta));
 }
 public static PairwiseModel.Builder NewBuilder(string name, MetaFeatureExtractor meta)
 {
     return(new MaxMarginMentionRanker.Builder(name, meta));
 }
 public Builder(string name, MetaFeatureExtractor meta)
     : base(name, meta)
 {
 }