Przykład użycia skryptu wccl-qa.py 0. Uwagi: *skrypt docelowo będzie wywoływany na tekście otagowanym i (może) ochunkowanym *jeden plik interpretowany jest jako jedno pytanie, tzn. jedno uruchomienie skryptu zwraca jedną etykietę rodzaju pytania, który wynika z właściwości qtype1, qtype2, qtype3 *jeżeli użyto opcji -r (--result) wtedy wynik działania skryptu jest dołączany (append) do wskazanego pliku (nowa etykieta na nowej linii) 1. Przykład działania skryptu: Pytania (przetworzone przy pomocy narzędzi MACA, WCRFT, IOBBER - opis znajduje się poniżej): ./qa-input0.xml: Gdzie jest Bagdad? ./qa-input1.xml: Za ile można kupić buty do biegania? ./qa-input2.xml: Po ilu dniach mogę znowu zacząć śpiewać? ./qa-input3.xml: Za ile godzin będzie można kupić telewizor po niższej cenie? ./qa-prop-match.wccl - plik z regułami definiującymi właściwoci qtype1, qtype2, qtype3 1.1 Uruchomienie skryptu: Uwagi: *qa-inputN.xml: N = {0,1,2,3}: *opcjonalny plik: wccl_processed_output zawiera przetworzony plik wejściowy z dodanymi przez reguły WCCL elementami Uruchomienie: A) z plikiem wejściowym (-I): $> cd ../doc $> ./wccl-qa.py ../examples/qa-prop-match.ccl -I ../examples/qa-inputN.xml -t nkjp -O ~/wccl_processed_output B) ze strumieniem wejściowym: $> cd ../doc $> cat ../examples/qa-inputN.xml | ./wccl-qa.py ../examples/qa-prop-match.ccl -t nkjp -O ~/wccl_processed_output Wyniki działania skryptu (tylko wartość podana po 'OUTPUT: ') otrzymane dla przykładowych pytań oraz rozkład wartości qtypeX będący podstawą do wygenerowania wyniku: * oznaczenie: {wartość właściwości qtypeX:liczba wystąpień na poziomie X:suma wystąpień na wszystkich poziomach}: * położenie OUTPUT oznacza miejsce gdzie następuje podjęcie decyzji (nie są rozpatrywane niższe poziomy qtypeX) qa-input0.xml: Gdzie jest Bagdad? qtype1 = {} qtype2 = {where:1:1} OUTPUT: where qtype3 = {} qa-input1.xml: Za ile można kupić buty do biegania? qtype1 = {price:1:1} OUTPUT: price qtype2 = {} qtype3 = {} qa-input2.xml: Po ilu dniach mogę znowu zacząć śpiewać? qtype1 = {} qtype2 = {price:1:1, time:1:1} qtype3 = {price:0:1, time:1:2} OUTPUT: time qa-input3.xml: Za ile godzin będzie można kupić telewizor po niższej cenie? qtype1 = {price:1:1} OUTPUT: price qtype2 = {price:2:3, time:1:1} qtype3 = {price:0:3, time:1:2} ================================================================== = Wygenerowanie plików wejściowych dla skryptu wccl-qa.py = ================================================================== * %WCRFT_ROOT_DIR% - główny katalog projektu WCRFT * do otagowania przykładowych pytań użyto WCRFT z opcją -i text która korzysta z instalacji programu MACA - może wystąpić konieczność dostosowania w pliku %WCRFT_ROOT_DIR%/config/nkjp.ini konfiguracji MACA'y: macacfg = morfeusz-nkjp ; zależnie od zainstalowanej wersji Morfeusza ; patrz Available configurations w: ; maca-analyse --help * konfiguracji wymaga: - ścieżka do modelu WCRFT (można go pobrać z: http://156.17.129.129/share/) - ścieżka do modelu IOBBERa (obecnie dostępny w projekcie IOBBER w katalogu %IOBBER_ROOT_DIR%/iobber/data/model-kpwr03/) Użycie: $> cd %WCRFT_ROOT_DIR% $> echo "Za ile godzin będzie można kupić telewizor po niższej cenie?" | wcrft/wcrft.py -d /path/to/wcrft/model/model_nkjp10_wcrft -i text config/nkjp.ini - -o ccl | iobber kpwr.ini -d /path/to/iobber/model/model-kpwr03/ - > qa-input3.xml Zamiast przekierowania wyjścia do pliku qa-input3.xml można od razu zastosować skrypt wccl-qa.py: $> cd %WCRFT_ROOT_DIR% $> echo "Za ile godzin będzie można kupić telewizor po niższej cenie?" | wcrft/wcrft.py -d /path/to/wcrft/model/model_nkjp10_wcrft -i text config/nkjp.ini - -o ccl | iobber kpwr.ini -d /path/to/iobber/model/model-kpwr03/ - | %WCCL_ROOT_DIR%/doc/wccl-qa.py %WCCL_ROOT_DIR%/examples/qa-prop-match.ccl -t nkjp