Code snippets for module 7
1. Basic Document stats PR
1.1. Code
package module7;
import gate.Resource;
import gate.creole.AbstractLanguageAnalyser;
import gate.creole.ExecutionException;
import gate.creole.ResourceInstantiationException;
public class DocStats extends AbstractLanguageAnalyser {
@Override
public void execute() throws ExecutionException {
int tokens = document.getAnnotations().get("Token").size();
document.getFeatures().put("token_count", tokens);
}
@Override
public Resource init() throws ResourceInstantiationException {
System.out.println(getClass().getName() + " is initialising.");
return this;
}
}
1.2. creole.xml
<CREOLE-DIRECTORY>
<JAR>module7.jar</JAR>
<RESOURCE>
<NAME>Document Statistics</NAME>
<CLASS>module7.DocStats</CLASS>
</RESOURCE>
</CREOLE-DIRECTORY>
2. Adding a parameter
2.1. Code
package module7;
import gate.Resource;
import gate.creole.AbstractLanguageAnalyser;
import gate.creole.ExecutionException;
import gate.creole.ResourceInstantiationException;
public class DocStats extends AbstractLanguageAnalyser {
private String annotTypeToCount;
public void setAnnotTypeToCount(String t) { annotTypeToCount = t; }
public String getAnnotTypeToCount() { return annotTypeToCount; }
private String inputASName;
public void setInputASName(String n) { inputASName = n; }
public String getInputASName() { return inputASName; }
@Override
public void execute() throws ExecutionException {
int tokens = document.getAnnotations(inputASName).get(
annotTypeToCount).size();
document.getFeatures().put(annotTypeToCount + "_count", tokens);
}
@Override
public Resource init() throws ResourceInstantiationException {
System.out.println(getClass().getName() + " is initialising.");
return this;
}
}
2.2. creole.xml
<CREOLE-DIRECTORY>
<JAR>module7.jar</JAR>
<RESOURCE>
<NAME>Document Statistics</NAME>
<CLASS>module7.DocStats</CLASS>
<PARAMETER NAME="annotTypeToCount" RUNTIME="true"
DEFAULT="Token">java.lang.String</PARAMETER>
<PARAMETER NAME="inputASName" RUNTIME="true"
OPTIONAL="true">java.lang.String</PARAMETER>
</RESOURCE>
</CREOLE-DIRECTORY>
3. Confiuration using annotations
3.1. Code
package module7;
import gate.Resource;
import gate.creole.AbstractLanguageAnalyser;
import gate.creole.ExecutionException;
import gate.creole.ResourceInstantiationException;
import gate.creole.metadata.*;
@CreoleResource(name = "Document Statistics",
comment = "Counts annotations in a document")
public class DocStats extends AbstractLanguageAnalyser {
private String annotTypeToCount;
@RunTime
@CreoleParameter(defaultValue = "Token")
public void setAnnotTypeToCount(String t) { annotTypeToCount = t; }
public String getAnnotTypeToCount() { return annotTypeToCount; }
private String inputASName;
@Optional
@RunTime
@CreoleParameter(comment = "The annotation set to use for input")
public void setInputASName(String n) { inputASName = n; }
public String getInputASName() { return inputASName; }
@Override
public void execute() throws ExecutionException {
int tokens = document.getAnnotations(inputASName).get(
annotTypeToCount).size();
document.getFeatures().put(annotTypeToCount + "_count", tokens);
}
@Override
public Resource init() throws ResourceInstantiationException {
System.out.println(getClass().getName() + " is initialising.");
return this;
}
}
3.2. creole.xml
<CREOLE-DIRECTORY> <JAR SCAN="true">module7.jar</JAR> </CREOLE-DIRECTORY>
There are examples of doing more complex statistics and exploring the CreoleRegister in the material from a previous training course.




