[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
user:zeman:interset:to-do [2007/10/01 17:11]
zeman
user:zeman:interset:to-do [2009/02/17 22:16]
zeman
Line 3: Line 3:
 ===== Infrastructure ===== ===== Infrastructure =====
  
-==== Strict encoding ====+  * 14.3.2008: During the last two weeks I made substantial changes to all the drivers due to extensive driver testing and new strict encoding procedures. After all tests pass successfully, the whole thing should be committed to SVN. Besides, it should be re-tested with the parser adaptation project. 
 +  * Clean up ''tagset::common'' w.r.t. the various algorithms of enforcing permitted values. 
 +  * Query feature value: a shared function detects array and if it is array, searches it for a given value.  
 +  * New test in driver-test.pl: does a driver decode into arrays? If so, what features are affected? If not, is it capable of encoding arrays (i.e. does it call the function that gets rid of arrays)? 
 +  * New test in driver-test.pl: how many tags / what proportion of the tagset are decoded using the ''other'' feature? Enumerate them. Maybe, tags that set the ''other'' feature should not be considered when building the list of possible feature structures? (Sometimes it happens that a feature-value combination is permitted only in an ''other'' tag. Although the set of set/unset features could be used as an additional clue leading to this tag, such tags are often marginal stuff that one does not want to use as default.) 
 +  * Extend the ''print_permitted_fs.pl'' tool so that it can search all available drivers. If it is called that way, it prints the name of the driver in front of every feature structure generated by that driver. Print to STDOUT (now it prints to STDERR). Let the user query and filter the feature structure directly: '$_->{mood} eq "ind" && $_->{other} =~ m/^X/'. Grepping the textual output is less powerful. 
 +  * Include the text of the GNU GPL in the released package. Create a //License// page at this website. 
 +  * Enable checking out the latest development version directly from the Subversion repository.
  
-The encoder should be able to work in two modes: 
-  * Preserving as much information as possible, even if the resulting tag is a new (unexpected by the designers of the tagset) combination of feature values. 
-  * Strictly keeping the original set of possible tags, by forcing selected features to compatible values. This should be default, if available. 
  
-Although this requirement has been known since the very beginning of this work, no driver so far implements strict encoding. It would almost double the work needed to write the encode() function and I have not needed the strict conversions so far. 
  
-The process of strict encoding could be automated using the list() function of the driver. A service function could decode every possible tag (as listed by list()) and build a graph of feature values. The strict encoding would correspond to a path through the graph. Every node in the graph would correspond to a partially encoded tag. The set of edges leaving the node would be pruned so as not to allow any unexpected combination of features. 
  
-The graph would not be constructed in full. Such a process would be too costly. Instead, every feature would be given a numeric priority, and there would be a total ordering of the features according to their priorities. The encoding process would always consider the features with higher priority first, thus the graph would be a tree with as many leaves as there are tags in the tagset.+===== Features and values =====
  
-How will the strict encoding look in practice? A service function will read the feature tree and a set of feature values to be encodedThe function will traverse the tree and adjust the feature values to match tag from the listThen the normal encode() function of the driver will be called. A prerequisite is that the driver keeps the condition encode(decode(x))=xThis has not been tested so far but the drivers indeed should conform to it.+  * Make the form of numbers (digit / roman / word) orthogonal to the cardinal-ordinal distinction, as it is in Multext-East. When tokenization permits, we can have both "5" (cardinal) and "5." (ordinal). 
 +  * Normalize processing of pronouns, determiners, interrogative adverbs etc. Old drivers use different approach from the new ones (beginning with Bulgarian). Pronoun as an independent part of speech will cease to exist. 
 +    * Remove ''pos="pron"''. Distribute pronouns to nouns, adjectives and adverbs. When encoding into a tagset that distinguishes pronouns, detect pronouns by non-empty ''prontype''. Remove subposes of pronouns (''pers'', ''clit''...) 
 +    * Remove ''subpos = pers'' and ''subpos = recip''. These features should now be captured by ''prontype''
 +    * Move ''subpos=clit'' to an independent feature so that it is easier to ask whether pronoun is personal. Or remove the featureThis is connected to the problem of changed processing of pronouns, and of the processing of contracted word forms (see below). 
 +    * Create new value ''prontype = oth''. It will be used when we know that a word is pronoun but we do not know its type and do not want to set the default ''prs'' (personal). 
 +    * Create a new feature or some other means of marking that a Czech pronoun contains an encliticised form of the 2nd person of the auxiliary verb "být", as in "ses", "sis", "tos", "tys". The Multext East tagset defines a special feature called ''clitic_s'', used only in Czech. 
 +  * Find more fine-grained classification of punctuation and symbols. Danish has punctuation proper, symbols (+, $), and strange strings like "U-21"
 +  * Classification of coordinative conjunctions: copulative, adversative etc. Example: sv::mamba. 
 +  * Create overview of common elements that do not have their own part of speech. E.g. infinitive particles. Specifically, make a global classification of "small parts of speech" (pavilón malých šelem :-)), especially particles, adpositions and conjunctions, punctuation and foreign words, hyphenated prefixes and abbreviations(Pronouns, determiners and numerals are excluded as a separate chapter.) 
 +  * Create an overview of verb forms, moods and tenses in various languages, and their representation in DZ Interset. 
 +  * Design methodology for contracted word forms where two different parts of speech have merged in one word. Currently this is solved at different places in different ways. Examples: Czech "proň", "bylť", German "zum" and probably other phenomena in other languages. Enclitical pronouns are special case. In some languages they can or must join a verb or other words (Czech "byls", "sis", "tys", "žes"; Spanish "despiértate", "despertarse", "démelo"). Similar problem (but to much greater extent) arises in Arabic where the grammar often requires small words being glued to big ones (e.g. "wa" (conjunction), "al" (article) etc.)
  
-2 druhy striktního kódování: +==== Things to think about (not sure that these changes should really be made): ====
-  * Opravdu striktní zajistí, že na výstupu se neobjeví značka, která není na seznamu. +
-  * Mírnější přístup tohle nepožaduje, ale pomůže překódovat hodnoty, které se v cílové sadě nevyskytují. Např. pokud cílová sada nezná duál, uděláme z něj plurál, aby cílový ovladač nemusel testovat i duál (resp. on by měl, ale tohle je naše ochrana proti nedbalosti jeho autora). Nicméně nebudeme hlídat, že cílová sada třeba nerozlišuje číslo u přídavných jmen a plurál u nich vůbec nečeká (ale je schopna ho zakódovat).+
  
-==== Service functions ==== +  Sloučit vlastnosti ''verbform'' ''mood''? V současnosti (29.3.2008se ''mood'' vyskytuje v ar::conllbg::conllcs::pdtda::conllde::sttssv::hajic a sadách z nich odvozenýchVšude se vyskytuje pouze u určitých sloves (''verbform fin'')pouze u sv::hajic se vyskytuje ještě u supina, ale tam je stejně uveden indikativ a nic se tím nerozlišuje. Na druhou stranu tože máme způsob (moododdělenýumožňuje nejen říkat tomu správně způsob, ale také nastavit obecné finitní sloveso i dekódování sad značek, které způsob nezachycujíOtázka je, jestli v takovém případě není vždy způsob oznamovacíDivně by to mohlo vypadat v jazycích, kde se způsob tvoří výhradně analyticky, pokud takové jsouPokud tyto rysy zůstanou oddělenémohli zavést nový test (jehož výsledkem by nebyla chybaale jen varování), který by hlídal, že když je nastaven způsob, je slovesný tvar nastaven na ''fin''.
- +
-  Check whether decode() sets only known features. +
-  * Check whether decode() sets features only to known values. +
-  * Unset features: +
-    * Return list of unset features. +
-    * Fill one or all unset features with default values. +
-    * Fill one or all unset features with arrays of all possible values. +
-  * Query feature value: a shared function detects array and if it is array, searches it for given value.  +
-  * Společná funkce: před encode(): máme-li list(), pravděpodobně umíme doplnit povinné neznámé vlastnosti na základě známých(To nám výrazně usnadní strict encoding.) +
- +
-===== Features and values ===== +
- +
-  * Přejmenovat compdeg = norm na pos (pozitiv).  +
-  * Přejmenovat number=plu na plur?  +
-  * Sloučit vlastnosti verbform a mood.  +
-  * Udělat z poss opět jenom subpos? +
-  * Přece jen přidat kategorie zájmen? Dánové majídemonstrativeindefiniteinterrogative/relativepersonalpossessivereciprocalZrušit podkategorie wh? +
-  * Ze subpos=clit udělat samostatnou vlastnostaby se usnadnil dotaz, zda je zájmeno osobní. +
-  * Udělat tu dotazovací funkci (viz výše)! Kromě technické práce s poli ještě přidat hierarchii hodnot: když se někdo ptá na "rel" a já vidím "wh"odkývám mu to! +
-  * Obdobně pro funkci decode() udělat servisní funkcikterá nabídne hodnoty pro nevyplněné vlastnosti na základě jiných vyplněných (např. ukazovací zájmeno implikuje určitost a atributivnost). Musí se to ale pořádně promyslet - např. pokud jazyk nemá compdeg=abs, je pro něj asi nejlepší supjak ale víme, že nemá abs? +
-  * Udělat ehled častých prvků, které nemají vlastní slovní druhNapř. jak se ří částice označující infinitiv. +
-  * Jemněji roztřídit interpunkciDánové mají vlastní interpunkcipotom symboly (+$), potom podivnostikteré my ani za interpunkci nepovažujeme. "U-21"+
-  * Předělat binární vlastnosti na hodnoty "yes" a "no"+
-  * Přejmenovat compdeg na degree.+
   * Příčestí by mělo mít vlastní slovní druh. S tím, že některé sady ho řadí pod sloveso a jiné pod přídavné jméno, jsou jenom problémy.   * Příčestí by mělo mít vlastní slovní druh. S tím, že některé sady ho řadí pod sloveso a jiné pod přídavné jméno, jsou jenom problémy.
-  * Subjektform a objektform u švédských zájmen asi není samostatná vlastnost! Mělo by se to prohlásit za pády (nominativ akuzativ)! +  * Pokud se osvědčí nové třídění zájmen, posvítit si i na číslovky. Některé přesunout k zájmenům ("kolik", "kolikátý"), jiné jako zvláštní podkategorie podstatných jmen ("čtvrtina", "sedmero"), přídavných jmen ("čtvrtý", "dvojí"příslovcí ("čtyřikrát", "poprvé"). 
-  * Členy zájmena by se možná vůbec měly rozlišit jinakNa nejvyšší úrovni by se rozlišovala substantivnost/atributivnost, pak teprve zda to má být raději člen nebo zájmeno. Případně osobní a ivlastňovací zájmena by mohla být zvlášť už na nejvyšší úrovniprotože ta se s žádnými členy plést nebudou.+  * Předělat binární vlastnosti na hodnoty "yes" "no". Nebo "1" a "0"? Nebo "1" a ""? (Tohle by se na rozdíl od "yes" a "no" alespoň lépe používalo Perlu.) 
 +  * Přejmenovat number = plu na plur?  
 +  * Zrušit ''subpos = voc''Zatím se používá pro vokalizované tvary českých předložek v cs::pdt (a odvozeném cs::conll; nikde jinde). Místo toho by se ale dalo využít ''variant = long''. U tříd předložek to teď narušuje členění na edložkyzáložky a "okololožky" (cirkumpozice). **Problém:** jak vokalizované, tak nevokalizované předložky se také vyskytují ''variant = 1''. Nemůžu do jednoho rysu nacpat současně ''long'' a ''1'', a nemůžu ani říct, že z ''1'' taky plyne vokalizovanost. 
 +  * Define new value //pluralia tantum// (''ptan'') of ''number''? It is present in the Bulgarian CoNLL tagset and it could theoretically be present in other languages, including Czech.
  
 ===== Specific drivers ===== ===== Specific drivers =====
  
   * cs::pdt - reimplement "type L" pronouns as collective pronouns (introduced due to Bulgarian)   * cs::pdt - reimplement "type L" pronouns as collective pronouns (introduced due to Bulgarian)
- +  * cs::pdt use the new feature ''prepcase'' (introduced due to Portuguesein distinguishing pronoun forms "jemu" vs. "němu"
-===== Paper notes ===== +
- +
-==== Time needed for tag set conversion ==== +
- +
-Poznámky o časové náročnosti konverze morfologických značek +
------------------------------------------------------------ +
- +
-Ruský treebank (nejen značky, ale vůbec převod formátu): +
-12:36 +
- +
-Arabské značky (Otovy i Buckwalterovy, ještě bez Intersetu, 22.3.2006): +
-4:45+1+1:40 = 7:25 +
- +
-České značky PDT (přes 4000 značek; jádro Intersetu vzniklo jako vedlejší produkt, když jsem dělal tohle) +
-asi 2 dny, tedy dejme tomu 18 hodin +
- +
-Dánské značky DDT/Parole (144 značek s košatým popisem) +
-asi 7 hodin +
- +
-Švédské značky Mamba (48 značek) +
-asi 3 hodiny +
- +
-Penn Treebank (36 značek) +
-asi 3 hodiny, ale tady jsem to ještě neměřil, takže to je jen hrubý zpětný odhad +
- +
-Hajičovy švédské značky +
-0:32 tady zjevně chybí úplná statistika +
- +
-Arabské značky CoNLL +
-4:33+5:19+3:16 = 13:08 +
- +
-České značky PDT (CoNLL verze? Nebo to jsou jen opravy, když jsem začal ovladače testovat?) +
-1:44+3:20+6:05 = 11:09 +
- +
-Bulharské značky CoNLL +
-0:20+1:00+0:26+5:44+2:00+6:15+1:20+0:46+1:26+2:30+0:48 = 22:35 +
-(ale u bulharštiny jsem se dost natrápil s jevy, které do té doby nebyly v intersetu podchycené) +
- +
-Anglické značky CoNLL +
-0:48 - možná tady chybí statistika, ale možná taky ne, protože stačilo upravit existující ovladač Penn Treebanku, ne? +
- +
-Žádné z výše uvedených převodů (tedy vše napsané před říjnem 2007) ještě neměly k dispozici chytré funkce pro nahrazování nepovolených hodnot. +

[ Back to the navigation ] [ Back to the content ]