package gate.bdmComp; import gate.Corpus; import gate.Document; import gate.Factory; import gate.FeatureMap; import gate.Gate; import gate.GateConstants; import gate.util.ExtensionFileFilter; import gate.util.GateException; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.Arrays; import java.util.Comparator; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestBDMCompPlugin extends TestCase { /** Use it to do initialisation only once. */ private static boolean initialized = false; /** Learning home for reading the data and configuration file. */ private static File bdmPluginHome; /** Constructor, setting the home directory. */ public TestBDMCompPlugin(String arg0) throws GateException, MalformedURLException { super(arg0); if(!initialized) { Gate.init(); File owlimPluginHome = new File(new File(Gate.getGateHome(), "plugins"), "Ontology_OWLIM2"); Gate.getCreoleRegister().addDirectory(owlimPluginHome.toURI().toURL()); bdmPluginHome = new File(new File(Gate.getGateHome(), "plugins"), "Ontology_BDM_Computation"); Gate.getCreoleRegister().addDirectory(bdmPluginHome.toURI().toURL()); initialized = true; } } /** Fixture set up */ public void setUp() { } // setUp /** * Put things back as they should be after running tests. */ public void tearDown() throws Exception { } // tearDown /** Test suite routine for the test runner */ public static Test suite() { return new TestSuite(TestBDMCompPlugin.class); } // suite /** The test the IAA. */ public void testBDMCompPlugin() throws Exception { Boolean savedSpaceSetting = Gate.getUserConfig().getBoolean( GateConstants.DOCUMENT_ADD_SPACE_ON_UNPACK_FEATURE_NAME); Gate.getUserConfig().put( GateConstants.DOCUMENT_ADD_SPACE_ON_UNPACK_FEATURE_NAME, Boolean.FALSE); try { //Gate.setGateHome(new File("C:\\svn\\gate")); //Gate.setUserConfigFile(new File("C:\\svn\\gate.xml")); //Gate.init(); //ExtensionFileFilter fileFilter = new ExtensionFileFilter(); //fileFilter.addExtension("xml"); //iaaPluginHome = new File(new File(Gate.getGateHome(), "plugins"), //"iaaPlugin"); //Gate.getCreoleRegister().addDirectory(iaaPluginHome.toURL()); // Load the documents into a corpus Corpus data = Factory.newCorpus("data"); String corpusDirName; corpusDirName = new File(bdmPluginHome, "test/ontology").getAbsolutePath(); //corpusDirName = "C:\\svn\\gate\\plugins\\bdmComputation\\test\\ontology"; //String testDir = "plugins/iaaPlugin/test/"; //System.out.println("testDir00=*"+(new File(testDir,"beijing-opera.xml")).getAbsolutePath().toString()+"*"); /*Document doc = Factory.newDocument(new File("C:\\svn\\gate\\plugins\\iaaPlugin\\test\\beijing-opera.xml").toURL(), "UTF-8"); Document doc1 = Factory.newDocument(new File("C:\\svn\\gate\\plugins\\iaaPlugin\\test\\beijing-opera-2.xml").toURL(), "UTF-8"); data.add(doc); data.add(doc1);*/ BDMCompMain bdmM; FeatureMap parameters = Factory.newFeatureMap(); bdmM = (BDMCompMain)Factory.createResource( "gate.bdmComp.BDMCompMain", parameters); File testOnto = new File(corpusDirName, "protont.owl"); File bdmFile = new File(corpusDirName, "protont-bdm.txt"); bdmM.setOntologyURL(testOnto.toURI().toURL()); //("ann1;ann2;ann3"); bdmM.setOutputBDMFile(bdmFile.toURI().toURL()); //bdmM.setAnnTypesAndFeats("Os;sent->Op"); //bdmM.setVerbosity("0"); /** The controller include the ML Api as one PR. */ gate.creole.SerialController controller = (gate.creole.SerialController)Factory .createResource("gate.creole.SerialController"); //controller.setCorpus(data); controller.add(bdmM); System.out.println("starting executing..."); controller.execute(); /** four BDM scores for testing purpose. */ float [] bdmTS = new float[4]; for(BDMOne oneb: bdmM.bdmScores) { String key = oneb.con11.getName(); String res = oneb.con22.getName(); if((key.equals("ContactInformation") && res.equals("Topic")) || (res.equals("ContactInformation") && key.equals("Topic"))) bdmTS[0] = oneb.bdmScore; if((key.equals("InformationResource") && res.equals("GeneralTerm")) || (res.equals("InformationResource") && key.equals("GeneralTerm"))) bdmTS[1] = oneb.bdmScore; if((key.equals("Recognized") && res.equals("Entity")) || (res.equals("Recognized") && key.equals("Entity"))) bdmTS[2] = oneb.bdmScore; if((key.equals("Role") && res.equals("Event")) || (res.equals("Role") && key.equals("Event"))) bdmTS[3] = oneb.bdmScore; } int[] nPwF = new int[4]; nPwF[0] = (int)Math.ceil((double)bdmTS[0]*1000); nPwF[1] = (int)Math.ceil((double)bdmTS[1]*1000); nPwF[2] = (int)Math.ceil((double)bdmTS[2]*1000); nPwF[3] = (int)Math.ceil((double)bdmTS[3]*1000); //System.out.println("1="+nPwF[0]+", 2="+nPwF[1]+", 3="+nPwF[2]+", 4="+nPwF[3]+"."); assertEquals("Wrong value for correct: ", 495, nPwF[0]); assertEquals("Wrong value for correct: ", 0, nPwF[1]); assertEquals("Wrong value for correct: ", 0, nPwF[2]); assertEquals("Wrong value for correct: ", 296, nPwF[3]); } finally { Gate.getUserConfig().put( GateConstants.DOCUMENT_ADD_SPACE_ON_UNPACK_FEATURE_NAME, savedSpaceSetting); } } }