рдкрд╛рдпрдерди 3 рдореЗрдВ рд░реВрд╕реА рдкрд╛рда (рдкреАрдУрдПрд╕-рдЯреИрдЧрд┐рдВрдЧ) рдореЗрдВ рднрд╛рд╖рдг рдХреЗ рдПрдХ рднрд╛рдЧ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛

рдЖрдЬреНрдЮрд╛ рджреЗрдирд╛, рд╡рд╛рдХреНрдп " рдЗрди рдирд░рдо рдлреНрд░реЗрдВрдЪ рд░реЛрд▓ рдЦрд╛рдУ, рд╣рд╛рдБ рдЪрд╛рдп рдкреАрддреЗ рд╣реИрдВред ", рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рднрд╛рд╖рдг рдХреЗ рднрд╛рдЧ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

[('', '.'), ('', '.'), ('', '. .'), ('', '.'), ('', '.'), ('', '.'), ('', ''), ('', '.'), ('', '.')]

рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЯреИрдЧ (рд╕рдВрдЬреНрдЮрд╛рдУрдВ рдХреЗ рдЪрдпрди рдХреЗ рд▓рд┐рдП) рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ред рдореЙрд░реНрдлреЛрд▓реЙрдЬрд┐рдХрд▓ рдорд╛рд░реНрдХрдЕрдк рдХрдВрдкреНрдпреВрдЯрд░ рдЯреЗрдХреНрд╕реНрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рди


рдмреЗрд╢рдХ, рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдпреИрдВрдбреЗрдХреНрд╕ , рдЯреНрд░реАрдЯреИрдЧрд░ рд╕реЗ рдПрдХ рдорд╕реНрдЯреАрд╕реНрдЯ рд╣реИ, рдкрд╛рдпрдерди рдиреЗ nltk рд╣реИ , рд╕рд╛рде рд╣реА рдХрд┐рдореАрдЗрдХ рд╕реЗ рдкрд╛рдЗрдореЛрд░реНрдлреА рднреА ред рдпреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ pymorphy рдореЗрдВ python 3 рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рдФрд░ nltk рдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ python рдХреЗ рддреАрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмреАрдЯрд╛ рд╕рдорд░реНрдерди рд╣реИ (рдФрд░ рдХреБрдЫ рд╣рдореЗрд╢рд╛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рдХреНрд╖реНрдп рдЕрдХрд╛рджрдорд┐рдХ рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд░реВрдкрд╛рддреНрдордХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реНрдпрдХреНрддрд┐ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рднрд╛рд╖рдг рдХрд╛ рдХреМрди рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрд┐рд╕ рд╢рдмреНрдж рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рд░реНрдп рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╡рд╣ рдЬреНрдЮрд╛рди рдЖрдзрд╛рд░ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╛рд╕ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЕрдкрдиреЗ рдкрд╛рд╕ рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред

рдбреЗрдЯрд╛


рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд░рд╛рд╖реНрдЯреНрд░реАрдп рдХреЛрд╖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдХреЙрд░реНрдкрд╕ рднрд╛рдЧ, SynTagRus, рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рдЪрд┐рд╣реНрдирд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЧреНрд░рдВрдереЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рднрд╛рд╖рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛, рд╕рдВрдЦреНрдпрд╛, рдорд╛рдорд▓рд╛, рдХреНрд░рд┐рдпрд╛ рдХрд╛рд▓, рдЖрджрд┐ред рдпрд╣ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╢рд░реАрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

 <se> <w><ana lex="" gr="PR"></ana>`</w> <w><ana lex="" gr="S-PRO,n,sg=ins"></ana></w> <w><ana lex="" gr="S,m,anim=pl,nom"></ana>`</w> <w><ana lex="" gr="V,ipf,intr,act=pl,praes,3p,indic"></ana>`</w> <w><ana lex="" gr="PR"></ana></w> <w><ana lex="" gr="S,f,inan=pl,acc"></ana>`</w> . </se> <se> <w><ana lex="" gr="PART"></ana></w> <w><ana lex="" gr="ADV-PRO"></ana></w>, <w><ana lex="" gr="PR"></ana>`</w> <w><ana lex="" gr="NUM=acc"></ana></w> <w><ana lex="" gr="S,f,inan=pl,gen"></ana>`</w> <w><ana lex="" gr="PR"></ana></w> <w><ana lex="" gr="S,f,inan=pl,gen"></ana></w> , <w><ana lex="" gr="V,pf,intr,med=m,sg,praet,indic"></ana>``</w> <w><ana lex="" gr="A=m,sg,nom,plen"></ana>`</w> <w><ana lex="" gr="S,m,anim=sg,nom"></ana>`</w> . </se> 


рд╡рд╛рдХреНрдп <se> рдЯреИрдЧреНрд╕ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ <w> рдЯреИрдЧ рдореЗрдВ рд╢рдмреНрдж рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА <ana> рдЯреИрдЧ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, lex рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдЯреЛрдХрди, рдЬреАрдЖрд░ - рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдкрд╣рд▓реА рд╢реНрд░реЗрдгреА рднрд╛рд╖рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ:

'S': '.',
'A': '.',
'NUM': '.',
'A-NUM': '.-.',
'V': '.',
'ADV': '.',
'PRAEDIC': '',
'PARENTH': '',
'S-PRO': '. .',
'A-PRO': '. .',
'ADV-PRO': '. .',
'PRAEDIC-PRO': '. .',
'PR': '',
'CONJ': '',
'PART': '',
'INTJ': '.'


SVM


рд▓рд░реНрдирд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рд╕рдорд░реНрдерди рд╡реЗрдХреНрдЯрд░ рд╡рд┐рдзрд┐ ( рдПрд╕рд╡реАрдПрдо ) рдХреЛ рдЪреБрдирд╛ред рдпрджрд┐ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрд╕рд╡реАрдПрдо рдпрд╛ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдПрд╕рд╡реАрдПрдо рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╢рдмреНрдж рдХреЗ рдЕрдВрдд рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рднрд╛рд╖рдг рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред


рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рднрд╛рд╖рдг рдХреЗ рднрд╛рдЧ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЗрдирдкреБрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ рднрд╛рд╖рдг рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рдЧреЛрдВ рдХреА рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рджреЗрдВред рдПрд╕рд╡реАрдПрдо рдПрдХ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛ рдЬреЛ рднрд╛рд╖рдг рдХреЗ рднрд╛рдЧ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╢реИрдХреНрд╖рдгрд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, SVM рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рддреИрдпрд╛рд░ CIB рд▓рд╛рдЗрдмреНрд░реЗрд░реА LIBLINEAR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ , рдЬрд┐рд╕рдореЗрдВ рдЕрдЬрдЧрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╣реИред рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЯреНрд░реЗрди (рдкреНрд░реЛрдм, рдкрд░рдо) рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ: рд╕рдорд╕реНрдпрд╛ (y, x) , рдЬрд╣рд╛рдВ рд╕рд░рдгреА рдПрдХреНрд╕ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП y рднрд╛рд╖рдг рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХрд╛ рд╕рд░рдгреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╡реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓реЗ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдпрд╛рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рднрд╛рд╖рдг рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 '''  -   -   - . ''' x = [{1001: 1, 2001: 1, 3001: 1}, # 1001 - , 2001 - , 3001 -  {1002: 1, 2002: 1, 3001: 1}, # 1002 - , 2002 - , 3001 -  {1003: 1, 2003: 1, 3002: 1}] # 1003 - , 2003 - , 3002 -  y = [1, 1, 2] # 1 - , 2 - . import liblinearutil as svm problem = svm.problem(y, x) #   param = svm.parameter('-c 1 -s 4') #   model = svm.train(prob, param) #   #      '' label, acc, vals = svm.predict([0], {1001: 1, 2001: 1, 3001: 1}, model, '') # [0] - ,      


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░рд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
  1. рд╣рдо рдХреЙрд░реНрдкрд╕ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рд╢рдмреНрдж рд╣реА, рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ (рдЕрдВрддрд┐рдо 2 рдФрд░ 3 рдЕрдХреНрд╖рд░), рдЙрдкрд╕рд░реНрдЧ (рдкрд╣рд▓реЗ 2 рдФрд░ 3 рдЕрдХреНрд╖рд░), рд╕рд╛рде рд╣реА рдкрд┐рдЫрд▓реЗ рд╢рдмреНрджреЛрдВ рдХреЗ рднрд╛рд╖рдг рднрд╛рдЧреЛрдВред
  2. рд╣рдо рднрд╛рд╖рдг рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрд╕рд╡реАрдПрдо рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдмрдирд╛рддреЗ рд╣реИрдВ
  3. SVM рдореЙрдбрд▓ рд╕реАрдЦрдирд╛
  4. рд╣рдо рд╡рд╛рдХреНрдп рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреЗ рднрд╛рд╖рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрд╕рд╡реАрдПрдо рдореЙрдбрд▓ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐ рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╡рд░реНрдЧ рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛, рдЕрд░реНрдерд╛рддреНред рднрд╛рд╖рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ред


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: github.com/irokez/Pyrus/tree/master/src

рдЖрд╡рд╛рд╕

рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдЪрд┐рд╣реНрдирд┐рдд рдорд╛рдорд▓рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд░рд╛рд╖реНрдЯреНрд░реАрдп рдХреЛрд░ рдХреЛ рдмрд╣реБрдд рд╣реА рд░рд╣рд╕реНрдпрдордп рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╣рд┐рдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╣реА, рдЖрдк рдХреЗрд╡рд▓ рдЧреНрд░рдВрдереЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдкреВрд░реЗ рд╡рд╛рд╣рд┐рдиреА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ:
"рдХреЙрд░реНрдкрд╕ рдХрд╛ рдСрдл-рд▓рд╛рдЗрди рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди 180 рд╣рдЬрд╛рд░ рд╢рдмреНрдж рдкреНрд░рдпреЛрдЧ (90 рд╣рдЬрд╛рд░ рдкреНрд░реЗрд╕, 90 рд╣рдЬрд╛рд░ рд╕рд╛рд╣рд┐рддреНрдпрд┐рдХ рдЧреНрд░рдВрдереЛрдВ, рдХрд╛рдиреВрди рдФрд░ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдЧреНрд░рдВрдереЛрдВ) рдХреЗ рдирд┐: рд╢реБрд▓реНрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛рдП рдЧрдП рд╢рдмреНрджрдХреЛрд╖ рдХреЗ рд╕рд╛рде рдХрд╛рд░рдкрд╕ рд╕реЗ рд╡рд╛рдХреНрдпреЛрдВ рдХрд╛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрдпрди (рдкрд░реЗрд╢рд╛рди рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде) рдореБрдлреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ" ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ
"рдХреЙрд░реНрдкрд╕ рдХреЛ рдСрдл-рд▓рд╛рдЗрди рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЧреИрд░-рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреБрдЫ рддрдХрдиреАрдХреА рдФрд░ / рдпрд╛ рдХреЙрдкреАрд░рд╛рдЗрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдХреЗрд╡рд▓ рдСрди-рд▓рд╛рдЗрди рдЙрдкрд▓рдмреНрдз рд╣реИред"

рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╕ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдирдореВрдирд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИ: www.ruscorpora.ru/download/shuffled_rnc.zip

рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдореМрдЬреВрдж рдлрд╛рдЗрд▓реЗрдВ Convert-rnc.py рдпреВрдЯрд┐рд▓рд┐рдЯреА рд╕реЗ рдЧреБрдЬрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ UTF-8 рдореЗрдВ рдмрджрд▓ рджреЗрддреА рд╣реИ рдФрд░ XML рдорд╛рд░реНрдХрдЕрдк рдХреЛ рд╕рд╣реА рдХрд░рддреА рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЕрднреА рднреА XML рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (xmllint рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП)ред Rnc.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд XML nat рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░реАрдбрд░ рд╡рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИред рдЖрд╡рд╛рд╕ред
 import xml.parsers.expat class Reader: def __init__(self): self._parser = xml.parsers.expat.ParserCreate() self._parser.StartElementHandler = self.start_element self._parser.EndElementHandler = self.end_element self._parser.CharacterDataHandler = self.char_data def start_element(self, name, attr): if name == 'ana': self._info = attr def end_element(self, name): if name == 'se': self._sentences.append(self._sentence) self._sentence = [] elif name == 'w': self._sentence.append((self._cdata, self._info)) elif name == 'ana': self._cdata = '' def char_data(self, content): self._cdata += content def read(self, filename): f = open(filename) content = f.read() f.close() self._sentences = [] self._sentence = [] self._cdata = '' self._info = '' self._parser.Parse(content) return self._sentences 


Reader.read (рд╕реНрд╡рдпрдВ, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо) рд╡рд┐рдзрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддреА рд╣реИ рдФрд░ рд╡рд╛рдХреНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ:
 [[('`', {'lex': '', 'gr': 'S,m,anim=sg,nom'}), ('`', {'lex': '', 'gr': 'S,f,inan=sg,gen'}), ('`', {'lex': '', 'gr': 'A-PRO=f,sg,acc'}), ('`', {'lex': '', 'gr': 'S,m,anim=pl,nom'}), ('`', {'lex': '', 'gr': 'V,pf,tran=pl,act,praet,indic'}), ('', {'lex': '', 'gr': 'PR'}), ('', {'lex': '', 'gr': 'S,m,inan,0=sg,gen'}), ('`', {'lex': '', 'gr': 'V,pf,tran=m,sg,act,praet,indic'}), ('', {'lex': '', 'gr': 'S-PRO,pl,3p=dat'}), ('`', {'lex': '', 'gr': 'A=n,sg,acc,inan,plen'}), ('`', {'lex': '', 'gr': 'S,n,inan=sg,acc'}), ('', {'lex': '', 'gr': 'PR'}), ('', {'lex': '', 'gr': 'S-PRO,n,sg=acc'}), ('`', {'lex': '', 'gr': 'V,pf,intr,med=m,sg,praet,indic'}), ('`', {'lex': '', 'gr': 'S,f,inan=sg,ins'})]] 


рд╕реАрдЦрдирд╛ рдФрд░ рдорд╛рд░реНрдХрдЕрдк рдХрд░рдирд╛

SVM рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: http://www.csie.ntu.edu.tw/~cjlin/liblinear/ ред рддреАрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рддрд╣рдд рдЕрдЬрдЧрд░ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд░реИрдкрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреИрдЪ рд▓рд┐рдЦрд╛ред

рдкреЙрдЬрд╝реНрдбреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджреЛ рдореБрдЦреНрдп рд╡рд░реНрдЧ рд╣реЛрддреЗ рд╣реИрдВ: рдЯреИрдЧрд░ рдФрд░ рдЯреИрдЧрд░рдлреНрд░реАрдЪрд░ ред рдЯреЗрдЧрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдкрд╛рда рдХрд╛ рдорд╛рд░реНрдХрдЕрдк рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЛ рдЙрд╕рдХреЗ рдмреЛрд▓рдиреЗ рдХреЗ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред Tagger.train рдкрджреНрдзрддрд┐ (рд╕реНрд╡рдпрдВ, рд╡рд╛рдХреНрдп, рд▓реЗрдмрд▓) рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдХреНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА (rnc.Reader.read рдХреЗ рд╕рдорд╛рди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ) рд▓реЗрддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рднрд╛рд╖рдг рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ SVM тАЛтАЛрдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред LIBLINEARред рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХреЛ рдмрд╛рдж рдореЗрдВ (Tagger.save рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореЙрдбрд▓ рдХреЛ рд╣рд░ рдмрд╛рд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред Tagger.label (рд╕реНрд╡, рд╡рд╛рдХреНрдп) рд╡рд┐рдзрд┐ рд╡рд╛рдХреНрдп рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреА рд╣реИ ред

TaggerFeatures рд╡рд░реНрдЧ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред TaggerFeatures.from_body () рдПрдХ рд╢рдмреНрдж рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдХреЙрд░реНрдкрд╕ рдореЗрдВ рд╢рдмреНрдж рдЖрдИрдбреА рд▓реМрдЯрд╛рддрд╛ рд╣реИред TaggerFeatures.from_suffix () рдФрд░ TaggerFeatures.from_prefix () рд╢рдмреНрджреЛрдВ рдХреЗ рдЕрдВрдд рдФрд░ рдЙрдкрд╕рд░реНрдЧ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред

рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЯреНрд░реЗрди рдПрд░реЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЧрдИ рдереА рдЬреЛ rnc.Reader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реЗрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ Tagger.train рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ:
 import sys import re import rnc import pos sentences = [] sentences.extend(rnc.Reader().read('tmp/media1.xml')) sentences.extend(rnc.Reader().read('tmp/media2.xml')) sentences.extend(rnc.Reader().read('tmp/media3.xml')) re_pos = re.compile('([\w-]+)(?:[^\w-]|$)'.format('|'.join(pos.tagset))) tagger = pos.Tagger() sentence_labels = [] sentence_words = [] for sentence in sentences: labels = [] words = [] for word in sentence: gr = word[1]['gr'] m = re_pos.match(gr) if not m: print(gr, file = sys.stderr) pos = m.group(1) if pos == 'ANUM': pos = 'A-NUM' label = tagger.get_label_id(pos) if not label: print(gr, file = sys.stderr) labels.append(label) body = word[0].replace('`', '') words.append(body) sentence_labels.append(labels) sentence_words.append(words) tagger.train(sentence_words, sentence_labels, True) tagger.train(sentence_words, sentence_labels) tagger.save('tmp/svm.model', 'tmp/ids.pickle') 


рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЕрдВрддрддрдГ рдкрд╛рда рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд▓реАред рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ test.py рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 import sys import pos sentence = sys.argv[1].split(' ') tagger = pos.Tagger() tagger.load('tmp/svm.model', 'tmp/ids.pickle') rus = { 'S': '.', 'A': '.', 'NUM': '.', 'A-NUM': '.-.', 'V': '.', 'ADV': '.', 'PRAEDIC': '', 'PARENTH': '', 'S-PRO': '. .', 'A-PRO': '. .', 'ADV-PRO': '. .', 'PRAEDIC-PRO': '. .', 'PR': '', 'CONJ': '', 'PART': '', 'INTJ': '.', 'INIT': '', 'NONLEX': '' } tagged = [] for word, label in tagger.label(sentence): tagged.append((word, rus[tagger.get_label(label)])) print(tagged) 


рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
$ src/test.py " , "
[('', '.'), ('', '.'), ('', '. .'), ('', '.'), ('', '.'), (',', '.'), ('', ''), ('', '.'), ('', ''), ('', '.')]


рдкрд░реАрдХреНрд╖рдг


рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╡рд░реНрдЧреАрдХрд░рдг рдХреА рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╡рд┐рдзрд┐ Tagger.train () рдореЗрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ cross_validation рд╣реИ , рдЬреЛ рдпрджрд┐ True рдкрд░ рд╕реЗрдЯ рд╣реИ, рддреЛ рдХреНрд░реЙрд╕ рдЪреЗрдХ рдХрд░реЗрдЧрд╛ , рдЕрд░реНрдерд╛рддреНред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЛ K рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЛ рд╡рд┐рдзрд┐ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╢реЗрд╖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ 92% рдХреА рдФрд╕рдд рд╕рдЯреАрдХрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдЬреЛ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдиреЗрдЯ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рд╕реБрд▓рдн рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрд╡рд╛рд╕ред рдЖрдорддреМрд░ рдкрд░, рднрд╛рд╖рдг рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдХреА рд╕рдЯреАрдХрддрд╛ 96-98% рддрдХ рд╣реЛрддреА рд╣реИ ред

рдирд┐рд╖реНрдХрд░реНрд╖ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдиреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ред рдЖрд╡рд╛рд╕ред рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдмрд╣реБрдд рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореИрдВрдиреЗ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрднреА рддрдХ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рд╣реИред

рдкрд░рд┐рдгрд╛рдореА рдорд╛рд░реНрдХрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЕрдиреНрдп рд░реВрдкрд╛рддреНрдордХ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЦреНрдпрд╛, рд▓рд┐рдВрдЧ, рдХреЗрд╕, рдЖрджрд┐ред рдореИрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреНрдпрд╛ рдХрд░реВрдВрдЧрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкрд╛рд░реНрд╕рд░ рдХреЛ рд╡рд╛рдХреНрдп рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЙрд░реНрдкрд╕ рдХреЗ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд╕рд╡рд╛рд▓реЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ: github.com/irokez/Pyrus
рдбреЗрдореЛ: http://vps11096.ovh.net:8080

Source: https://habr.com/ru/post/In125988/


All Articles