рдпрд╣ рд▓реЗрдЦ рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдФрд░ рдПрд▓рдЖрд░-рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд╡рд╛рдХреНрдп рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐ рдФрд░ рдЧрдгрд┐рддреАрдп рднрд╛рд╖рд╛ рд╡рд┐рдЬреНрдЮрд╛рди рдХреА рд╕рд╛рдорд╛рдиреНрдп рджрд┐рд╢рд╛ рд╣реИред рдпрд╣ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдХреЗ рд╡рд╛рдХреНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: (1) рд╡рд╛рдХреНрдпрд╡рд╛рдЪрдХ рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рд╡рд╛рдХреНрдпреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ - рд╢рдмреНрдж рдФрд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢; (2) рдкреНрд░рддреНрдпреЗрдХ рдЗрдХрд╛рдИ рдХреЗ рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг; (3) рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд╕рдВрдмрдВрдз рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ред рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд╕рд╛рд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЯреНрд░реА рд╣реИред
1. рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рдмрдВрдЯрд╡рд╛рд░реЗ
рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдХреЗ рд╡рд╛рдХреНрдп рдореЗрдВ рд╢рдмреНрдж рд░реВрдк рдФрд░ рдордЬрдмреВрдд рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╣реЛрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╢рдмреНрдж рдХреЗ рдХрдИ рд╢рдмреНрдж рд░реВрдкреЛрдВ рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдорд╛рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
"": [, , , , , ]
рд╡рд╛рдХреНрдпрд╛рдВрд╢ - рдпреМрдЧрд┐рдХ рд╕рдВрдпреЛрдЬрди, рд╡рд┐рдзреЗрдп рдпрд╛ рд╕реНрдерд┐рд░ рднрд╛рд╡ - рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрд░реНрде рдХреА рд╣рд╛рдирд┐ рдХреЗ рдмрд┐рдирд╛ рдЫреЛрдЯреА рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╢рдмреНрдж рд╕реЗ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рдХрд┐рд╕реА рднреА рд╡рд╛рдХреНрдп-рд░рдЪрдирд╛ рдЗрдХрд╛рдИ рд╕реЗ рд╣реИ - рдПрдХ рд╢рдмреНрдж рд░реВрдк рдпрд╛ рдПрдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ред
рдПрдХ рд╡рд╛рдХреНрдп рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдПрдХ рдЯреНрд░рд┐рдкрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рд╢рдмреНрдж рдкреНрд░рдкрддреНрд░ / рд╢рдмреНрдж рд╕реНрдЯреНрд░рд┐рдВрдЧ ("рд▓рд┐рдЦрд╛")
- рд╢рдмреНрдж рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк ("рд▓рд┐рдЦрдирд╛")
- рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ (['рд╡реАрдЖрд░рдмреА', 'рдЧрд╛рдирд╛', 'рд╕рдВрдЧреАрдд', 'рдЯреНрд░рд╛рди', 'рдП' '))
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд╛рдХреНрдп рдХрд╛ рдЯреВрдЯрдирд╛ "
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рд╡рд╣ рдмреИрдардХ рдореЗрдВ рдирд╣реАрдВ рдЖрдПрдЧрд╛ " рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд╣реЛрдВрдЧреЗ:
[' ', '', '', '', '', ''] ' ' - ,
2. рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ (рд╡реНрдпрд╛рдХрд░рдг)
рдПрдХ рд╡реНрдпрд╛рдХрд░рдг рдПрдХ рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рд╢реНрд░реЗрдгреА рдХрд╛ рдПрдХ рддрддреНрд╡ рд╣реИ; рдПрдХ рд╣реА рд╢реНрд░реЗрдгреА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡реНрдпрд╛рдХрд░рдг рдкрд░рд╕реНрдкрд░ рдЕрдирдиреНрдп рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рд╡реНрдпрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд╕рд╛рдд рдЧреНрд░рд╛рдореЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
[ , , , , , , ]
рдПрдХ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо
OpenCorpora рд╢рдмреНрджрдХреЛрд╢ рдФрд░ рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕,
pymorphy2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЧреНрд░рд╛рдо рдореЗрдВ рджрд┐рдП рдЧрдП рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдПрдХ рдирд┐рдпрдо рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВрдЧреЗ:
'' [NOUN,plur,neut,accs] -> [NOUN,?numb,?per,?gend,accs,None,None] '?' ,
3. рд╢рдмреНрджреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд╕рдВрдмрдВрдз рдХреА рдкрд░рд┐рднрд╛рд╖рд╛
рд╢рдмреНрджреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд╕рдВрдмрдВрдз рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдФрд░ LR рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рд╡реНрдпрд╛рдХрд░рдг рдФрд░ LR рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдФрдкрдЪрд╛рд░рд┐рдХ рд╡реНрдпрд╛рдХрд░рдг рддрдерд╛рдХрдерд┐рдд рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рднрд╛рд╖рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
a -> ab | ac
рдХрд╛ рдЕрд░реНрде рд╣реИ рдирд┐рдпрдо 'рдП' рд╕реНрдкреЙрди 'рдЕрдм' рдпрд╛ 'рдПрд╕реА'ред
рдЧреИрд░ -рд╡рд╕реНрддреБрдПрдВ рд╡реЗ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ рдЬреЛ рднрд╛рд╖рд╛ рдХреЗ рдХрд┐рд╕реА рднреА рд╕рд╛рд░ (рд╡рд╛рдХреНрдп, рд╕реВрддреНрд░, рдЖрджрд┐) рдХреЛ
рджрд░реНрд╢рд╛рддреА рд╣реИрдВред рд╢рдмреНрдж - рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдЕрдиреБрд░реВрдк рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╡рд╕реНрддреБрдПрдВ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ, рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЕрд░реНрде (рдЕрдХреНрд╖рд░, рд╢рдмреНрдж, рд╕реВрддреНрд░, рдЖрджрд┐)ред рдкреНрд░рд╕рдВрдЧ-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рд╡реЗ рд╡реНрдпрд╛рдХрд░рдг рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕рднреА рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдмрд╛рдПрдВ-рд╣рд╛рде рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдПрдХрд▓-рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓ рд╣реИрдВред
рд░реВрд╕реА рднрд╛рд╖рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдШрдЯрдХреЛрдВ рдХреЗ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд (
рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕рдВрд░рдЪрдирд╛ рд╡реНрдпрд╛рдХрд░рдг ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓ рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рдЗрдХрд╛рдИ рдореЗрдВ рджреЛ рд╕рд░рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдХрд╛рдЯрдирд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рддрддреНрдХрд╛рд▓ рдШрдЯрдХреЛрдВ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдХ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╣реИрдВ:
(1) рдирд╛рдордорд╛рддреНрд░ рд╕рдореВрд╣ (рдПрдирдкреА) NP[case='nomn'] -> N[case='nomn'] | ADJ[case='nomn'] NP[case='nomn'] | тАж
рдЕрд░реНрдерд╛рддреН, рдирд╛рдордорд╛рддреНрд░ рд╕рдВрдЬреНрдЮрд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдирд╛рдордорд╛рддреНрд░ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╕рдВрдЬреНрдЮрд╛ рд╣реИ рдпрд╛ рдирд╛рдордорд╛рддреНрд░ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рдг + рдирд╛рдордорд╛рддреНрд░ рд╕рдВрдЬреНрдЮрд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдпрд╛ рдЕрдиреНрдпред
(2) рдореМрдЦрд┐рдХ рд╕рдореВрд╣ (VP) VP[tran] -> V[tran] NP[case='ablt'] | ADJ VP[tran] | тАж
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рд╕рдХрд░реНрдордХ рдХреНрд░рд┐рдпрд╛ рд╕рдореВрд╣ рдПрдХ рд╕рдХрд░реНрдордХ рдХреНрд░рд┐рдпрд╛ + рдПрдХ рдЕрдореВрд░реНрдд рд╕рдВрдЬреНрдЮрд╛ рд╕рдореВрд╣ рдпрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╢реЗрд╖рдг + рд╕рдХрд░реНрдордХ рдХреНрд░рд┐рдпрд╛ рд╕рдореВрд╣ рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╣реИред
(3) рдкреНрд░реАрдкреЛрдЬрд┐рд╢рдирд▓ рдЧреНрд░реБрдк (рдкреАрдкреА) PP -> PREP NP[case='datv'] | ...
рдПрдХ рдкреНрд░реАрдкреЛрдЬрд╝рд▓ рд╕рдореВрд╣ рдПрдХ рдкреНрд░реАрдкреЛрдЬрд╝рд┐рд╢рди + рдирд╛рдордорд╛рддреНрд░ рдбрд╛рдЗрд╡реЗрдЯрд┐рд╡ рд╕рдореВрд╣ рдпрд╛ рдЕрдиреНрдп рд╣реИред
(4) рдкреВрд░реНрдг рдкреНрд░рд╕реНрддрд╛рд╡ (рдПрд╕) S -> NP[case='nomn'] VP[tran]
рдПрдХ рдкреВрд░реНрдг рд╡рд╛рдХреНрдп рдореМрдЬреВрдж рд╣реИ рдЕрдЧрд░ рдФрд░ рдХреЗрд╡рд▓ рдЕрдЧрд░ рд╕рдВрдЬреНрдЮрд╛ рдФрд░ рдХреНрд░рд┐рдпрд╛ рд╕рдореВрд╣ рд╕рдВрдЦреНрдпрд╛, рд╡реНрдпрдХреНрддрд┐ рдФрд░ рд▓рд┐рдВрдЧ рдореЗрдВ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред
def agreement(self, node_left, node_right): ... if (numb1 and numb2): if (numb1 != numb2): return False; if (per1 and per2): if (per1 != per2): return False; if (gend1 and gend2): if (gend1 != gend2): return False; return True;
рдЕрдзреВрд░рд╛ рд╡рд╛рдХреНрдп рдПрдХ рдРрд╕рд╛ рд╡рд╛рдХреНрдп рд╣реИ рдЬрд╣рд╛рдБ рдирд╛рдордорд╛рддреНрд░ рднрд╛рдЧ рдЫреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдРрд╕реЗ рд╡рд╛рдХреНрдпреЛрдВ рдореЗрдВ рдХреНрд░рд┐рдпрд╛ рд╕рдореВрд╣ рдПрдХ рдЕрд╡реИрдпрдХреНрддрд┐рдХ рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "
рдореИрдВ рдЪрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ," "рдпрд╣
рд╣рд▓реНрдХрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ ред" рдПрдХ рдЕрдгреНрдбрд╛рдХрд╛рд░ рд╡рд╛рдХреНрдп рдПрдХ рд╡рд╛рдХреНрдп рд╣реИ рдЬрд╣рд╛рдВ рдХреНрд░рд┐рдпрд╛ рднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдбреИрд╢ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "
рдкреАрда рдХреЗ рдкреАрдЫреЗ рдПрдХ рдЬрдВрдЧрд▓ рд╣реИред рджрд╛рдПрдВ рдФрд░ рдмрд╛рдПрдВ рджрд▓рджрд▓ рд╣реИрдВ ред"
рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рдХреНрдп рд╡реНрдпрд╛рдХрд░рдг рднрд╛рд╖рд╛ рдХрд╛ рд╣реИ, рд╣рдо LR рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ (рдкрддреНрддрд┐рдпреЛрдВ рд╕реЗ рдЬрдбрд╝ рддрдХ) рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЯреНрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢рд╛рдорд┐рд▓ рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдореБрдЦреНрдп рддрддреНрд╡ "рдЯреНрд░рд╛рдВрд╕рдлрд░-рдХрдирд╡рд▓реНрд╢рди" (рдЕрдВрдЧреНрд░реЗрдЬреА
рдкрд╛рд░реА-рдШрдЯрд╛рдирд╛ ) рдХреА рд╡рд┐рдзрд┐ рд╣реИ:
(1) рд╣рдо рдЗрдирдкреБрдЯ рд▓рд╛рдЗрди рдХреЗ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рд╕реНрдЯреИрдХреНрдб (рдЯреНрд░рд╛рдВрд╕рдлрд░) рдореЗрдВ рдорд┐рд▓реА рдЪреЗрди рдбрд╛рд▓рддреЗ рд╣реИрдВ;
(2) рд╡реНрдпрд╛рдХрд░рдг (рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк) рд╕реЗ рдирд┐рдпрдо рджреНрд╡рд╛рд░рд╛ рдорд┐рд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рдпрджрд┐ рд╕рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪреЗрди рдХреЛ рд▓рдкреЗрдЯрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рдХреНрдп рд╡реНрдпрд╛рдХрд░рдг рдХреА рднрд╛рд╖рд╛ рдХрд╛ рд╣реИ, рдФрд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкрд╛рд░реНрд╕ рдЯреНрд░реА рдореМрдЬреВрдж рд╣реИред
рд▓рдХрдбрд╝реАрд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рдХреНрдп рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреЗрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкрддреНрддрд┐рдпрд╛рдВ рд╢рдмреНрдж (рдЯрд░реНрдорд┐рдирд▓) рдЧреНрд░рд╛рдо рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдиреЛрдбреНрд╕ рдирд┐рдпрдо (preterminals) рд╣реИрдВред рдореВрд▓ рд╡рд╛рдХреНрдп (рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓) рд╣реИред
рдПрдХ рдкреЗрдбрд╝ рдХреЗ рдиреЛрдб рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
class Node: def __init__(self, word=None, tag=None, grammemes=None, leaf=False): self.word = word;
рдПрдХ рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрддреНрддрд┐рдпреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╢рдмреНрджреЛрдВ рдпрд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реМрдВрдкреА рдЬрд╛рддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрд╕рдХреЗ рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯред
def build(self, sent): for word in sent: new_node = Node(word[0], word[1], word[2], leaf=True) self.nodes.append(new_node)
рдЕрдЧрд▓рд╛, LR рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдЬ рдХреЗ рддрд╣рдд рджреЛ рдиреЛрдбреНрд╕ рдпрд╛ рдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдореЗрд▓ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдкреВрд░реНрд╡рдЬ рдиреЛрдб рдХреЛ рдПрдХ рдкреВрд░реНрд╡-рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЯреИрдЧ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдирд┐рдпрдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреВрд░реНрд╡рдЬ рд╕рдореВрд╣ рдХреЗ рдореБрдЦреНрдп рд╕рджрд╕реНрдп рдХреЗ рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд░рд┐рдпрд╛ рд╕рдореВрд╣ V [рдЯреНрд░реЕрди] PRCL (рдЬреИрд╕реЗ
"" рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ) рдХреЗ рд╕рдВрдХреЗрдд рдкрд╛рд░рдЧрдорди рдХреНрд░рд┐рдпрд╛ V [рдЯреНрд░рд╛рдВрд╕], рдФрд░ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред PRCL рдХреЗ рдПрдХ рдХрдг рд╕реЗ рдирд╣реАрдВ; рдФрд░ рд╕рдВрдЬреНрдЮрд╛ рд╕рдореВрд╣ рдореЗрдВ NP [case = 'nomn'] NP [case = 'gent'] (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
"рдмрдЪреНрдЪреЛрдВ рдХреЗ рдкрд┐рддрд╛" ) рд╕рдВрдХреЗрдд рд╕рдВрдЬреНрдЮрд╛ рд╕реЗ рд╕рдВрдЬреНрдЮрд╛ рдореЗрдВ рд▓рд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕реНрдерд╛рдкрд┐рдд рдЖрджреЗрд╢ рдореЗрдВ рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИ:
def reduce(self): self.reduce_ADJ() # self.reduce_NP() # self.reduce_PP() # self.reduce_VP() # self.reduce_S() #
рдпрд╣ рдЖрджреЗрд╢ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдХреБрдЫ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ "рд▓рд╛рдкрддрд╛" рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рд╢реЗрд╖рдгреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд╕рдВрд╢реЛрдзрдХ (рдЬреИрд╕реЗ
рдкрд╛рдЧрд▓рдкрди рд╕реЗ рд╕реБрдВрджрд░ ) рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдирд╛рдордорд╛рддреНрд░ рд╕рдореВрд╣, рдкреВрд░реНрд╡рдкрдж рдФрд░ рдЕрдВрдд рдореЗрдВ рдореМрдЦрд┐рдХред рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреВрд░реНрдг / рдЕрдкреВрд░реНрдг рд╡рд╛рдХреНрдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рд╣реИ, рдпрджрд┐ рдХреЛрдИ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд╛рдХреНрдп рд╡реНрдпрд╛рдХрд░рдг рднрд╛рд╖рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред
рдПрдХ рдкреЗрдбрд╝ рдмрдирд╛рдиреЗ рдХреЗ рдПрдХ рд╕рд╢рд░реНрдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
sent = " " def build(self, sent): for word in sent: new_node = Node(word[0], word[1], word[2], leaf=True) self.nodes.append(new_node)

NP[case='nomn'] -> NPRO[case='nomn'] NP[case='accs'] -> N[case='accs'] NP[case='datv'] -> ADJ[case='datv'] NP[case='datv']

VP[tran] -> V[tran] NP[case='accs']

VP[tran] -> VP[tran] NP[case='datv']

S -> NP[case='nomn'] VP[tran]

рдПрдХ рджреЛ-рднрд╛рдЧ рд╡рд╛рдХреНрдп рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг:
import analyzer parser = analyzer.Parser() sent = " , ." t = parser.parse(sent) t[0].display() S NP[case='nomn'] ['NOUN', 'sing', 'femn', 'nomn'] VP[tran] VP[tran] ['VERB', 'sing', '3per', 'tran', 'pres'] NP[case='datv'] ['NOUN', 'sing', 'datv'] S NP[case='nomn'] ['NOUN', 'sing', 'femn', 'nomn'] VP[tran] PP PREP ['PREP'] NP[case='ablt'] ['NOUN', 'sing', 'femn', 'ablt'] VP[tran] ['VERB', 'sing', '3per', 'tran', 'pres']
рд╕рдорд╕реНрдпрд╛рдУрдВ
рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЗрд╕рдХреА рд╕рдордЭ рдХрдИ рдХрд╛рд░рдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ - рднрд╛рд╖рд╛ рдХреА рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░, рд░рд╛рд╖реНрдЯреНрд░реАрдп рд╕рдВрд╕реНрдХреГрддрд┐ рдкрд░, рд╕реНрдкреАрдХрд░ рдкрд░, рдЖрджрд┐ред рд╣рдо рдорд╢реАрди рднрд╛рд╖рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред
- рдЕрдирд╛рдЪрд╛рд░ рдХрд╛ рдкреНрд░рдХрдЯреАрдХрд░рдгред рдПрдХ рдЬреАрд╡рд┐рдд рд╡реНрдпрдХреНрддрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдФрд░ рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдирд╛рдЪрд╛рд░ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
- рд╕рдорд░реВрдкрддрд╛ рднрд╛рд╖рд┐рдХ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рдзреНрд╡рдирд┐ рдФрд░ рд╡рд░реНрддрдиреА рдореЗрдВ рдПрдХ рд╕рдВрдпреЛрдЧ рд╣реИ, рдЬрд┐рдирдХреЗ рдЕрд░реНрде рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рд╕рдорд╛рдзрд╛рди рд╕рдВрднрд╛рд╡реНрдп рддрд░реАрдХреЗ рд╣реИрдВред рд╡рд╛рдХреНрдп рдореЗрдВ " рдореБрдЭреЗ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрддрд╛ рд╣реИ, " рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ " рдпрд╣ " рдПрдХ рд╕рд░реНрд╡рдирд╛рдо рд╣реИ рдФрд░ рдПрдХ рдХрдг рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рдмрд╛рдбрд╝реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
- рд╢рдмреНрджреЛрдВ рдХрд╛ рдореБрдХреНрдд рдХреНрд░рдо рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рдХреНрдп рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, " рдЪреЗрддрдирд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг " рд╣реЛрдирд╛ - рдХреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ? рд░реВрд╕реА рдореЗрдВ, рдореБрдХреНрдд рд╢рдмреНрдж рдХреНрд░рдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдЖрдХреГрддрд┐ рд╡рд┐рдЬреНрдЮрд╛рди, рд╕реЗрд╡рд╛ рд╢рдмреНрдж рдФрд░ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рджреНрд╡рд╛рд░рд╛ рдореБрдЖрд╡рдЬрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╕реНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред
- рд╕рднреА рд▓реЛрдЧ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдиреЗрдЯ рдкрд░, рд▓реЛрдЧ рд╕рдВрдХреНрд╖рд┐рдкреНрддрд╛рдХреНрд╖рд░, рд╢рдмреНрджрд╡рд┐рдЬреНрдЮрд╛рди, рджреАрд░реНрдШрд╡реГрддреНрдд рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рд╣рд┐рддреНрдпрд┐рдХ рдЖрджрд░реНрд╢ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рд╕рдВрджрд░реНрдн-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдФрд░ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП
рдЙрдкрд▓рдмреНрдз рд╣реИ ред рдЗрд╕рдореЗрдВ рд╕реНрд╡рдпрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ, рдкрд╛рд░реНрд╕ рдЯреНрд░реА, рд╕рд╛рде рд╣реА рд░реВрд╕реА рд╡реНрдпрд╛рдХрд░рдг рдФрд░ рд░реВрд╕реА рднрд╛рд╖рд╛ рдХрд╛ рд╡реНрдпрд╛рдХрд░рдг рдФрд░ рдпреМрдЧрд┐рдХ рдпреВрдирд┐рдпрдиреЛрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╢рдмреНрджрдХреЛрд╖ рдФрд░ рд╡рд┐рдзреЗрдп рд╣реИ рдЬреЛ рдУрдкрдирдХреЛрд░реНрдкреЛрд░рд╛ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рд▓рдВрдмреЗ рдЬрдЯрд┐рд▓ рд╡рд╛рдХреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд╛рд░реНрд╕рд░ 3 рдпрд╛ рдЕрдзрд┐рдХ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рднреА рд╕рдВрднрд╛рд╡реНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред