Błąd #1266

Wyjątkowo słabe uzgodnienie w unify

Added by Adam Wardyński almost 13 years ago. Updated over 12 years ago.

Status:ZamkniętyStart date:15 Feb 2011
Priority:NormalnyDue date:
Assignee:Adam Radziszewski% Done:

0%

Category:-
Target version:-

Description

Po rozpatrzeniu błędu 1264 zobaczyłem, że wywala się inny test z testu unify o "kobiecie nie bitej". Ale wg mnie unify działa zgodnie ze specyfikacją czyli "wyjątkowo słabym uzgodnieniem" tzn. nie spełnianym nawet przez końce zakresu. Ale to pewnie wynika z niezrozumienia specyfikacji, które z kolei może wynikać z nieścisłości w specyfikacji =)

Muszę jeszcze raz poczytać spec, a tymczasem przekazuję to pod rozważenie Tobie, Adamie R.

Zasadnicze pytanie wynikające z przykładu poniżej, to czy to "wyjątkowo słabe" uzgodnienie nadal musi mieć przynajmniej jedną pasującą kategorię na obu końcach
// eee chyba to można by zapisać jako
// category_count(początkowy_token | końcowy_token | attribs) >= 1

Wracając do "kobiety nie bitej" (przykładu testowego) trzy tokeny "to jak kosa" i reguła

rules(
    rule("unify3-case",
        not(
            equal(cas[0], {}),
            equal(cas[2], {})
        ),
        unify(0, 2, {nmb, gnd, cas})
    )
)
   <tok>
    <orth>to</orth>
    <lex><base>ten</base><ctag>adj:sg:nom:n:pos</ctag></lex>
    <lex><base>ten</base><ctag>adj:sg:acc:n:pos</ctag></lex>
    <lex><base>ten</base><ctag>adj:sg:voc:n:pos</ctag></lex>
    <lex><base>to</base><ctag>conj</ctag></lex>
   </tok>
   <tok>
    <orth>jak</orth>
    <lex><base>jak</base><ctag>conj</ctag></lex>
    <lex><base>jak</base><ctag>subst:sg:nom:m1</ctag></lex>
    <lex><base>jak</base><ctag>subst:sg:nom:m2</ctag></lex>
    <lex><base>jak</base><ctag>subst:sg:nom:m3</ctag></lex>
    <lex><base>jaka</base><ctag>subst:pl:gen:f</ctag></lex>
   </tok>
   <tok>
    <orth>kosa</orth>
    <lex><base>kosa</base><ctag>subst:sg:nom:f</ctag></lex>
    <lex><base>kosy</base><ctag>adj:sg:nom:f:pos</ctag></lex>
    <lex><base>kosy</base><ctag>adj:sg:voc:f:pos</ctag></lex>
   </tok>

Z pliku out wynika, że oczekuje się że te tokeny zostaną, jak są, tymczasem obecny algorytm pozostawia
  <tok>
    <orth>to</orth>
    <lex><base>to</base><ctag>conj</ctag></lex>
   </tok>
   <tok>
    <orth>jak</orth>
    <lex><base>jak</base><ctag>conj</ctag></lex>
   </tok>
   <tok>
    <orth>kosa</orth>
    <lex><base>kosa</base><ctag>subst:sg:nom:f</ctag></lex>
    <lex><base>kosy</base><ctag>adj:sg:nom:f:pos</ctag></lex>
    <lex><base>kosy</base><ctag>adj:sg:voc:f:pos</ctag></lex>
   </tok>

I w zasadzie tak jak na to patrzę, to jest to zgodnie z moim zrozumieniem specyfikacji. Token "to" posiada cas, zarówno jak "kosa", zatem warunek wstępny jest spełniony. Teraz pytanie o słabe uzgodnienie na wszystkich trzech tokenach. Kwestia sporna jest, czy istnieje uzgodnienie, czy nie - wg mnie, wg tego co było powiedziane, uzgodnienie istnieje, bo token "to" oraz "jak" ma zupełnie niedospecyfikowane lexemy "conj", zatem oba zgadzają się z dowolnymi leksemami tokenu "kosa". Bo miało być, że uzgodnienie słabe może zachodzić także na końcu zakresu, a jak rozumiem uzgodnienie słabe istnieje przez niedospecyfikowany leksem.

Ale pewnie tak jak pisałem na początku chodzi o to, żeby mimo wszystko końce zakresu wchodziły w uzgodnienie używając co najmniej jednej kategorii z zadanych, a nie zupełnie niedospecyfikowanego lexemu.


Related issues

Related to WCCL - Błąd #1264: Unifikacja nie wykreśla leksemów, gdy są niedospecyfikowa... Zamknięty 15 Feb 2011

History

#1 Updated by Adam Radziszewski almost 13 years ago

  • Status changed from Nowy to Rozwiązany

Nie, to wynikało z mojego niezrozumienia specyfikacji :) Masz rację, to zachowanie jest prawidłowe. Nie pomyślałem, że unifikacja może w szczególności prowadzić do pozostawienia tylko jednego tokenu z określonymi wartościami atrybutów. Wychodzi teraz na to, że może prowadzić nawet do wywalenia wszystkich takich leksemów i jest to prawidłowe.

A pisząc tę regułę nie pomyślałem, że not(equal(cas[0], {}), equal(cas[2], {})) odpali się też tam, gdzie będą i leksemy z podanym przypadkiem, i te bez (token to).

Fix: poprawiłem test.

#2 Updated by Adam Radziszewski over 12 years ago

  • Status changed from Rozwiązany to Zamknięty

Also available in: Atom PDF