}
// ObjectStream<String> untokenizedLineStream =
// new PlainTextByLineStream(new InputStreamReader(System.in));
ObjectStream<String> untokenizedLineStream;
PerformanceMonitor perfMon = new PerformanceMonitor(System.err, "sent");
perfMon.start();
try {
untokenizedLineStream =
new PlainTextByLineStream(new SystemInputStreamFactory(), SystemInputStreamFactory.encoding());
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 (NameFinderME nameFinder : nameFinders) {
nameFinder.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();
}
}