Package dkpro.similarity.experiments.rte.util

Source Code of dkpro.similarity.experiments.rte.util.GoldstandardWriter

/*******************************************************************************
* Copyright 2013
* Ubiquitous Knowledge Processing (UKP) Lab
* Technische Universität Darmstadt
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl-3.0.txt
******************************************************************************/
package dkpro.similarity.experiments.rte.util;

import static dkpro.similarity.experiments.rte.Pipeline.GOLD_DIR;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.io.FileUtils;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.cas.CASException;
import org.apache.uima.fit.component.JCasConsumer_ImplBase;
import org.apache.uima.fit.descriptor.ConfigurationParameter;
import org.apache.uima.fit.util.JCasUtil;
import org.apache.uima.jcas.JCas;

import de.tudarmstadt.ukp.dkpro.core.api.metadata.type.DocumentMetaData;
import dkpro.similarity.experiments.rte.Pipeline.Dataset;
import dkpro.similarity.uima.entailment.type.EntailmentClassificationOutcome;
import dkpro.similarity.uima.io.CombinationReader;


public class GoldstandardWriter
  extends JCasConsumer_ImplBase
  public static final String PARAM_DATASET_NAME = "DatasetName";
  @ConfigurationParameter(name=PARAM_DATASET_NAME, mandatory=true)
  private String datasetName;
 
  public static final String LF = System.getProperty("line.separator");
 
  Map<String,String> gold = new HashMap<String,String>();
 
  @Override
  public void process(JCas jcas)
      throws AnalysisEngineProcessException
  {
      try
      {       
        JCas view1 = jcas.getView(CombinationReader.VIEW_1);
         
          DocumentMetaData md = DocumentMetaData.get(view1);
         
          String docID = md.getDocumentId().substring(md.getDocumentId().indexOf("-") + 1);
         
          EntailmentClassificationOutcome outcome = JCasUtil.selectSingle(jcas, EntailmentClassificationOutcome.class);
//          System.out.println(docID + "::" + outcome.getOutcome());         
          gold.put(docID, outcome.getOutcome());
      }
      catch (CASException e) {
          throw new AnalysisEngineProcessException(e);
      }
  }
 
  @Override
  public void collectionProcessComplete()
    throws AnalysisEngineProcessException
  {
    super.collectionProcessComplete();
   
    StringBuilder sb = new StringBuilder();
   
    for (int i = 0; i <= gold.entrySet().size(); i++)
    {
      String key = new Integer(i).toString();
     
      if (gold.containsKey(key))
      {
        // Transform YES/NO to TRUE/FALSE, and
        // YES/NO/UNKNOWN to ENTAILMENT/CONTRADICTION/UNKNOWN
        // if necessary
       
        if (RteUtil.hasThreeWayClassification(Dataset.valueOf(datasetName)))
        {
          if (gold.get(key).equals("YES")) {
                        sb.append("ENTAILMENT" + LF);
                    }
                    else if (gold.get(key).equals("NO")) {
                        sb.append("CONTRADICTION" + LF);
                    }
                    else {
                        sb.append(gold.get(key) + LF);
                    }
        }
        else
        {
          if (gold.get(key).equals("YES")) {
                        sb.append("TRUE" + LF);
                    }
                    else if (gold.get(key).equals("NO")) {
                        sb.append("FALSE" + LF);
                    }
                    else {
                        sb.append(gold.get(key) + LF);
                    }
        }
      }
    }
   
    File outputFile = new File(GOLD_DIR + "/" + datasetName + ".txt");
   
    try {
      FileUtils.writeStringToFile(outputFile, sb.toString());
    }
    catch (IOException e)
    {
      throw new AnalysisEngineProcessException(e);
    }
  }
}
TOP

Related Classes of dkpro.similarity.experiments.rte.util.GoldstandardWriter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.