рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛, рд╡реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдирдИ рдПрдкреНрд▓реАрдХреЗрд╢рди рдорд┐рд▓рдиреЗ рдкрд░ d├йj├а vu рднрд╛рд╡рдирд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ: "рдпрд╣ рдРрд╕рд╛ рдерд╛, рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ"ред рдЖрдк рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд┐рдЫрд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛: рдШрдЯрдирд╛ рддреЗрдЬреА рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧреА, рдпрд╛ рдореВрд▓ рдХрд╛рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
"рдпреБрд╡рд╛" рдХрд░реНрдордЪрд╛рд░реА рдЬреЛ рд╕рд┐рд░реНрдл рдЯреАрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реБрдП рд╣реИрдВ рдЙрдирдХреЗ рд╕рд┐рд░ рдореЗрдВ рдРрд╕реА рдХреЛрдИ рдХрд╣рд╛рдиреА рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╡реЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдПрдХ рд╕рдорд╛рди рдШрдЯрдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЫрд╣ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╣реБрдИ рдереАред рдФрд░ рдЕрдЧрд▓реЗ рдХрдорд░реЗ рдХреЗ рд╕рд╣рдХрд░реНрдореА рдиреЗ рдЙрд╕ рдШрдЯрдирд╛ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, "рдпреБрд╡рд╛" рдХрд░реНрдордЪрд╛рд░реА рдШрдЯрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рди рдирд╣реАрдВ рджрд┐рдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЦрд░реЛрдВрдЪ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдВрдЧреЗред рдЕрдзрд┐рдХ рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░реЗрдВ, рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рддреЗрдЬреА рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗред рдпрд╛ рд╢рд╛рдпрдж рд╡реЗ рдирдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдзрд╛рд░рд╛ рдХреЗ рддрд╣рдд рддреБрд░рдВрдд рдЗрд╕реЗ рднреВрд▓ рдЬрд╛рдПрдВрдЧреЗред рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рд╕рдм рдХреБрдЫ рд╣реЛрдЧрд╛ред
рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдордПрд▓ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реА рдЯреАрдо рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ "рдкрд╣рд▓реЗ рд╕реЗ рдмрдВрдж рд╕рдорд╛рди рдШрдЯрдирд╛рдУрдВ" рдХреА рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдПрдордПрд▓ рдореЙрдбрд▓ рдмрдирд╛рдпрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг - рдХрдЯреМрддреА рдХреЗ рддрд╣рддред
рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП?
рдкреНрд░рддреНрдпреЗрдХ рдЖрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП, рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ "рд╕рдорд╛рди" рдмрдВрдж рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред "рд╕рдорд╛рдирддрд╛" рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдШрдЯрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдзрд┐рдорд╛рдирддрдГ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╕рд╣рд╛рдпрдХ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИред
рдШрдЯрдирд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрд░реНрдХ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг, рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг (рдпрджрд┐ рдХреЛрдИ рд╣реЛ), рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреА рдХреЛрдИ рднреА рд╡рд┐рд╢реЗрд╖рддрд╛ред
рдЯреАрдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ 4 рд╕рдореВрд╣реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдШрдЯрдирд╛рдУрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдЬреЛ рдореИрдВ рд╕рдорд╛рди рд▓реЛрдЧреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рд▓рдЧрднрдЧ 10 рд╣рдЬрд╛рд░ рд╣реИред
рдкрд╣рд▓рд╛ рдлреИрд╕рд▓рд╛
рд╣рд╛рде рдкрд░ рдШрдЯрдирд╛рдУрдВ рдХреА "рд╕рдорд╛рдирддрд╛" рдкрд░ рдХреЛрдИ рд╕рддреНрдпрд╛рдкрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╕рд┐рдпрд╛рдореА рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдлрд┐рд▓рд╣рд╛рд▓ рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреА рд╣реИ, рд╡рд╣ "рд╢рдмреНрджреЛрдВ рдХреА рдереИрд▓реА" рдХреА рд╕рд░рд▓ рдЧреБрддреНрдереА рд╣реИ рдЬреЛ рдЕрдкреАрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдмрдиреА рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдШрдЯрдирд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдЖрд╡рд╢реНрдпрдХ рдкрд╛рда рдЕрдВрд╢реЛрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдирд╛
- рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ / рд╕рдлрд╛рдИ
- TF-IDF рд╡реЗрдХреНрдЯрд░рдХрд░рдг
- рдЕрдкрдиреЗ рдирд┐рдХрдЯрддрдо рдкрдбрд╝реЛрд╕реА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╕рдорд╛рдирддрд╛ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреА рддреБрд▓рдирд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдЧреА: рдПрдХ рд╣реА рд╢рдмреНрдж рдпрд╛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдПрди-рдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ "рд╕рдорд╛рдирддрд╛" рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред
рдмреЗрд╢рдХ, рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓реАрдХреГрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдХрд┐ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рд┐рдЯ рдХреЗ рдЧреНрд░рдВрдереЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд╛рди рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдШрдЯрдирд╛рдПрдВ рд╕рдорд╛рди рд╣реИрдВред рдкрд╛рда рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╡рд┐рднрд╛рдЧ рдХрд╛ рдирд╛рдо рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдЧрдардиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╡рд┐рднрд╛рдЧреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреАред
рдЖрд╡рд╢реНрдпрдХ рдкрд╛рда рдЕрдВрд╢реЛрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдирд╛
рдШрдЯрдирд╛ рдбреЗрдЯрд╛ рд╣рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ service-now.com рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ - рдХрд╕реНрдЯрдо рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдХрд░ рдФрд░ CSV рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗред
рдШрдЯрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд░реНрдерди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдмрджрд▓реЗ рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдмрдбрд╝реЗ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЗ рдкреВрд░реЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдкрд╣рд▓реА рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ "рдХрдЯ рдЖрдЙрдЯ" рдХреА рдЬрд╛рдиреА рдереАред
- рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд░реЗрдЦрд╛ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ <рдЬрдм> - <рдЬреЛ>ред
- рд╕рдВрджреЗрд╢ рдЕрдХреНрд╕рд░ рдФрдкрдЪрд╛рд░рд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдЕрдкреАрд▓ рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдереАред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╢рдмреНрджреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ "fonil" рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рднреА рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛ред
рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛:
def get_first_message(messages): res = "" if len(messages) > 0:
рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдШрдЯрдирд╛ рдЧреНрд░рдВрде
рд╡рд░реНрдЧреАрдХрд░рдг рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкреАрд▓ рдкрд╛рда рдкреВрд░реНрд╡-рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реИред
рдШрдЯрдирд╛ рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреБрдХрдбрд╝реЗ рдкрд╛рдП рдЧрдП: рддрд┐рдерд┐рдпрд╛рдВ, рд╕рд░реНрд╡рд░ рдирд╛рдо, рдЙрддреНрдкрд╛рдж рдХреЛрдб, рдЖрдИрдкреА рдкрддреЗ, рд╡реЗрдм рдкрддреЗ, рдирд╛рдореЛрдВ рдХреЗ рдЧрд▓рдд рд░реВрдк рдЖрджрд┐ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдЕрд╡рдзрд╛рд░рдгрд╛ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЕрдВрдд рдореЗрдВ, рд╢рдмреНрджреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдорд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдмрд╣реБрд╡рдЪрди рд░реВрдкреЛрдВ рдФрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрдВрдд рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реАред рдкреНрд░рд╕рд┐рджреНрдз snowballstemmer
рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдЯреЗрдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреНрд░реЛрд╕реЗрд╕ рдХреЛ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд┐рдВрдЧ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡реИрд╕реЗ, рдпрд╣ рдирд┐рдХрд▓рд╛ (рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ) рдХрд┐ stemmer.stemWord()
рд╡рд┐рдзрд┐ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдХреЗ рднреАрддрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдкрд╛рда рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, joblib
рд╕рдорд╛рдирд╛рдВрддрд░ / рд╡рд┐рд▓рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рддреЛ рд╕реНрдЯреЗрдо рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рддрд╛рд▓реЗ рд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
__replacements = [ ('(\d{1,3}\.){3}\d{1,3}', 'IPV4'), ('(?<=\W)((\d{2}[-\/ \.]?){2}(19|20)\d{2})|(19|20)\d{2}([-\/ \.]?\d{2}){2}(?=\W)', 'YYYYMMDD'), ('(?<=\W)(19|20)\d{2}(?=\W)', 'YYYY'), ('(?<=\W)(0|1)?\d\s?(am|pm)(?=\W)', 'HOUR'), ('http[s]?:\/\/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', 'SOMEURL')
vectorization
рдирд┐рдореНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдорд╛рдирдХ TfidfVectorizer
рджреНрд╡рд╛рд░рд╛ TfidfVectorizer
рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
max_features
= 10000ngram
= (1,3) - рд╕реНрдерд┐рд░ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдФрд░ рдЕрд░реНрде рд╕рдВрдпреЛрдЬреА рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВmax_df
/ min_df
- рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛stop_words
- рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рдмреНрджреЛрдВ рдХреА рдПрдХ рдорд╛рдирдХ рд╕реВрдЪреА, рдФрд░ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЕрдкрдирд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдореВрд╣ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдирд╛рдореЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛, рдФрд░ рдЕрдХреНрд╕рд░ рдЙрдЪрд┐рдд рдирд╛рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧреБрдг рдмрди рдЧрдПред
TfidfVectorizer
рд╕реНрд╡рдпрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ L2 рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдШрдЯрдирд╛ рд╡реИрдХреНрдЯрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХреЛрд╕рд╛рдЗрди рджреВрд░реА рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред
рдЗрд╕реА рддрд░рд╣ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░реЗрдВ
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдирд┐рдХрдЯрддрдо рдПрди рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИред sklearn.neighbors.NearestNeighbors
рд╡рд░реНрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИред рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ transform
рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ pipeline
рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ Transformer
рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЬреЛ рддрдм рд╣реА рдЗрд╕реЗ pipeline
рдХреЗ рдЕрдВрддрд┐рдо рдЪрд░рдг рдкрд░ рд░рдЦрддрд╛ рдерд╛:
class NearestNeighborsTransformer(NearestNeighbors, TransformerMixin): def __init__(self, n_neighbors=5, radius=1.0, algorithm='auto', leaf_size=30, metric='minkowski', p=2, metric_params=None, n_jobs=None, **kwargs): super(NearestNeighbors, self).__init__(n_neighbors=n_neighbors, radius=radius, algorithm=algorithm, leaf_size=leaf_size, metric=metric, p=p, metric_params=metric_params, n_jobs=n_jobs) def transform(self, X, y=None): res = self.kneighbors(X, self.n_neighbors, return_distance=True) return res
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛
рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдХрд░, рд╣рдореЗрдВ рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИ:
p = Pipeline( steps=[ ('grp', ColumnTransformer( transformers=[ ('text', Pipeline(steps=[ ('pp', CommentsTextTransformer(n_jobs=-1)), ("tfidf", TfidfVectorizer(stop_words=get_stop_words(), ngram_range=(1, 3), max_features=10000)) ]), ['short_description', 'comments', 'u_impacted_department'] ) ] )), ("nn", NearestNeighborsTransformer(n_neighbors=10, metric='cosine')) ], memory=None)
рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдмрд╛рдж, pipeline
рдХреЛ pickle
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░, рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдирд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдмрдЪрд╛рдПрдВрдЧреЗ - рдмрд╛рдж рдореЗрдВ рдореЙрдбрд▓ рдХреЗ рдЪрд▓рдиреЗ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдкрд╣рд▓реЗ рдЖрд╡реЗрджрди рдкрд░рд┐рдгрд╛рдо
"рд╕рдВрдХреЗрдд" рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреА рд╢реБрд░реВрдЖрдд рдХреЗ рд▓рд┐рдП рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдо рддреМрд░ рдкрд░ рдмрд╣реБрдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рдереАред рдЖрд╡рд░реНрддреА рдШрдЯрдирд╛рдПрдВ рддреЗрдЬреА рд╕реЗ рд╣рд▓ рд╣реЛрдиреЗ рд▓рдЧреАрдВ, рд╣рдордиреЗ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдИ рднреА рд╕реАрдЦрдиреЗ рдХреА рдЕрдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдЪрдорддреНрдХрд╛рд░ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдиреЗ рд╢рд┐рдХрд╛рдпрдд рдХреА рдХрд┐ рдХрднреА-рдХрднреА рд╕рд┐рд╕реНрдЯрдо рдкреВрд░реА рддрд░рд╣ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдпрд╣ рд╕рдордЭрдирд╛ рднреА рдореБрд╢реНрдХрд┐рд▓ рдерд╛ рдХрд┐ рдРрд╕реА рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдХрд╣рд╛рдБ рд╕реЗ рдЖрддреА рд╣реИрдВред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рдореЙрдбрд▓ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИред рдХреБрдЫ рдХрдорд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдШрдЯрдирд╛ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдпрд╛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рднрд╛рдЧ - рд╡рд░реНрддрдорд╛рди рдШрдЯрдирд╛ рдФрд░ "рд╕рд┐рдлрд╛рд░рд┐рд╢" рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХрдЯрдСрдл рд╕реНрддрд░ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗред рдЕрдиреНрдп рд╡реИрд╢реНрд╡реАрдХрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдЧреБрдгрд╡рддреНрддрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдХрдореА рдереАред рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛ "рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдмреБрд░рд╛ рд╣реИ, рдФрд░ рдХрд┐рддрдирд╛ рд╣реИ", рдФрд░ рдЗрд╕ рдкрд░ рдореЙрдбрд▓ рдХреА рддреБрд▓рдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ HTTP рд▓реЙрдЧреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рдереА, рдХреНрдпреЛрдВрдХрд┐ рд╕реЗрд╡рд╛ рдкреНрд░рдгрд╛рд▓реА рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ (рд╕рд╛рд╕)ред рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХрд┐рдП - рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗред рдорд╛рддреНрд░рд╛рддреНрдордХ рдЖрдХрд▓рди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдФрд░ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдкрд╖реНрдЯ рдЧреБрдгрд╡рддреНрддрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдерд╛ред
рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ ...