/** * */ package rainbownlp.machinelearning.featurecalculator.link; import java.util.List; import rainbownlp.core.Artifact; import rainbownlp.core.FeatureValuePair; import rainbownlp.core.Phrase; import rainbownlp.core.PhraseLink; import rainbownlp.core.FeatureValuePair.FeatureName; import rainbownlp.core.graph.GraphEdge; import rainbownlp.machinelearning.IFeatureCalculator; import rainbownlp.machinelearning.MLExample; import rainbownlp.machinelearning.MLExampleFeature; import rainbownlp.parser.DependenciesTreeUtil; /** * @author ehsan * */ public class ParseTreeFeatures implements IFeatureCalculator { public static void main(String[] args) throws Exception { // List<MLExample> trainExamples = // MLExample.getAllExamples(LinkExampleBuilder.ExperimentGroupEventEvent, true); // trainExamples.addAll( // MLExample.getAllExamples(LinkExampleBuilder.ExperimentGroupTimexEvent, true)); // for ( MLExample example_to_process: trainExamples ) // { // ParseTreeFeatures pt = new ParseTreeFeatures(); // // pt.calculateFeatures(example_to_process); // } } @Override public void calculateFeatures(MLExample exampleToProcess) { try { PhraseLink phraseLink = exampleToProcess.getRelatedPhraseLink(); Phrase phrase1 = phraseLink.getFromPhrase(); Phrase phrase2 = phraseLink.getToPhrase(); Artifact fromArtifact = phrase1.getStartArtifact(); Artifact toArtifact = phrase2.getStartArtifact(); DependenciesTreeUtil depUtil = new DependenciesTreeUtil(fromArtifact.getParentArtifact()); List<GraphEdge> path = depUtil.getParseTreePath(fromArtifact, toArtifact); if(path!=null) { FeatureValuePair parseTreePathSize = FeatureValuePair.getInstance( FeatureName.ParseTreePathSize, String.valueOf(path.size())); MLExampleFeature.setFeatureExample(exampleToProcess, parseTreePathSize); for(int i=0;i<path.size();i++) { GraphEdge edge = path.get(i); String token = edge.getTarget().toString().replaceAll("\\d+$", ""); FeatureValuePair parsePathFeature = FeatureValuePair.getInstance( FeatureName.ParseTreePath, token, "1"); MLExampleFeature.setFeatureExample(exampleToProcess, parsePathFeature); } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }