Commit bbe81abc0d41162b7139c08518ab38c70c246d17

Authored by Michał Lenart
1 parent 36a8a252

dodanie opcji "debug" + małe porządki

git-svn-id: svn://svn.nlp.ipipan.waw.pl/morfeusz/morfeusz@141 ff4e3ee1-f430-4e82-ade0-24591c43f1fd
CMakeLists.txt
@@ -36,7 +36,7 @@ if ("${INPUT_DICTIONARIES}" STREQUAL "") @@ -36,7 +36,7 @@ if ("${INPUT_DICTIONARIES}" STREQUAL "")
36 if ("${EMPTY_INPUT_DICTIONARY}" STREQUAL "TRUE") 36 if ("${EMPTY_INPUT_DICTIONARY}" STREQUAL "TRUE")
37 set (INPUT_DICTIONARIES ${PROJECT_SOURCE_DIR}/input/empty.txt) 37 set (INPUT_DICTIONARIES ${PROJECT_SOURCE_DIR}/input/empty.txt)
38 else () 38 else ()
39 - set (INPUT_DICTIONARIES "${PROJECT_SOURCE_DIR}/input/sgjp-hom.tab,${PROJECT_SOURCE_DIR}/input/dodatki.tab") 39 + set (INPUT_DICTIONARIES "${PROJECT_SOURCE_DIR}/input/PoliMorfSmall.tab,${PROJECT_SOURCE_DIR}/input/dodatki.tab")
40 endif () 40 endif ()
41 endif () 41 endif ()
42 42
fsabuilder/morfeuszbuilder/fsa/fsa.py
@@ -41,7 +41,7 @@ class FSA(object): @@ -41,7 +41,7 @@ class FSA(object):
41 self.n += 1 41 self.n += 1
42 42
43 # debug 43 # debug
44 - if self.n % 100000 == 0: 44 + if self.n == 1 or self.n % 10000 == 0:
45 logging.info(u'%d %s' % (self.n, word)) 45 logging.info(u'%d %s' % (self.n, word))
46 # logging.info(str(self.register.getStatesNum())) 46 # logging.info(str(self.register.getStatesNum()))
47 # allWords.append(word) 47 # allWords.append(word)
input/PoliMorfSmall.tab
@@ -707,3 +707,5 @@ dwu dwa num:comp @@ -707,3 +707,5 @@ dwu dwa num:comp
707 dwu dwa num:pl:gen.dat.loc:m1.m2.m3.n2.f:congr 707 dwu dwa num:pl:gen.dat.loc:m1.m2.m3.n2.f:congr
708 dwu dwa num:pl:inst:m1.m2.m3.n2:congr 708 dwu dwa num:pl:inst:m1.m2.m3.n2:congr
709 dwu dwa num:pl:nom.acc.voc:m1:rec 709 dwu dwa num:pl:nom.acc.voc:m1:rec
  710 +bliżsi bliski adj:pl:nom.voc:m1.p1:com
  711 +najbliżsi bliski adj:pl:nom.voc:m1.p1:sup
input/dodatki.tab
@@ -8,19 +8,50 @@ @@ -8,19 +8,50 @@
8 7 7 dig 8 7 7 dig
9 8 8 dig 9 8 8 dig
10 9 9 dig 10 9 9 dig
  11 +I I romandig
  12 +V V romandig
  13 +X X romandig
  14 +C C romandig
  15 +M M romandig
  16 +pół pół num:comp
11 ń on ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep 17 ń on ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep
12 by by qub 18 by by qub
13 naj naj 19 naj naj
14 nie nie 20 nie nie
15 się się qub 21 się się qub
  22 +wolnoć wolnoć pred
16 - - interp 23 - - interp
  24 +– – interp
  25 +— — interp
17 . . interp 26 . . interp
18 , , interp 27 , , interp
19 ( ( interp 28 ( ( interp
20 ) ) interp 29 ) ) interp
  30 +[ [ interp
  31 +] ] interp
21 " " interp 32 " " interp
22 „ „ interp 33 „ „ interp
23 ” ” interp 34 ” ” interp
  35 +‹ ‹ interp
  36 +› › interp
  37 +« « interp
  38 +» » interp
  39 +: : interp
  40 +! ! interp
  41 +? ? interp
  42 +; ; interp
  43 +… … interp
  44 +* * interp
  45 +§ § interp
  46 +% % interp
  47 +:-) :-) emoticon
  48 +:) :) emoticon
  49 +;-) ;-) emoticon
  50 +;) ;) emoticon
  51 +:-)) :-)) emoticon
  52 +:)) :)) emoticon
  53 +;-)) ;-)) emoticon
  54 +;)) ;)) emoticon
24 to to pred 55 to to pred
25 a A brev:pun 56 a A brev:pun
26 b B brev:pun 57 b B brev:pun
@@ -219,4 +250,141 @@ energo energo prefa @@ -219,4 +250,141 @@ energo energo prefa
219 para para prefa 250 para para prefa
220 para para prefs 251 para para prefs
221 ś ś prefv 252 ś ś prefv
222 -wg wg brev:npun 253 +wibro wibro prefa
  254 +wibro wibro prefs
  255 +izo izo prefa
  256 +izo izo prefs
  257 +anarcho anarcho prefs
  258 +anarcho anarcho prefa
  259 +antropo antropo prefs
  260 +antropo antropo prefa
  261 +łże łże prefs
  262 +łże łże prefa
  263 +wewnątrz wewnątrz prefa
  264 +niedo niedo prefppas
  265 +o +o+ morphconj
  266 +kredyto kredyt substa
  267 +trawo trawa substa
  268 +dupa dupo substa
  269 +biorcą +biorca subst:sg:inst:m1 pospolita
  270 +biorce +biorca depr:pl:nom:m2 pospolita
  271 +biorce +biorca depr:pl:voc:m2 pospolita
  272 +biorcę +biorca subst:sg:acc:m1 pospolita
  273 +biorco +biorca subst:sg:voc:m1 pospolita
  274 +biorcom +biorca subst:pl:dat:m1 pospolita
  275 +biorców +biorca subst:pl:acc:m1 pospolita
  276 +biorców +biorca subst:pl:gen:m1 pospolita
  277 +biorcy +biorca subst:pl:nom:m1 pospolita
  278 +biorcy +biorca subst:pl:voc:m1 pospolita
  279 +biorcy +biorca subst:sg:dat:m1 pospolita
  280 +biorcy +biorca subst:sg:gen:m1 pospolita
  281 +biorcy +biorca subst:sg:loc:m1 pospolita
  282 +dawcach +dawca subst:pl:loc:m1 pospolita
  283 +dawca +dawca subst:sg:nom:m1 pospolita
  284 +dawcami +dawca subst:pl:inst:m1 pospolita
  285 +dawcą +dawca subst:sg:inst:m1 pospolita
  286 +dawce +dawca depr:pl:nom:m2 pospolita
  287 +dawce +dawca depr:pl:voc:m2 pospolita
  288 +dawcę +dawca subst:sg:acc:m1 pospolita
  289 +dawco +dawca subst:sg:voc:m1 pospolita
  290 +dawcom +dawca subst:pl:dat:m1 pospolita
  291 +dawców +dawca subst:pl:acc:m1 pospolita
  292 +dawców +dawca subst:pl:gen:m1 pospolita
  293 +dawcy +dawca subst:pl:nom:m1 pospolita
  294 +dawcy +dawca subst:pl:voc:m1 pospolita
  295 +dawcy +dawca subst:sg:dat:m1 pospolita
  296 +dawcy +dawca subst:sg:gen:m1 pospolita
  297 +dawcy +dawca subst:sg:loc:m1 pospolita
  298 +żerca +żerca subst:sg:nom:m1 pospolita
  299 +żercą +żerca subst:sg:inst:m1 pospolita
  300 +żerce +żerca depr:pl:nom:m2 pospolita
  301 +żerce +żerca depr:pl:voc:m2 pospolita
  302 +żercę +żerca subst:sg:acc:m1 pospolita
  303 +żercom +żerca subst:pl:dat:m1 pospolita
  304 +żerco +żerca subst:sg:voc:m1 pospolita
  305 +żerców +żerca subst:pl:acc:m1 pospolita
  306 +żerców +żerca subst:pl:gen:m1 pospolita
  307 +żercy +żerca subst:pl:nom:m1 pospolita
  308 +żercy +żerca subst:pl:voc:m1 pospolita
  309 +żercy +żerca subst:sg:dat:m1 pospolita
  310 +żercy +żerca subst:sg:gen:m1 pospolita
  311 +żercy +żerca subst:sg:loc:m1 pospolita
  312 +znawcach +znawca subst:pl:loc:m1 pospolita
  313 +znawcami +znawca subst:pl:inst:m1 pospolita
  314 +znawca +znawca subst:sg:nom:m1 pospolita
  315 +znawcą +znawca subst:sg:inst:m1 pospolita
  316 +znawce +znawca depr:pl:nom:m2 pospolita
  317 +znawce +znawca depr:pl:voc:m2 pospolita
  318 +znawcę +znawca subst:sg:acc:m1 pospolita
  319 +znawcom +znawca subst:pl:dat:m1 pospolita
  320 +znawco +znawca subst:sg:voc:m1 pospolita
  321 +znawców +znawca subst:pl:acc:m1 pospolita
  322 +znawców +znawca subst:pl:gen:m1 pospolita
  323 +znawcy +znawca subst:pl:nom:m1 pospolita
  324 +znawcy +znawca subst:pl:voc:m1 pospolita
  325 +znawcy +znawca subst:sg:dat:m1 pospolita
  326 +znawcy +znawca subst:sg:gen:m1 pospolita
  327 +znawcy +znawca subst:sg:loc:m1 pospolita
  328 +maniacy +maniak subst:pl:nom:m1 pospolita
  329 +maniacy +maniak subst:pl:voc:m1 pospolita
  330 +maniakach +maniak subst:pl:loc:m1 pospolita
  331 +maniaka +maniak subst:sg:acc:m1 pospolita
  332 +maniaka +maniak subst:sg:gen:m1 pospolita
  333 +maniakami +maniak subst:pl:inst:m1 pospolita
  334 +maniakiem +maniak subst:sg:inst:m1 pospolita
  335 +maniaki +maniak depr:pl:nom:m2 pospolita
  336 +maniaki +maniak depr:pl:voc:m2 pospolita
  337 +maniak +maniak subst:sg:nom:m1 pospolita
  338 +maniakom +maniak subst:pl:dat:m1 pospolita
  339 +maniakowi +maniak subst:sg:dat:m1 pospolita
  340 +maniaków +maniak subst:pl:acc:m1 pospolita
  341 +maniaków +maniak subst:pl:gen:m1 pospolita
  342 +lodzy +log subst:pl:nom:m1 pospolita
  343 +lodzy +log subst:pl:voc:m1 pospolita
  344 +logach +log subst:pl:loc:m1 pospolita
  345 +loga +log subst:sg:acc:m1 pospolita
  346 +loga +log subst:sg:gen:m1 pospolita
  347 +logami +log subst:pl:inst:m1 pospolita
  348 +log +log subst:sg:nom:m1 pospolita
  349 +logiem +log subst:sg:inst:m1 pospolita
  350 +logi +log depr:pl:nom:m2 pospolita
  351 +logi +log depr:pl:voc:m2 pospolita
  352 +logom +log subst:pl:dat:m1 pospolita
  353 +logowie +log subst:pl:nom:m1 pospolita
  354 +logowie +log subst:pl:voc:m1 pospolita
  355 +logowi +log subst:sg:dat:m1 pospolita
  356 +logów +log subst:pl:acc:m1 pospolita
  357 +logów +log subst:pl:gen:m1 pospolita
  358 +logu +log subst:sg:loc:m1 pospolita
  359 +logu +log subst:sg:voc:m1 pospolita
  360 +logiach +logia subst:pl:loc:f pospolita
  361 +logia +logia subst:sg:nom:f pospolita
  362 +logiami +logia subst:pl:inst:f pospolita
  363 +logią +logia subst:sg:inst:f pospolita
  364 +logie +logia subst:pl:acc:f pospolita
  365 +logie +logia subst:pl:nom:f pospolita
  366 +logie +logia subst:pl:voc:f pospolita
  367 +logię +logia subst:sg:acc:f pospolita
  368 +logii +logia subst:pl:gen:f pospolita
  369 +logii +logia subst:sg:dat:f pospolita
  370 +logii +logia subst:sg:gen:f pospolita
  371 +logii +logia subst:sg:loc:f pospolita
  372 +logij +logia subst:pl:gen:f pospolita
  373 +logio +logia subst:sg:voc:f pospolita
  374 +logiom +logia subst:pl:dat:f pospolita
  375 +latek latek subst:sg:nom:m1 pospolita
  376 +latkach latek subst:pl:loc:m1 pospolita
  377 +latka latek subst:sg:acc:m1 pospolita
  378 +latka latek subst:sg:gen:m1 pospolita
  379 +latkami latek subst:pl:inst:m1 pospolita
  380 +latki latek depr:pl:nom:m2 pospolita
  381 +latki latek depr:pl:voc:m2 pospolita
  382 +latkiem latek subst:sg:inst:m1 pospolita
  383 +latkom latek subst:pl:dat:m1 pospolita
  384 +latkowi latek subst:sg:dat:m1 pospolita
  385 +latkowie latek subst:pl:nom:m1 pospolita
  386 +latkowie latek subst:pl:voc:m1 pospolita
  387 +latków latek subst:pl:acc:m1 pospolita
  388 +latków latek subst:pl:gen:m1 pospolita
  389 +latku latek subst:sg:loc:m1 pospolita
  390 +latku latek subst:sg:voc:m1 pospolita
input/polimorf.tagset
@@ -696,6 +696,11 @@ @@ -696,6 +696,11 @@
696 691 winien:sg:n1.n2:pri:imperf 696 691 winien:sg:n1.n2:pri:imperf
697 692 winien:sg:n1.n2:sec:imperf 697 692 winien:sg:n1.n2:sec:imperf
698 693 winien:sg:n1.n2:ter:imperf 698 693 winien:sg:n1.n2:ter:imperf
  699 +694 prefppas
  700 +695 substa
  701 +696 morphconj
  702 +697 romandig
  703 +698 emoticon
699 704
700 [NAMES] 705 [NAMES]
701 0 706 0
input/segmenty.dat
@@ -3,7 +3,6 @@ aggl=permissive strict isolated @@ -3,7 +3,6 @@ aggl=permissive strict isolated
3 praet=split composite 3 praet=split composite
4 4
5 [combinations] 5 [combinations]
6 -  
7 #define wsz_interp (interp|kropka|dywiz)* 6 #define wsz_interp (interp|kropka|dywiz)*
8 7
9 #define moze_interp(segmenty) wsz_interp segmenty wsz_interp 8 #define moze_interp(segmenty) wsz_interp segmenty wsz_interp
@@ -20,7 +19,7 @@ samotny @@ -20,7 +19,7 @@ samotny
20 # przeszlik pojedynczy w formie nieaglutynacyjnej, np. „gniótł”: 19 # przeszlik pojedynczy w formie nieaglutynacyjnej, np. „gniótł”:
21 moze_interp(praet_sg_na) 20 moze_interp(praet_sg_na)
22 21
23 -# przeszlik pojedynczy w formie niezróżnicowanej aglutynacyjnie, np. „czytał”: 22 +# przeszlik pojedynczy w formie niezróżnicowanej aglutynacyjnie, np. „moze”:
24 moze_interp(praet_sg) 23 moze_interp(praet_sg)
25 24
26 # przeszlik mnogi, np. „czytali”: 25 # przeszlik mnogi, np. „czytali”:
@@ -32,14 +31,19 @@ moze_interp(by) @@ -32,14 +31,19 @@ moze_interp(by)
32 # inne segmenty, które dopuszczają po sobie aglutynant, 31 # inne segmenty, które dopuszczają po sobie aglutynant,
33 # np. „powininna”, „czyżby”: 32 # np. „powininna”, „czyżby”:
34 moze_interp(z_aglt) 33 moze_interp(z_aglt)
  34 +moze_interp(z_aglt_by)
35 35
36 # forma przymiotnikowa (dopuszcza adja): 36 # forma przymiotnikowa (dopuszcza adja):
37 moze_interp(adj) 37 moze_interp(adj)
38 38
39 -# dywiz (jako samodzielny segment jest tyko błędnym użyciem w funkcji 39 +# dywiz (jako samodzielny segment jest tylko błędnym użyciem w funkcji
40 # myślnika, ale trzeba to dopuścić): 40 # myślnika, ale trzeba to dopuścić):
41 dywiz 41 dywiz
42 42
  43 +# pauza i półpauza w funkcji myślnika
  44 +pauza
  45 +polpauza
  46 +
43 #ifdef isolated 47 #ifdef isolated
44 adja 48 adja
45 #endif 49 #endif
@@ -70,7 +74,7 @@ moze_interp(praet_sg by aglsg) @@ -70,7 +74,7 @@ moze_interp(praet_sg by aglsg)
70 # np. „gnietli·by·śmy” 74 # np. „gnietli·by·śmy”
71 moze_interp(praet_pl by aglpl) 75 moze_interp(praet_pl by aglpl)
72 #else 76 #else
73 -#moze_interp(praetcond) 77 +# moze_interp(praetcond)
74 #endif 78 #endif
75 # np. „by·ś” 79 # np. „by·ś”
76 moze_interp(by aglsg) 80 moze_interp(by aglsg)
@@ -79,8 +83,13 @@ moze_interp(by aglpl) @@ -79,8 +83,13 @@ moze_interp(by aglpl)
79 83
80 # np. „gdyby·m” 84 # np. „gdyby·m”
81 moze_interp(z_aglt aglsg) 85 moze_interp(z_aglt aglsg)
  86 +moze_interp(z_aglt_by aglsg)
82 # np. „gdyby·ście” 87 # np. „gdyby·ście”
83 moze_interp(z_aglt aglpl) 88 moze_interp(z_aglt aglpl)
  89 +moze_interp(z_aglt_by aglpl)
  90 +# oraz wersje z by, np. chybabym
  91 +moze_interp(z_aglt by aglsg)
  92 +moze_interp(z_aglt by aglpl)
84 93
85 # To jest dużo za dużo, ale tytułem eksperymentu: 94 # To jest dużo za dużo, ale tytułem eksperymentu:
86 #ifdef permissive 95 #ifdef permissive
@@ -98,14 +107,14 @@ moze_interp( (adja dywiz)+ adj ) @@ -98,14 +107,14 @@ moze_interp( (adja dywiz)+ adj )
98 # adja dywiz adja dywiz adja dywiz adj interp? 107 # adja dywiz adja dywiz adja dywiz adj interp?
99 # adja dywiz adja dywiz adja dywiz adja dywiz adj interp? 108 # adja dywiz adja dywiz adja dywiz adja dywiz adj interp?
100 109
101 -# Stopień najwyższy:  
102 -# np. „naj·zieleńszy”, „naj·mądrzej”  
103 -moze_interp( naj> adj_sup )  
104 -moze_interp( nie> naj> adj_sup ) !weak 110 +# Formy zanegowane stopnia wyższego przymiotników i przysłówków (WK)
  111 +# np. „nie·grzeczniejszy”, „nie·grzeczniej”
  112 +moze_interp( adj_com )
  113 +moze_interp( nie> adj_com )
105 114
106 # Formy „zanegowane” gerundiów i imiesłowów: 115 # Formy „zanegowane” gerundiów i imiesłowów:
107 # np. „nie·czytanie”, „nie·przeczytany”, „nie·czytający”: 116 # np. „nie·czytanie”, „nie·przeczytany”, „nie·czytający”:
108 -moze_interp( nie > negat ) 117 +moze_interp( nie> negat )
109 118
110 # Przyimki akceptujące krótką formę „-ń” 119 # Przyimki akceptujące krótką formę „-ń”
111 moze_interp(z_on_agl) 120 moze_interp(z_on_agl)
@@ -113,19 +122,34 @@ moze_interp(z_on_agl) @@ -113,19 +122,34 @@ moze_interp(z_on_agl)
113 moze_interp(z_on_agl on_agl) 122 moze_interp(z_on_agl on_agl)
114 123
115 # Liczba zapisana jako ciąg cyfr: 124 # Liczba zapisana jako ciąg cyfr:
116 -moze_interp( dig>* dig ) !weak 125 +moze_interp( dig>* dig )
  126 +
  127 +# Liczba rzymska zapisana jako ciąg cyfr rzymskich:
  128 +# (kiepskie, trzeba poprawić wyrażeniem regularnym)
  129 +moze_interp( roman>* roman )
117 130
118 # Formacje prefiksalne 131 # Formacje prefiksalne
119 #### trzeba wydzielić odpowiednie samodze! 132 #### trzeba wydzielić odpowiednie samodze!
120 -# rzeczownikowe i przymiotnikowe  
121 -# np. „euro·sodoma”, „e-·papieros”, „euro·sodomski”, „bez·argumentowy”  
122 -moze_interp( prefs> samodz ) 133 +# rzeczownikowe
  134 +# np. „euro·sodoma”, „e-·papieros”
  135 +moze_interp(nomina)
  136 +moze_interp( prefs> nomina ) !weak
123 # czasownikowe np. „po·nakapywać” 137 # czasownikowe np. „po·nakapywać”
124 -moze_interp( prefv> samodz ) 138 +moze_interp(inf_imperf|praet_imperf|imps_imperf|fin_imperf|impt_sg_imperf|impt_pl_imperf|impt_sg_perf|impt_pl_perf)
  139 +moze_interp( prefv> (inf_imperf|praet_imperf|imps_imperf|fin_imperf|impt_sg_imperf|impt_pl_imperf) ) !weak
  140 +# przymiotnikowe np. „do·żylny”, „euro·sodomski”, „bez·argumentowy”
  141 +moze_interp(ppas|adv_pos|pact)
  142 +# moze_interp(prefa> adj)
  143 +moze_interp( prefa> ( adj|adv_pos|pact|ppas ) ) !weak
  144 +moze_interp( prefppas> ppas ) !weak
125 145
126 # Apozycje z dywizem 146 # Apozycje z dywizem
127 # np. „kobieta-prezydent” 147 # np. „kobieta-prezydent”
128 -moze_interp( samodz dywiz samodz ) 148 +moze_interp( nomina (dywiz) nomina )
  149 +
  150 +# Zakresy liczbowe, daty, np. 1911-1939.
  151 +moze_interp((dig>* dig) dywiz (dig>* dig))
  152 +
129 # poniższe do sprawdzenia, najwyraźniej obecne w tekstach, skoro wprowadziliśmy: 153 # poniższe do sprawdzenia, najwyraźniej obecne w tekstach, skoro wprowadziliśmy:
130 # ? 154 # ?
131 adj dywiz adj 155 adj dywiz adj
@@ -134,13 +158,92 @@ adj dywiz samodz @@ -134,13 +158,92 @@ adj dywiz samodz
134 # ? 158 # ?
135 samodz dywiz adj 159 samodz dywiz adj
136 160
  161 +#### PONIŻEJ REGUŁY WK
  162 +# Stopień najwyższy:
  163 +# np. „naj·zieleńszy”, „naj·mądrzej”
  164 +moze_interp( naj> adj_sup )
  165 +# Cząstka li przy osobowych formach czasownika oddzielona dywizem: znasz-li ten kraj
  166 +moze_interp( praet_sg dywiz li)
  167 +moze_interp( praet_sg aglsg dywiz li)
  168 +moze_interp( praet_pl dywiz li)
  169 +moze_interp( praet_pl aglpl dywiz li)
  170 +moze_interp( praet_sg_na dywiz li)
  171 +moze_interp( fin_perf)
  172 +moze_interp( fin_imperf)
  173 +moze_interp( (fin_perf|fin_imperf) dywiz li)
  174 +
  175 +# i bez dywizu --- czy bez dywizu jest sens łapać?
  176 +#moze_interp( praet_sg li)
  177 +#moze_interp( praet_pl li)
  178 +#moze_interp( praet_sg_na li)
  179 +#moze_interp( (fin_perf|fin_imperf) li)
  180 +
  181 +# reguła z partykułą ‹+że› przy trybie rozkazującym
  182 +# zakończonym na spółgłoskę
  183 +moze_interp(impt_sg_imperf ze)
  184 +moze_interp(impt_sg_perf ze)
  185 +# dodatkowo reguła dla part+że (niemalże, omalże, nieomalże):
  186 +# moze_interp(part_z_ze ze) --- już niepotrzebne, part. wpisane do słownika
  187 +# potrzebna jeszcze reguła dla ‹onże›
  188 +# i dla ‹+ż› przy zakończonym na samogłoskę
  189 +moze_interp(impt_pl_imperf z)
  190 +moze_interp(impt_pl_perf z)
  191 +
  192 +# aglutynant przy przymiotniku --- obsługiwane wyżej w wersji permissive
  193 +# moze_interp( adj aglsg )
  194 +moze_interp( adj aglpl )
  195 +
  196 +# forma złoż. liczebnika + przymiotnik, np. wieloaspektowy, pięciomasztowy
  197 +# dwudziestopięcioipółletni
  198 +moze_interp( i )
  199 +moze_interp( pol_zloz > adj ) !weak
  200 +moze_interp( num_zloz>+ adj ) !weak
  201 +moze_interp( num_zloz>+ i> pol_zloz> adj ) !weak
  202 +# moze_interp(num_zloz+ (i pol_zloz)? adj)
  203 +
  204 +# półdolarówka, półsiostra
  205 +moze_interp( ( pol_zloz>|num_zloz> ) nomina ) !weak
  206 +# nie analizuje: dwudziestopięcioipółlatek --- powinien?
  207 +# moze_interp( num_zloz nomina )
  208 +# czy dodać sufiksy: +latek m1, +latek m2, +latka f ? Chyba nie trzeba
  209 +
  210 +# wykluczenie ze złożeń przymiotników: ten, ów, ki, si.
  211 +moze_interp(adj_anty_zloz)
  212 +
  213 +# złożenia adja+adj/adv bez dywizu, np. średniopienny, sierściowłosy
  214 +moze_interp(adja>+ adj) !weak
  215 +
  216 +# złożenia konkretnych przyimków z formą -ń rzeczownika on:
  217 +moze_interp(prep_n)
  218 +moze_interp(prep_n n)
  219 +
  220 +# REGUŁY EKSPERYMENTALNE
  221 +# formy złoż. rzeczowników i sufiksy
  222 +moze_interp( substa> sufs ) !weak
  223 +
  224 +# złożenia imiesłowów przymiotnikowych czynnych;
  225 +# z braku form złoż. korzysta się z imiesłowów przysłówkowych + o
  226 +moze_interp(pcon)
  227 +# moze_interp( (pcon> morphconj dywiz)+ pact )
  228 +
  229 +# liczba arabska formą przymiotnikową, przysłówkową lub rzeczownikową: 22-letni, 20-latek,
  230 +# 1-majowy, 3-krotnie
  231 +moze_interp( dig>+ dywiz> (adj|adv_pos|nomina) )
  232 +
  233 +# liczba rzymska z formą przymiotnikową: XIX-wieczny
  234 +moze_interp( roman>+ dywiz> adj )
  235 +
  236 +# formy złoż. z sufiksem +latek:
  237 +moze_interp( num_zloz>+ latek ) !weak
  238 +moze_interp(num_zloz>+ i> pol_zloz> latek ) !weak
  239 +
  240 +# złożenia liczbowe z sufiksem +latek, np. 20-latek:
  241 +moze_interp( dig>+ dywiz> latek )
  242 +
  243 +# interpretacja znaków interpunkcyjnych
  244 +# moze_interp(samodz interp)
  245 +
137 [generator combinations] 246 [generator combinations]
138 -adja  
139 -adj  
140 -adj_sup  
141 -samodz  
142 -prefs> samodz  
143 -prefv> samodz  
144 247
145 [segment types] 248 [segment types]
146 naj 249 naj
@@ -148,12 +251,35 @@ nie @@ -148,12 +251,35 @@ nie
148 prefs 251 prefs
149 prefv 252 prefv
150 prefa 253 prefa
  254 +prefppas
  255 +ppas
  256 +pcon
  257 +morphconj
  258 +li
  259 +substa
  260 +sufs
  261 +latek
  262 +dywiz
  263 +pauza
  264 +polpauza
  265 +kropka
  266 +adj_anty_zloz
  267 +adj_com
  268 +fin_perf
  269 +fin_imperf
  270 +nomina
  271 +adv_pos
  272 +pact
  273 +inf_imperf
  274 +praet_imperf
  275 +imps_imperf
  276 +ze
  277 +z
151 dig 278 dig
  279 +roman
152 adja 280 adja
153 adj 281 adj
154 adj_sup 282 adj_sup
155 -adj_com  
156 -fin  
157 negat 283 negat
158 on_agl 284 on_agl
159 z_on_agl 285 z_on_agl
@@ -161,31 +287,45 @@ samotny @@ -161,31 +287,45 @@ samotny
161 interp 287 interp
162 aglsg 288 aglsg
163 aglpl 289 aglpl
  290 +z_aglt
  291 +z_aglt_by
  292 +by
164 praetcond 293 praetcond
165 praet_sg_agl 294 praet_sg_agl
166 praet_sg_na 295 praet_sg_na
167 praet_sg 296 praet_sg
168 praet_pl 297 praet_pl
169 -z_aglt  
170 -by  
171 -li  
172 -nomina  
173 -adjectiva  
174 -verba_imperf  
175 -dywiz  
176 -kropka 298 +impt_sg_perf
  299 +impt_sg_imperf
  300 +impt_pl_perf
  301 +impt_pl_imperf
  302 +pol_zloz
  303 +num_zloz
  304 +i
  305 +n
  306 +prep_n
  307 +emoticon
  308 +killfile
177 samodz 309 samodz
178 310
  311 +
179 [tags] 312 [tags]
180 naj naj 313 naj naj
181 nie nie 314 nie nie
182 prefs prefs 315 prefs prefs
183 prefv prefv 316 prefv prefv
  317 +prefa prefa
  318 +prefppas prefppas
184 dig dig 319 dig dig
  320 +roman romandig
185 adja adja 321 adja adja
  322 +substa substa
186 adj adj:%:pos 323 adj adj:%:pos
187 adj_sup adj:%:sup 324 adj_sup adj:%:sup
188 adj_sup adv:sup 325 adj_sup adv:sup
  326 +adj_com adj:%:com
  327 +adj_com adj:%:com
  328 +pcon pcon:imperf
189 negat ger:%:neg 329 negat ger:%:neg
190 negat pact:%:neg 330 negat pact:%:neg
191 negat ppas:%:neg 331 negat ppas:%:neg
@@ -193,43 +333,110 @@ on_agl ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep @@ -193,43 +333,110 @@ on_agl ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep
193 z_on_agl prep:% 333 z_on_agl prep:%
194 samotny brev:pun 334 samotny brev:pun
195 samotny brev:npun 335 samotny brev:npun
196 -samotny interj 336 +# samotny interj
  337 +samotny emoticon
197 interp interp 338 interp interp
198 aglsg aglt:sg:% 339 aglsg aglt:sg:%
199 aglpl aglt:pl:% 340 aglpl aglt:pl:%
200 -#praetcond cond:%  
201 -#praetcond praet:%:pri:%  
202 -#praetcond praet:%:sec:%  
203 -#praetcond praet:%:ter:%  
204 praet_sg_agl praet:sg:%:agl 341 praet_sg_agl praet:sg:%:agl
205 praet_sg_na praet:sg:%:nagl 342 praet_sg_na praet:sg:%:nagl
206 praet_sg praet:sg:% 343 praet_sg praet:sg:%
207 praet_pl praet:pl:% 344 praet_pl praet:pl:%
208 praet_sg winien:sg:% 345 praet_sg winien:sg:%
209 praet_pl winien:pl:% 346 praet_pl winien:pl:%
  347 +fin_perf fin:%:perf
  348 +fin_imperf fin:%:imperf
  349 +nomina subst:%
  350 +nomina ger:%
  351 +nomina depr:%
  352 +adv_pos adv:pos
  353 +ppas ppas:%
  354 +pact pact:%
  355 +praet_imperf praet:%:imperf
  356 +inf_imperf inf:imperf
  357 +imps_imperf imps:imperf
  358 +impt_sg_imperf impt:sg:%:imperf
  359 +impt_sg_perf impt:sg:%:perf
  360 +impt_pl_imperf impt:pl:%:imperf
  361 +impt_pl_perf impt:pl:%:perf
  362 +num_zloz num:comp
  363 +prep_n prep:%:wok
210 samodz % 364 samodz %
211 365
212 [lexemes] 366 [lexemes]
  367 +pol_zloz pół:num:comp
  368 +i i:conj
  369 +by by:qub
  370 +li li:qub
  371 +ze +że:qub
  372 +z +ż:qub
  373 +killfile +ć:qub
213 z_aglt aby:comp 374 z_aglt aby:comp
214 z_aglt bowiem:comp 375 z_aglt bowiem:comp
215 -by by:qub  
216 z_aglt by:comp 376 z_aglt by:comp
217 z_aglt cóż:subst 377 z_aglt cóż:subst
218 z_aglt czemu:adv 378 z_aglt czemu:adv
219 -z_aglt czyżby:qub  
220 -z_aglt choćby:comp  
221 -z_aglt chociażby:comp 379 +z_aglt_by czyżby:qub
  380 +z_aglt_by choćby:comp
  381 +z_aglt_by chociażby:comp
222 z_aglt dlaczego:adv 382 z_aglt dlaczego:adv
223 z_aglt dopóki:comp 383 z_aglt dopóki:comp
224 z_aglt dopóty:conj 384 z_aglt dopóty:conj
225 -z_aglt gdyby:comp 385 +z_aglt_by gdyby:comp
226 z_aglt gdzie:qub 386 z_aglt gdzie:qub
227 z_aglt gdzie:adv 387 z_aglt gdzie:adv
228 -z_aglt jakby:comp  
229 -z_aglt jakoby:comp 388 +z_aglt_by jakby:comp
  389 +z_aglt_by jakoby:comp
230 z_aglt kiedy:adv 390 z_aglt kiedy:adv
231 z_aglt kiedy:comp 391 z_aglt kiedy:comp
232 z_aglt tylko:qub 392 z_aglt tylko:qub
233 z_aglt żeby:comp 393 z_aglt żeby:comp
  394 +z_aglt to:conj
  395 +z_aglt chyba:qub
  396 +z_aglt że:qub
  397 +z_aglt czy:conj
  398 +z_aglt_by oby:qub
  399 +z_aglt_by bodajby:qub
  400 +z_aglt co:comp
234 dywiz -:interp 401 dywiz -:interp
  402 +pauza —:interp
  403 +polpauza –:interp
235 kropka .:interp 404 kropka .:interp
  405 +n on:ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep
  406 +adj_anty_zloz ten:adj:%
  407 +adj_anty_zloz tenże:adj:%
  408 +adj_anty_zloz ck:adj:%
  409 +adj_anty_zloz c.k.:adj:%
  410 +adj_anty_zloz ki:adj:%
  411 +adj_anty_zloz si:adj:%
  412 +adj_anty_zloz ow:adj:%
  413 +adj_anty_zloz ów:adj:%
  414 +adj_anty_zloz ówże:adj:%
  415 +adj_anty_zloz mój:adj:%
  416 +adj_anty_zloz a-z:adj:%
  417 +adj_anty_zloz a-ż:adj:%
  418 +adj_anty_zloz kiż:adj:%
  419 +adj_anty_zloz be:adj:%
  420 +adj_anty_zloz caca:adj:%
  421 +adj_anty_zloz czyj:adj:%
  422 +adj_anty_zloz oboj:adj:%
  423 +adj_anty_zloz on:adj:%
  424 +adj_anty_zloz tyli:adj:%
  425 +prep_n do:prep:%
  426 +prep_n dla:prep:%
  427 +prep_n koło:prep:%
  428 +prep_n na:prep:%
  429 +prep_n o:prep:%
  430 +prep_n po:prep:%
  431 +prep_n poza:prep:%
  432 +prep_n spoza:prep:%
  433 +prep_n za:prep:%
  434 +prep_n zza:prep:%
  435 +morphconj +o+:morphconj
  436 +# adj_anty_zloz pop:adj:%
  437 +sufs +znawca:subst:%
  438 +sufs +dawca:subst:%
  439 +sufs +biorca:subst:%
  440 +sufs +żerca:subst:%
  441 +sufs +maniak:subst:%
  442 +latek latek:subst:%
morfeusz/morfeusz.i
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 #ifdef SWIGJAVA 5 #ifdef SWIGJAVA
6 %module MorfeuszWrapper 6 %module MorfeuszWrapper
7 #else 7 #else
8 -%module morfeusz 8 +%module morfeusz2
9 #endif 9 #endif
10 10
11 %feature("autodoc", "2"); 11 %feature("autodoc", "2");
@@ -66,22 +66,22 @@ namespace std { @@ -66,22 +66,22 @@ namespace std {
66 66
67 def analyze(self, text): 67 def analyze(self, text):
68 res = InterpsVector() 68 res = InterpsVector()
69 - _morfeusz.Morfeusz_analyze(self, text, res) 69 + _morfeusz2.Morfeusz_analyze(self, text, res)
70 return list(res) 70 return list(res)
71 71
72 Morfeusz.analyze = analyze 72 Morfeusz.analyze = analyze
73 73
74 def getOrth(self): 74 def getOrth(self):
75 - return _morfeusz.MorphInterpretation_getOrth(self).decode('utf8') 75 + return _morfeusz2.MorphInterpretation_getOrth(self).decode('utf8')
76 76
77 def getLemma(self): 77 def getLemma(self):
78 - return _morfeusz.MorphInterpretation_getLemma(self).decode('utf8') 78 + return _morfeusz2.MorphInterpretation_getLemma(self).decode('utf8')
79 79
80 def getTag(self): 80 def getTag(self):
81 - return _morfeusz.MorphInterpretation_getTag(self).decode('utf8') 81 + return _morfeusz2.MorphInterpretation_getTag(self).decode('utf8')
82 82
83 def getName(self): 83 def getName(self):
84 - return _morfeusz.MorphInterpretation_getName(self).decode('utf8') 84 + return _morfeusz2.MorphInterpretation_getName(self).decode('utf8')
85 85
86 MorphInterpretation.getOrth = getOrth 86 MorphInterpretation.getOrth = getOrth
87 MorphInterpretation.getLemma = getLemma 87 MorphInterpretation.getLemma = getLemma
morfeusz/python/CMakeLists.txt
@@ -12,16 +12,15 @@ INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH}) @@ -12,16 +12,15 @@ INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH})
12 INCLUDE_DIRECTORIES (..) 12 INCLUDE_DIRECTORIES (..)
13 13
14 set (SWIG_PYTHON_OUTFILE swigPYTHON.cpp) 14 set (SWIG_PYTHON_OUTFILE swigPYTHON.cpp)
15 -# set (JAVA_WRAPPER_FILE ${CMAKE_SHARED_LIBRARY_PREFIX}morfeusz${CMAKE_SHARED_LIBRARY_SUFFIX})  
16 add_custom_command ( 15 add_custom_command (
17 - OUTPUT ${SWIG_PYTHON_OUTFILE} morfeusz.py 16 + OUTPUT ${SWIG_PYTHON_OUTFILE} morfeusz2.py
18 COMMAND swig -python -c++ -o ${SWIG_PYTHON_OUTFILE} ${CMAKE_SOURCE_DIR}/morfeusz/morfeusz.i 17 COMMAND swig -python -c++ -o ${SWIG_PYTHON_OUTFILE} ${CMAKE_SOURCE_DIR}/morfeusz/morfeusz.i
19 DEPENDS libmorfeusz 18 DEPENDS libmorfeusz
20 ) 19 )
21 20
22 set (SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in") 21 set (SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in")
23 set (SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py") 22 set (SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
24 -set (DEPS "${CMAKE_CURRENT_BINARY_DIR}/morfeusz.py" "${SWIG_PYTHON_OUTFILE}") 23 +set (DEPS "${CMAKE_CURRENT_BINARY_DIR}/morfeusz2.py" "${SWIG_PYTHON_OUTFILE}")
25 set (OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build") 24 set (OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build")
26 25
27 configure_file (${SETUP_PY_IN} ${SETUP_PY}) 26 configure_file (${SETUP_PY_IN} ${SETUP_PY})
@@ -51,11 +50,11 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") @@ -51,11 +50,11 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
51 ) 50 )
52 add_custom_target (package-python-deb-build 51 add_custom_target (package-python-deb-build
53 COMMAND debuild -us -uc 52 COMMAND debuild -us -uc
54 - WORKING_DIRECTORY deb_dist/pymorfeusz-${PYMORFEUSZ_VERSION} 53 + WORKING_DIRECTORY deb_dist/morfeusz2-${PYMORFEUSZ_VERSION}
55 DEPENDS package-python-deb-sdist 54 DEPENDS package-python-deb-sdist
56 ) 55 )
57 add_custom_target(package-python-deb 56 add_custom_target(package-python-deb
58 - COMMAND mkdir -p "${TARGET_DIR}" && cp ${CMAKE_CURRENT_BINARY_DIR}/deb_dist/python-pymorfeusz*.deb "${TARGET_DIR}" 57 + COMMAND mkdir -p "${TARGET_DIR}" && cp ${CMAKE_CURRENT_BINARY_DIR}/deb_dist/python-morfeusz2*.deb "${TARGET_DIR}"
59 DEPENDS package-python-deb-build 58 DEPENDS package-python-deb-build
60 ) 59 )
61 list (APPEND PACKAGE_DEPENDS package-python-deb) 60 list (APPEND PACKAGE_DEPENDS package-python-deb)
morfeusz/python/setup.py.in
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 from setuptools import setup, Extension 2 from setuptools import setup, Extension
3 3
4 -morfeusz2 = Extension('_morfeusz', 4 +morfeusz2 = Extension('_morfeusz2',
5 libraries=['morfeusz2'], 5 libraries=['morfeusz2'],
6 library_dirs=['${CMAKE_CURRENT_BINARY_DIR}/..'], 6 library_dirs=['${CMAKE_CURRENT_BINARY_DIR}/..'],
7 include_dirs=['${CMAKE_CURRENT_SOURCE_DIR}/..'], 7 include_dirs=['${CMAKE_CURRENT_SOURCE_DIR}/..'],
8 sources=['${CMAKE_CURRENT_BINARY_DIR}/${SWIG_PYTHON_OUTFILE}']) 8 sources=['${CMAKE_CURRENT_BINARY_DIR}/${SWIG_PYTHON_OUTFILE}'])
9 9
10 if __name__ == '__main__': 10 if __name__ == '__main__':
11 - setup(name='pymorfeusz', 11 + setup(name='morfeusz2',
12 author='${CPACK_PACKAGE_VENDOR}', 12 author='${CPACK_PACKAGE_VENDOR}',
13 author_email='${CPACK_PACKAGE_CONTACT}', 13 author_email='${CPACK_PACKAGE_CONTACT}',
14 description='Python bindings for Morfeusz', 14 description='Python bindings for Morfeusz',