рд╣рдо рд╕рдВрджреЗрд╢реЛрдВ рдХреА рднрд╛рд╖рд╛ рдХреЛ рд╕рд░рд▓ рдФрд░ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ


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


рд▓реЗрдЦ рдХреА рд░реВрдкрд░реЗрдЦрд╛


  1. рднрд╛рд╖рд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рдорд╕реНрдпрд╛рдПрдБ
  2. рд╕рд╕реНрддреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рдзрд╛рди
    • рдХреЙрдореНрдкреИрдХреНрдЯ рднрд╛рд╖рд╛ рдбрд┐рдЯреЗрдХреНрдЯрд░ 2
    • FastText
  3. рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЖрдХрд▓рди
  4. рдирд┐рд╖реНрдХрд░реНрд╖

1. рднрд╛рд╖рд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ


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


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


2. рдЙрдкрд▓рдмреНрдз рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рдзрд╛рди


рдХреЙрдореНрдкреИрдХреНрдЯ рднрд╛рд╖рд╛ рдбрд┐рдЯреЗрдХреНрдЯрд░ 2


CLD2 рдПрдХ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдмреЗрд╕реНрдб рдкреНрд░реЛрдмреЗрдмрд┐рд▓рд┐рд╕реНрдЯрд┐рдХ рдореЙрдбрд▓ (Naive Baessian classifier) тАЛтАЛрд╣реИ рдЬреЛ UTF-8 рдпрд╛ html / xml рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд╛рда рдХреЗ рд▓рд┐рдП 83 рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдорд┐рд╢реНрд░рд┐рдд рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓ рд╢реАрд░реНрд╖ 3 рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдЧрдгрдирд╛ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдкрд╛рда рдХреЗ рдЕрдиреБрдорд╛рдирд┐рдд рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдореЙрдбрд▓ рдЗрд╕рдХреЗ рдЙрддреНрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ "рдЕрдирдЪрд╛рд╣рд╛" рдЯреИрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред


рдЗрд╕ рдореЙрдбрд▓ рдХреА рд╕рдЯреАрдХрддрд╛ рдФрд░ рдкреВрд░реНрдгрддрд╛ рдХрд╛рдлреА рдЕрдЪреНрдЫреЗ рд╕реНрддрд░ рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рд▓рд╛рдн рдЧрддрд┐ рд╣реИред рд░рдЪрдирд╛рдХрд╛рд░ 1ms рдореЗрдВ 30kb рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╛рдпрдерди рд░реИрдкрд░ рдХреЗ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рд╣рдореЗрдВ 1ms рдореЗрдВ 21 рд╕реЗ 26kb (70,000-85,000 рд╕рдВрджреЗрд╢ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб) рдкреНрд░рд╛рдкреНрдд рд╣реБрдП, рдЬрд┐рд╕рдХрд╛ рдФрд╕рдд рдЖрдХрд╛рд░ 0.8kb рдФрд░ рдордВрдЭрд▓рд╛ 0.3kb рд╣реИред


рдЗрд╕ рдШреЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдЕрдЬрдЧрд░ рд░реИрдкрд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдпрд╛ рд╣рдорд╛рд░реЗ рдбреЙрдХрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдПрдХ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ pycld2 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдХреЛрдб рдХреА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦреЗрдВ:


Cld2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрд╛рд╖рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛
 import pycld2 as cld2 cld2.detect("Bonjour, Habr!") # (True, # 14, # (('FRENCH', 'fr', 92, 1102.0), # ('Unknown', 'un', 0, 0.0), # ('Unknown', 'un', 0, 0.0))) 

рдбрд┐рдЯреЗрдХреНрдЯрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХ рддреАрди-рддрддреНрд╡ рдЯрдкрд▓ рд╣реИ:


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

FastText


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


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


рдлреЗрд╕рдмреБрдХ рдЕрдиреБрд╕рдВрдзрд╛рди рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреЛ рдореЙрдбрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:


  • рдврдХреНрдХрдиред резрем lid.рдмреАрди , рдЬреЛ рджреВрд╕рд░реЗ рдореЙрдбрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рддреЗрдЬрд╝ рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╡рдЬрди резреи. рдПрдордмреА рд╣реИ ;
  • lid.176.ftz - рдореВрд▓ рдореЙрдбрд▓ рдХрд╛ рдПрдХ рд╕рдВрдкреАрдбрд╝рд┐рдд рд╕рдВрд╕реНрдХрд░рдгред

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


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


рдлрд╛рд╕реНрдЯрдЯреЗрдХреНрд╕реНрдЯ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рднрд╛рд╖рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛
 from pyfasttext import FastText model = FastText('../model/lid.176.bin') model.predict_proba(["Bonjour, Habr!"], 3) #[[('fr', 0.7602248429835308), # ('en', 0.05550386696556002), # ('ca', 0.04721488914800802)]] 

FastText'a рдореЙрдбрд▓ рдПрди-рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ n = 1 рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдордиреЗ рд╢реАрд░реНрд╖ 3 рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдШрдЯрд╛ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рда рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рди рдХрд┐ рдЙрди рдкрд╛рддреНрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рднрд╛рд╖рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ cld2 рдореЙрдбрд▓ рдореЗрдВ рдорд╛рдорд▓рд╛ рдерд╛ред рдЧрддрд┐ рднреА рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реИ - рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 60,000 рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрджреЗрд╢ред


3. рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЖрдХрд▓рди


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


рднрд╛рд╖рд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдЯреАрдХрддрд╛, рдкреВрд░реНрдгрддрд╛ рдФрд░ рдПрдл 1 рд╣реЛрдЧрд╛ред рдЪрд▓реЛ рдЙрдиреНрд╣реЗрдВ рдЧрд┐рдирддреЗ рд╣реИрдВ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:


рджреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рддреБрд▓рдирд╛
 with open("../data/lang_data.txt", "r") as f: text_l, cld2_l, ft_l, g_l = [], [], [], [] s = '' for i in f: s += i if ' |end\n' in s: text, cld2, ft, g = s.strip().rsplit(" ||| ", 3) text_l.append(text) cld2_l.append(cld2) ft_l.append(ft) g_l.append(g.replace(" |end", "")) s='' data = pd.DataFrame({"text": text_l, "cld2": cld2_l, "ft": ft_l, "google": g_l}) def lang_summary(lang, col): prec = (data.loc[data[col] == lang, "google"] == data.loc[data[col] == lang, col]).mean() rec = (data.loc[data["google"] == lang, "google"] == data.loc[data["google"] == lang, col]).mean() return round(prec, 3), round(rec, 3), round(2*prec*rec / (prec + rec),3) results = {} for approach in ["cld2", "ft"]: results[approach] = {} for l in data["google"].value_counts().index[:20]: results[approach][l] = lang_summary(l, approach) res = pd.DataFrame.from_dict(results) res["cld2_prec"], res["cld2_rec"], res["cld2_f1"] = res["cld2"].apply(lambda x: [x[0], x[1], x[2]]).str res["ft_prec"], res["ft_rec"], res["ft_f1"] = res["ft"].apply(lambda x: [x[0], x[1], x[2]]).str res.drop(columns=["cld2", "ft"], inplace=True) arrays = [['cld2', 'cld2', 'cld2', 'ft', 'ft', 'ft'], ['precision', 'recall', 'f1_score', 'precision', 'recall', 'f1_score']] tuples = list(zip(*arrays)) res.columns = pd.MultiIndex.from_tuples(tuples, names=["approach", "metrics"]) 

рдЖрджрд░реНрд╢cld2рдлреБрдЯans
рдореИрдЯреНрд░рд┐рдХреНрд╕precрдЖрд░рдИрд╕реАf1precрдЖрд░рдИрд╕реАf1precрдЖрд░рдИрд╕реАf1
ar0.9920.7250.8380.91806970.7930.9680.7880.869
az0.950.7520.8390.8880.54706770.9140.7870.845
bg0.5290.1360.2170.2860.1780.2190.4080.2140.281
en0.94908440.8940.8850.8690.8770.9120.9250.918
es0.9870.6530.7860.7090.81407580.8280.8340831
fr0.991071308290.530.8030.63807130.810758
рдЖрдИрдбреА0.7630.5430.63404810.40404390.6590.6030.63
рдпрд╣0.9750.46606310.51907780.6220.6660.7520706
ja0.9940.8990.94406020.8420.70208470.9050.875
ka0.9620.9950.9790.9590.9050.9310.9580.9950.976
рдХреЗ.рдХреЗ.0.9080.65307590.8040.5840677083107130767
ko0.9840.8860.9330.940.7040.8050.9660.910.937
рдПрдордПрд╕0.8010.5780.6720.3690.1010.1590.7305860.65
pt0.9680.75308470.8050.7710.7880.8670.8640.865
рдЖрд░рдпреВ0.9870.8090.8890.9360.9330.9350.95309480.95
sr0.0930.1140.1030.1740.1030.130.1060.160.128
рд╡реЗрдВ0.9890.9860.9870.97309270.950.9790.9860.983
рдЯреАрдЖрд░09610.6390.7680.6070.73066307690.7640767
рдпреВрдХреЗ0.94906710.7860.6150.73306690.7740.7770.775
рдЙрдЬ0.6660.5120.5790.770.1690.2780.6550.5410.592

рдкрд░рд┐рдгрд╛рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рднрд╛рд╖рд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ cld2 рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдЯреАрдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЕрд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ 90% рд╕реЗ рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ, рдФрд░ 90% рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдлрд╛рд╕реНрдЯрдЯреЗрдХреНрд╕ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рдорд╛рди рдкреВрд░реНрдгрддрд╛ рдХреЗ рд╕рд╛рде, f1 cld2 рдкрд░ рддреЗрдЬ рд╣реИред
Cld2 рдореЙрдбрд▓ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ, рдпрд╣ рдЙрдЪреНрдЪ рд╕рдЯреАрдХрддрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред Fasttext'a рдореЙрдбрд▓ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдЯреАрдХрддрд╛ рдХрд╛рдлреА рдХрдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдкреВрд░реНрдгрддрд╛ рдХрд╛рдлреА рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдзреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрдо рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдлрд╛рд╕реНрдЯрдЯреЗрдХреНрд╕ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рджрд╣рд▓реАрдЬ рдХреЛ "рдореЛрдбрд╝" рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдЯреАрдХрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


4. рдирд┐рд╖реНрдХрд░реНрд╖


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


рдЖрдк рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдФрд░ рд╣рдорд╛рд░реЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред


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

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


All Articles