protected WeightedGraph<Figure, DefaultWeightedEdge> extractNetwork(JCas jcas, Annotation range) {
SimpleWeightedGraph<Figure, DefaultWeightedEdge> graph = new SimpleWeightedGraph<Figure, DefaultWeightedEdge>(
DefaultWeightedEdge.class);
for (Figure figure : JCasUtil.select(jcas, Figure.class)) {
if (!graph.containsVertex(figure)) {
graph.addVertex(figure);
}
}
for (Scene scene : JCasUtil.select(jcas, Scene.class)) {
List<Speaker> speakers = JCasUtil.selectCovered(Speaker.class, scene);
for (Speaker s1 : speakers) {
Figure gf1 = s1.getFigure();
if (gf1 != null)
for (Speaker s2 : speakers) {
Figure gf2 = s2.getFigure();
if (gf2 != null)
if (graph.containsEdge(gf1, gf2)) {
DefaultWeightedEdge edge = graph.getEdge(gf1, gf2);
double w = graph.getEdgeWeight(edge);
graph.setEdgeWeight(edge, w + 1.0);
} else {
if (gf1 != gf2)
graph.addEdge(gf1, gf2);
}
}
}
;
}
return graph;
}