ChunkSampleStream extends FilterObjectStream<Parse, ChunkSample> { public ChunkSample read() throws IOException { Parse parse = samples.read(); if (parse != null) { Parse[] chunks = getInitialChunks(parse); List<String> toks = new ArrayList<String>(); List<String> tags = new ArrayList<String>(); List<String> preds = new ArrayList<String>(); for (int ci = 0, cl = chunks.length; ci < cl; ci++) { Parse c = chunks[ci]; if (c.isPosTag()) { toks.add(c.getCoveredText()); tags.add(c.getType()); preds.add(Parser.OTHER); } else { boolean start = true; String ctype = c.getType(); Parse[] kids = c.getChildren(); for (int ti=0,tl=kids.length;ti<tl;ti++) { Parse tok = kids[ti]; toks.add(tok.getCoveredText()); tags.add(tok.getType()); if (start) { preds.add(Parser.START + ctype); start = false; } else { preds.add(Parser.CONT + ctype); } } } } return new ChunkSample(toks.toArray(new String[toks.size()]), tags.toArray(new String[tags.size()]), preds.toArray(new String[preds.size()])); } else { return null; } } ChunkSampleStream(ObjectStream<Parse> in); static Parse[] getInitialChunks(Parse p); ChunkSample read();  }
@Test public void testConvertParseToPosSample() throws IOException { ObjectStream<ChunkSample> chunkSampleStream = new ChunkSampleStream(new ParseSampleStream( ObjectStreamUtils.createObjectStream(ParseTest.PARSE_STRING))); ChunkSample sample = chunkSampleStream.read(); assertEquals("She", sample.getSentence()[0]); assertEquals("PRP", sample.getTags()[0]); assertEquals("S-NP", sample.getPreds()[0]); assertEquals("was", sample.getSentence()[1]); assertEquals("VBD", sample.getTags()[1]); assertEquals("O", sample.getPreds()[1]); assertEquals("just", sample.getSentence()[2]); assertEquals("RB", sample.getTags()[2]); assertEquals("S-ADVP", sample.getPreds()[2]); assertEquals("another", sample.getSentence()[3]); assertEquals("DT", sample.getTags()[3]); assertEquals("S-NP", sample.getPreds()[3]); assertEquals("freighter", sample.getSentence()[4]); assertEquals("NN", sample.getTags()[4]); assertEquals("C-NP", sample.getPreds()[4]); assertEquals("from", sample.getSentence()[5]); assertEquals("IN", sample.getTags()[5]); assertEquals("O", sample.getPreds()[5]); assertEquals("the", sample.getSentence()[6]); assertEquals("DT", sample.getTags()[6]); assertEquals("S-NP", sample.getPreds()[6]); assertEquals("States", sample.getSentence()[7]); assertEquals("NNPS", sample.getTags()[7]); assertEquals("C-NP", sample.getPreds()[7]); assertEquals(",", sample.getSentence()[8]); assertEquals(",", sample.getTags()[8]); assertEquals("O", sample.getPreds()[8]); assertEquals("and", sample.getSentence()[9]); assertEquals("CC", sample.getTags()[9]); assertEquals("O", sample.getPreds()[9]); assertEquals("she", sample.getSentence()[10]); assertEquals("PRP", sample.getTags()[10]); assertEquals("S-NP", sample.getPreds()[10]); assertEquals("seemed", sample.getSentence()[11]); assertEquals("VBD", sample.getTags()[11]); assertEquals("O", sample.getPreds()[11]); assertEquals("as", sample.getSentence()[12]); assertEquals("RB", sample.getTags()[12]); assertEquals("S-ADJP", sample.getPreds()[12]); assertEquals("commonplace", sample.getSentence()[13]); assertEquals("JJ", sample.getTags()[13]); assertEquals("C-ADJP", sample.getPreds()[13]); assertEquals("as", sample.getSentence()[14]); assertEquals("IN", sample.getTags()[14]); assertEquals("O", sample.getPreds()[14]); assertEquals("her", sample.getSentence()[15]); assertEquals("PRP$", sample.getTags()[15]); assertEquals("S-NP", sample.getPreds()[15]); assertEquals("name", sample.getSentence()[16]); assertEquals("NN", sample.getTags()[16]); assertEquals("C-NP", sample.getPreds()[16]); assertEquals(".", sample.getSentence()[17]); assertEquals(".", sample.getTags()[17]); assertEquals("O", sample.getPreds()[17]); assertNull(chunkSampleStream.read()); }