API¶
Wczytywanie dokumentów¶
StreamReader reader = ReaderFactory.get().getStreamReader({ścieżka do pliku}, {format}); Document doc = reader.nextDocument();
Ręcznie tworzenie dokumentów¶
Tworzenie tokenu:
Token tok = new Token({orth}, new Tag({base}, {ctag}, {disamb (true|false)})); tok.setId({id}); // nie wymagane tok.noSpaceAfter({true|false}); // określa czy po tokenie następuje spacja - domyślnie false (czyli sapcja wysŧepuje) tok.addTag(new Tag({base}, {ctag}, {disamb (true|false)}));//dodanie kolejnego tagu
Tworzenie Zdania:
Sentence sent = new Sentence(); sent.setId({id}); // nie wymagane sent.addToken(tok);
Dodawanie anotacji do zdania:
Annotation ann = new Annotation({początek}, {koniec},{kanał anotacji}, {zdanie(obiekt Sentence)}); ann.setHead({index}); //oznaczenie głowy anotacji - niewymagane sent.addChunk(ann);
Tworzenie Paragrafu:
Paragraph p = new Paragraph({id}); p.addSentence(sent);
Tworzenie Dokumentu:
TokenAttributeIndex attrs = new TokenAttributeIndex(); // lista zawierająca indeksy atrybutów tokenów attrs.addDefaultAttributes(); Document doc = new Document(); doc.setAttributeIndex(attrs);
TokenAttributeIndex - obiekt jest przekazywany do nowo dodanej części dokumentu podczas wykonywania metod addParagraph() oraz addSentence(),
dlatego należy utworzyc go jedynie dla elementu będącego korzeniem utworzonej przez nas struktury danych.
Przykład utworzenia dokumentu:
TokenAttributeIndex attrs = new TokenAttributeIndex(); attrs.addDefaultAttributes(); Document doc = new Document(); doc.setAttributeIndex(attrs); Paragraph p = new Paragraph("ch1"); Sentence sent = new Sentence(); sent.setId("s1"); // nie wymagane //utworzenie tokenów Token t0 = new Token("Ala", new Tag("ala", "subst:sg:nom:f", false)); //false - wartość parametru disamb Token t1 = new Token("ma", new Tag("mieć", "fin:sg:ter:imperf", false)); t2.addTag(new Tag("mój", "adj:sg:nom:f:pos", false)); //dodanie kolejnego tagu Token t2 = new Token("kota", new Tag("kot","subst:sg:gen:m1", false)); t3.setNoSpaceAfter(true); Token t3 = new Token(".", new Tag(".", "interp", false)); sent.addToken(t0); sent.addToken(t1); sent.addToken(t2); sent.addToken(t3); //dodawanie anotacji do zdania Annotation ann = new Annotation(0,0,"nam",sent); sent.addChunk(ann); p.addSentence(sent); doc.addParagraph(p);
Tworzenie obiektu zawierającego konfigurację¶
LinerOptions opts = new LinerOptions(); opts.loadIni({plik konfiguracyjny});
Tworzenie obiektu generatora cech¶
TokenFeatureGenerator gen = new TokenFeatureGenerator(opts.features); gen.generateFeatures({document});
Tworzenie obiektu ChunkerManager¶
ChunkerManager zawiera zbiór chunkerów zdefiniowanych z konfiguracji.
ChunkerManager cm = ChunkerFactory.loadChunkers(opts);
Do konfiguracji możemy dodawać dynamicznie nowe chunkery:
cm.addChunker({nazwa chunkera}, {opis konfiguracji});
Przykładowo:
cm.addChunker("cw", "wccl:/home/michal/Downloads/sample.wccl");
Tworzenie obiektu chunkera¶
Chunker chunker = cm.getChunkerByName({nazwa chunkera});
Domyślnie należy użyć chunkera zdefiniowanego w konfiguracji jako nadrzędny:
Chunker chunker = cm.getChunkerByName(opts.getOptionUse());
Użycie:
HashMap<Sentence, AnnotationSet> result = chunker.chunk({document}); lub chunker.chunkInPlace({document});
Przykład przetwarzania wczytanego/utworzonego wcześniej dokumentu¶
LinerOptions opts = new LinerOptions(); opts.loadIni({plik konfiguracyjny}); TokenFeatureGenerator gen = new TokenFeatureGenerator(opts.features); gen.generateFeatures({document}); ChunkerManager cm = ChunkerFactory.loadChunkers(opts); Chunker ch = cm.getChunkerByName(opts.getOptionUse()); ch.chunkInPlace({document});
Zapis dokumentu¶
StreamWriter writer = WriterFactory.get().getStreamWriter({ścieżka do pliku}, {format}); writer.writeDocument({document});