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});