Zadanie #1442
Wrappery pytonowe
Status: | Zamknięty | Start date: | 20 Apr 2011 | |
---|---|---|---|---|
Priority: | Normalny | Due date: | ||
Assignee: | Adam Radziszewski | % Done: | 100% | |
Category: | - | |||
Target version: | - |
Description
Wrappery powinnny być z osobno do corpus2, osobno do wccl (najlepiej, żeby CMake od obu projektów pozwalało na zbudowanie pytonowych zależności, Tomek tu deklaruje pomoc).
Wrappery libcorpus powinny pozwalać na:
• stworzenie dowolnego readera poprzez fabrykę (podajemy string określający typ readera i opcjonalne argumenty, np. "xces,strict" i nazwę pliku)
• stworzenie dowolnego writera analogicznie
• dostęp do akapitów (klasa chunk), tokenów, leksemów, tagów
• utworzenie tagsetu za pomocą fabryki (przez podanie nazwy tagsetu, to jest chyba w tagset_manager)
• parsowanie tagów i pojedynczego symbolu tagsetu, tj. Tagset::parse_symbol, Tagset::parse_tag (nie chodzi o to, by były dostępne te wszystkie finezyjne wywołania, ale żeby dało się przeparsować pojedynczy tag na podstawie przekazanego stringa i tyle — w razie potrzeby Tomek pomoże, można przemyśleć dodanie prostszego wariantu tego API do klasy Tagset)
• Tagset::make_ign_tag się przyda (bezargumentowa funkcja),
• Tagset::tag_to_string — ważne
• Tag::mask_with itp. (to powinno się samo opakować)
• Lexeme — podstawowe funkcje, tj. is_disamb, set_disamb, lemma_utf8, tag, set_tag
• Sentence — podstawowe funkcje, tj. size, pobranie jednego tokenu, w mairę możliwości pobranie wszystkich (funkcja tokens), append_token.
• Chunk (akapit) — podstawowe funkcje, tj. size, pobranie wszystkich zdań jako lista (sentences), warto też opakować te proste has_attr i get_attr (przyda się do pobrania nazwy akapitu)
Wrappery pytonowe na WCCL powinny pozwalać na:
• utworzenie obiektu parsera na podstawie podanego tagsetu (można skorzystać z tej fabryki tagsetów)
• przeparsowanie pliku o podanej nazwie (niestety w API parsera nie widzę takiej możliwości — jest tam parsowanie strumienia i stringa — a cały plik nie powinien być ładowany najpierw do jednego stringa) — trzeba będzie to przerobić chyba, dodając parsowanie pliku o podanej nazwie do parsera WCCL-a
• dostęp do obiektu zwróconego przez parser, tj. obiekty Operator<typ>, trzeba chyba będzie zrobić typedefy
• dostęp do obiektu RuleSeq zwróconego przez parser po przeparsowaniu reguł
• utworzenie obiektu SentenceContext na zdaniu
• odpalenie obiektu Operator na SentenceContext, zapis zwróconego wyniku jako string, możliwość grzebania w wartościach przypisanych zmiennym
• odpalenie reguł na zdaniu i zapis zdania z powrotem do pliku za pomocą writera utworzonego przez fabrykę z libcorpus2
Trochę tego dużo wyszło. Jak coś będzie trudne, to daj znać — a może to obetniemy.
History
#1 Updated by Paweł Kędzia over 12 years ago
- Status changed from Nowy to Przypisany
- Assignee changed from Paweł Kędzia to Adam Radziszewski
- % Done changed from 0 to 90
Nie zamykam, bowiem trzeba jeszcze to i owo potestować.
#2 Updated by Adam Radziszewski over 12 years ago
- Status changed from Przypisany to Zamknięty
- % Done changed from 90 to 100
Na testy i przykładowy kod robię osobne zagadnienie