Package org.mitre.medfacts.uima

Source Code of org.mitre.medfacts.uima.RunZoner

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.mitre.medfacts.uima;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.log4j.Logger;

import org.apache.ctakes.core.util.CtakesFileNamer;
import org.apache.ctakes.core.ae.DocumentIdPrinterAnalysisEngine;
import org.apache.ctakes.core.cr.FilesInDirectoryCollectionReader;
import org.apache.ctakes.core.cr.TextReader;
import org.apache.ctakes.core.cr.XMIReader;
import org.apache.uima.UIMAException;
import org.apache.uima.analysis_engine.AnalysisEngineDescription;
import org.apache.uima.collection.CollectionReader;
import org.apache.uima.resource.DataResource;
import org.apache.uima.resource.ExternalResourceDescription;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.SharedResourceObject;
import org.apache.uima.resource.metadata.TypeSystemDescription;
import org.uimafit.component.xwriter.XWriter;
import org.uimafit.factory.AggregateBuilder;
import org.uimafit.factory.AnalysisEngineFactory;
import org.uimafit.factory.CollectionReaderFactory;
import org.uimafit.factory.ExternalResourceFactory;
import org.uimafit.factory.TypeSystemDescriptionFactory;
import org.uimafit.factory.UimaContextFactory;
import org.uimafit.pipeline.SimplePipeline;

public class RunZoner
{
  private static Logger logger = Logger.getLogger(RunZoner.class.getName());
 
  File inputDirectory;
  List<File> inputFiles;

  File outputDirectory;
 
  public static void main(String args[]) throws UIMAException, IOException, URISyntaxException
  {
    if (args.length != 2)
    {
      System.err.format("Syntax: %s input_directory output_directory%n", RunZoner.class.getName());
    }
   
    File inputDirectory = new File(args[0]);
    File outputDirectory = new File(args[1]);
   
    List<File> inputFiles = listContentsAll(inputDirectory);
   
    RunZoner runner = new RunZoner();
    runner.setInputDirectory(inputDirectory);
    runner.setInputFiles(inputFiles);
    runner.setOutputDirectory(outputDirectory);
   
    runner.execute();
  }
 
  public static List<File> listContentsAll(File inputDirectory)
  {
    File fileArray[] = inputDirectory.listFiles();
   
    List<File> fileList = Arrays.asList(fileArray);
    return fileList;
  }

  public static List<File> listContentsXmiOnly(File inputDirectory)
  {
    File fileArray[] = inputDirectory.listFiles(new FilenameFilter()
    {
     
      @Override
      public boolean accept(File dir, String name)
      {
        return name.endsWith(".xmi");
      }
    });
   
    List<File> fileList = Arrays.asList(fileArray);
    return fileList;
  }

  public void execute() throws UIMAException, IOException, URISyntaxException
  {
    AggregateBuilder builder = new AggregateBuilder();
   
    TypeSystemDescription typeSystemDescription = TypeSystemDescriptionFactory.createTypeSystemDescriptionFromPath();
   
//    CollectionReader reader =
//        CollectionReaderFactory.createCollectionReader(
//          XMIReader.class,
//          typeSystemDescription,
//          XMIReader.PARAM_FILES,
//          inputFiles);

    CollectionReader reader =
    CollectionReaderFactory.createCollectionReader(
      TextReader.class,
      typeSystemDescription,
      TextReader.PARAM_FILES,
      inputFiles);

   
      AnalysisEngineDescription documentIdPrinter =
          AnalysisEngineFactory.createPrimitiveDescription(DocumentIdPrinterAnalysisEngine.class);
      builder.add(documentIdPrinter);
   
      String generalSectionRegexFileUri =
        "org/mitre/medfacts/uima/section_regex.xml";
      //URI generalSectionRegexFileUri =
      //  this.getClass().getClassLoader().getResource("org/mitre/medfacts/zoner/section_regex.xml").toURI();
//      ExternalResourceDescription generalSectionRegexDescription = ExternalResourceFactory.createExternalResourceDescription(
//          SectionRegexConfigurationResource.class, new File(generalSectionRegexFileUri));
      AnalysisEngineDescription zonerAnnotator =
          AnalysisEngineFactory.createPrimitiveDescription(ZoneAnnotator.class,
              ZoneAnnotator.PARAM_SECTION_REGEX_FILE_URI,
              generalSectionRegexFileUri
              );
      builder.add(zonerAnnotator);

      String mayoSectionRegexFileUri =
          "org/mitre/medfacts/uima/mayo_sections.xml";
//      URI mayoSectionRegexFileUri =
//          this.getClass().getClassLoader().getResource("org/mitre/medfacts/zoner/mayo_sections.xml").toURI();
//        ExternalResourceDescription mayoSectionRegexDescription = ExternalResourceFactory.createExternalResourceDescription(
//            SectionRegexConfigurationResource.class, new File(mayoSectionRegexFileUri));
      AnalysisEngineDescription mayoZonerAnnotator =
          AnalysisEngineFactory.createPrimitiveDescription(ZoneAnnotator.class,
              ZoneAnnotator.PARAM_SECTION_REGEX_FILE_URI,
              mayoSectionRegexFileUri
              );
      builder.add(mayoZonerAnnotator);

      AnalysisEngineDescription xWriter = AnalysisEngineFactory.createPrimitiveDescription(
          XWriter.class,
          typeSystemDescription,
          XWriter.PARAM_OUTPUT_DIRECTORY_NAME,
          outputDirectory.toString(),
          XWriter.PARAM_FILE_NAMER_CLASS_NAME,
          CtakesFileNamer.class.getName()
          );
     
      builder.add(xWriter);

    logger.info("BEFORE RUNNING PIPELINE...");
    SimplePipeline.runPipeline(reader,  builder.createAggregateDescription());
    logger.info("AFTER RUNNING PIPELINE...COMPLETED");
  }

  public File getInputDirectory()
  {
    return inputDirectory;
  }

  public void setInputDirectory(File inputDirectory)
  {
    this.inputDirectory = inputDirectory;
  }

  public List<File> getInputFiles()
  {
    return inputFiles;
  }

  public void setInputFiles(List<File> inputFiles)
  {
    this.inputFiles = inputFiles;
  }

  public File getOutputDirectory()
  {
    return outputDirectory;
  }

  public void setOutputDirectory(File outputDirectory)
  {
    this.outputDirectory = outputDirectory;
  }
 
}
TOP

Related Classes of org.mitre.medfacts.uima.RunZoner

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.