}
ObjectStream<String> untokenizedLineStream =
new PlainTextByLineStream(new InputStreamReader(System.in));
PerformanceMonitor perfMon = new PerformanceMonitor(System.err, "sent");
perfMon.start();
try {
String line;
while((line = untokenizedLineStream.read()) != null) {
String whitespaceTokenizerLine[] = WhitespaceTokenizer.INSTANCE.tokenize(line);
// A new line indicates a new document,
// adaptive data must be cleared for a new document
if (whitespaceTokenizerLine.length == 0) {
for (int i = 0; i < nameFinders.length; i++)
nameFinders[i].clearAdaptiveData();
}
List<Span> names = new ArrayList<Span>();
for (TokenNameFinder nameFinder : nameFinders) {
Collections.addAll(names, nameFinder.find(whitespaceTokenizerLine));
}
// Simple way to drop intersecting spans, otherwise the
// NameSample is invalid
Span reducedNames[] = NameFinderME.dropOverlappingSpans(
names.toArray(new Span[names.size()]));
NameSample nameSample = new NameSample(whitespaceTokenizerLine,
reducedNames, false);
System.out.println(nameSample.toString());
perfMon.incrementCounter();
}
}
catch (IOException e) {
CmdLineUtil.handleStdinIoError(e);
}
perfMon.stopAndPrintFinalResult();
}