
BERT, Google рдХрд╛ рдПрдХ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ, рдЬреЛ рдХрд┐ рдХрдИ рдмрдбрд╝реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИред BERT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдХрд┐рд╕реА рднреА рд░реВрдк рдореЗрдВ рдкреВрдЫреЗ рдЧрдП рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдВ, рдЪреИрдЯ рдмреЙрдЯ рдмрдирд╛рдПрдВ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрд╡рд╛рджрдХ, рдкрд╛рда рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред
Google рдиреЗ рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд BERT рдореЙрдбрд▓ рдкреЛрд╕реНрдЯ рдХрд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рд╡реЗ рдкреНрд░рд▓реЗрдЦрди рдХреА рдХрдореА рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ BERT рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдХреИрд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реИ, рд╕рд╛рде рд╣реА Google Colab рдкрд░ рдореБрдлреНрдд рд╕рд░реНрд╡рд░ GPU рдкрд░ рднреАред
рдРрд╕рд╛ рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реИ
рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдкрддреНрд░ рдХреЛ рдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░ рдПрдХ рдкрддреНрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖рд░ рдХреЛ 0 рд╕реЗ 32 рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХреВрдЯрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╕рд╛рде рд╣реА рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рд░реНрдЬрд┐рди)ред рдпрд╣ рддрдерд╛рдХрдерд┐рдд рдЪрд░рд┐рддреНрд░-рд╕реНрддрд░ рд╣реИред
рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ рдЕрдЧрд░ рд╣рдо рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рдПрдХ рдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдкреБрдЯ рдХреЛ рддреБрд░рдВрдд рдПрдХ рдкреВрд░рд╛ рд╢рдмреНрдж (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╢рдмреНрджрд╛рдВрд╢) рд╕рдмрдорд┐рдЯ рдХрд░рдХреЗред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╢рдмреНрдж-рд╕реНрддрд░ рд╣реЛрдЧрд╛ред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рд╕рднреА рдореМрдЬреВрджрд╛ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд╢рдмреНрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЦрд┐рд▓рд╛рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ 1678 рдореЗрдВ "рдбреЙрдЧ" рд╢рдмреНрдж рдЗрд╕ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП 1678 рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдореЗрдВ, "рдХреБрддреНрддреЗ" рд╢рдмреНрдж рдХреЗ рд╕рд╛рде, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрдШ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдкреЙрдк рдЕрдк рдХрд░рддреЗ рд╣реИрдВ: "рд╢рд░рд╛рдмреА", "рдмреБрд░рд╛рдИ", "рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рджреЛрд╕реНрдд"ред рдХреНрдпрд╛ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ рд╣рдорд╛рд░реА рд╕реЛрдЪ рдХреА рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдпрд╣ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╢рдмреНрдж рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рддрд╛рдХрд┐ рдЕрд░реНрде рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╢рдмреНрдж рдПрдХ рд╕рд╛рде рдЦрдбрд╝реЗ рд╣реЛрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ "рдХреБрддреНрддреЗ" рдХреЗ рд▓рд┐рдП рдирдВрдмрд░ 1678, рдФрд░ рд╢рдмреНрдж "рд╢рд░рд╛рдмреА" рдХреЗ рд▓рд┐рдП 1680 рдирдВрдмрд░ рдХреЗ рд▓рд┐рдП рдмрддрд╛рдпрд╛ рдЬрд╛рдПред рдФрд░ "рдЪрд╛рдпрджрд╛рдиреА" рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛ 9000 рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдЦреНрдпрд╛ 1678 рдФрд░ 1680 рд╕рдВрдЦреНрдпрд╛ 9000 рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИрдВред
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрдИ - 32 рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рджрд┐рд╢, рдХрд╣рддреЗ рд╣реИрдВред рдФрд░ рджреВрд░реА рдХреЛ рдЙрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдпреЗ рд╡реИрдХреНрдЯрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЖрдпрд╛рдо рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдПрдХ рд╡реЗрдХреНрдЯрд░ 32 рдЕрдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рддрдХ, рдпрд╣ 32 рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде, рдпрд╛ 32 рдЕрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд╛рди рд╣реИ)ред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рд╢рдмреНрдж рдХреА рддреБрд▓рдирд╛ рдПрдХ рд╕рд╛рде рдХрдИ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрд░реНрде рдореЗрдВ рдХрд░реАрдм рд╣реИрдВ (рдЬрд┐рд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдВрдХрдЧрдгрд┐рдд рд╕рдВрдЪрд╛рд▓рди рд╡реИрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрджрд╛рд╣рд░рдг: рдпрджрд┐ рдЖрдк рд╡реЗрдХреНрдЯрд░ "рдореИрди" рдХреЛ рд╡реЗрдХреНрдЯрд░ рд╕реЗ рдШрдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ "рдХрд┐рдВрдЧ" рд╢рдмреНрдж рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдФрд░ "рдорд╣рд┐рд▓рд╛" рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рд╡реЗрдХреНрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд░рд┐рдгрд╛рдо рд╡реЗрдХреНрдЯрд░ рдорд┐рд▓рддрд╛ рд╣реИред рдФрд░ рд╡рд╣ рдЪрдорддреНрдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ "рд░рд╛рдиреА" рд╢рдмреНрдж рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, "рд░рд╛рдЬрд╛ рдкреБрд░реБрд╖ + рд╕реНрддреНрд░реА = рд░рд╛рдиреА рд╣реИред" рдЬрд╛рджреВ! рдФрд░ рдпрд╣ рдПрдХ рд╕рд╛рд░ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ ред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдкрдиреЗ рдЗрдирдкреБрдЯ рдкрд░ рдЧрдгрд┐рддреАрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреА рдЗрддрдиреА рдЙрдЪреНрдЪ рджрдХреНрд╖рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдПрдВрдмреЗрдбрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рднреА рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдкреИрдХреЗрдЬ (TensorFlow, PyTorch) рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдкрд╣рд▓реА рдкрд░рдд рдХреЛ рдПрдВрдмреЗрдбрд┐рдВрдЧ рд▓реЗрдпрд░ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд░рдд рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рд╣рдо рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрдж рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд▓реЗрдпрд░, рд╕реНрд╡-рд╢рд┐рдХреНрд╖рдг, рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓рдВрдмрд╛рдИ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ, 32 рдирдВрдмрд░ред
рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рджрд┐рд╢ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рд╢рдмреНрджреЛрдВ рдХреЗ рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд▓рд╛рднрджрд╛рдпрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░реЗ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░, рдЧреНрд░рдВрдереЛрдВ рдХреЗ рдХреБрдЫ рд╡рд┐рд╢рд╛рд▓ рдХреЛрд╖реЛрдВ рдкрд░ рдФрд░ рд╣рд░ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╢рдмреНрдж рд╡реИрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рд╡реИрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд╡реЗ рдзреАрд░реЗ-рдзреАрд░реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдП: рд╢рдмреНрдж 2vec, GloVe, рдПрд▓реНрдореЛред
2018 рдХреА рдЧрд░реНрдорд┐рдпреЛрдВ рдореЗрдВ, OpenAI рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдкрд╛рда рдХреЗ рдмрдбрд╝реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рдмрдбрд╝реЗ рдорд╛рд░реНрдЬрд┐рди рдХреЗ рд╕рд╛рде рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗрдХреНрдЯрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреВрд░реЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рднреАред рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рдЯрдХрд╛рдХрд░ рдиреНрдпреВрд░реЙрдиреНрд╕ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рддреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмреНрд▓реЙрдХ, рдЖрдк рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Google рд╕реЗ BERT, OpenAI (рдпреВрдирд┐рдбрд╛рдпрд░реЗрдХреНрд╢рдирд▓, рдЖрджрд┐ рдХреЗ рдмрдЬрд╛рдп рджреНрд╡рд┐рджрд┐рд╢) рд╕реЗ рдПрдХ рдЙрдиреНрдирдд GPA рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ, рдЬреЛ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рднреА рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рдмреАрдИрдЖрд░рдЯреА рд▓рдЧрднрдЧ рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рдПрдирдПрд▓рдкреА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░ рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рд╣реИред
рдЙрдиреНрд╣реЛрдВрдиреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛
BERT рдХреЗ рдкреАрдЫреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рдЪрд▓реЛ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХреЗ рд╕рд╛рде рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдлрд╝реАрдб рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо 15% рд╢рдмреНрджреЛрдВ рдХреЛ [MASK] рд╕реЗ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдЗрди рдореБрдЦреМрдЯреЗ рд╡рд╛рд▓реЗ рд╢рдмреНрджреЛрдВ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рд╡рд╛рдХреНрдпрд╛рдВрд╢ "рдореИрдВ рдЖрдпрд╛ [MASK] рдФрд░ рдЦрд░реАрджрд╛ [MASK]" рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ "рд╕реНрдЯреЛрд░" рдФрд░ "рджреВрдз" рд╢рдмреНрдж рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмреАрдИрдЖрд░рдЯреА рдкреГрд╖реНрда рд╕реЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓рдВрдмреЗ рд╡рд╛рдХреНрдпреЛрдВ рдкрд░, рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реАрдорд╛ рдЫреЛрдЯреА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред
рдФрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рдХреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рджреВрд╕рд░рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдкрд╣рд▓реЗ рдХреА рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИред рдпрд╛ рдпрд╣ рдХреБрдЫ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред
рддреЛ, рджреЛ рд╡рд╛рдХреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП: "рдореИрдВ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЧрдпрд╛ред" рдФрд░ "рдФрд░ рд╡рд╣рд╛рдВ рджреВрдз рдЦрд░реАрджрд╛ред", рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рддрд╛рд░реНрдХрд┐рдХ рд╣реИред рдФрд░ рдЕрдЧрд░ рджреВрд╕рд░рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ "рдХреНрд░реВрд╕рд┐рдпрди рдЖрдХрд╛рд╢ рдкреНрд▓реВрдЯреЛ" рд╣реИ, рддреЛ рдореБрдЭреЗ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдиреАрдЪреЗ рдЗрди рджреЛрдиреЛрдВ BERT рдореЛрдб рдХреЗ рд╕рд╛рде рдЦреЗрд▓реЗрдВрдЧреЗред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рдЧреНрд░рдВрдереЛрдВ рдХреЗ рд╢рд░реАрд░ рдкрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреБрд╕реНрддрдХ рд╕рдВрдЧреНрд░рд╣ рдмреБрдХрдХреЙрд░реНрдкрд╕ рдХреЛ 4 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП 16 рдЯреАрдкреАрдпреВ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдмреАрдИрдЖрд░рдЯреА рдорд┐рд▓рд╛ред
рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╕реЗрдЯрдЕрдк
рдиреЛрдЯ : рдЗрд╕ рдЦрдВрдб рдореЗрдВ рд╣рдо рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ BERT рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЦреЗрд▓реЗрдВрдЧреЗред рдПрдХ рд╕реНрдерд╛рдиреАрдп GPU рдкрд░ рдЗрд╕ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ 4 GB рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде NVidia GTX 970 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ BERT рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рднреА GPU рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ), рддреЛ Google Colab рд╕реЗрдХреНрд╢рди рдореЗрдВ рдЬрд╛рдПрдБред
Https://www.tensorflow.org/install рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рдкрд╣рд▓реЗ TensorFlow рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ред GPU рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ CUDA рдЯреВрд▓рдХрд┐рдЯ 9.0, рдлрд┐рд░ cuDNN SDK 7.2, рдФрд░ рдХреЗрд╡рд▓ рддрдм GPU рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде TensorFlow рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
pip install tensorflow-gpu
рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ BERT рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдЗрд╕реЗ рд░рди_рдХреНрд▓рд╛рд╕реАрдлреЛрд░реЛрдлрд╝реЙрд░реНрдо рдлрд╝рд╛рдЗрд▓ (рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдмрдЬрд╛рдп рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдЬрд╛рдирд╛ рд╣реЛрддрд╛ рд╣реИ) рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЫрд╛рдБрдЯрдХрд░ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдЖрд╕рд╛рди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдХреЗрд░рд╕ рдмреАрдИрдЖрд░рдЯреА рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ (рдпрд╣ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдмрд╛рдж рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреЗрд░рд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ)ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд░реЗрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
pip install keras
рдФрд░ рдХреЗрд░рд╕ BERT рдХреЗ рдмрд╛рдж:
pip install keras-bert
рд╣рдореЗрдВ рдореВрд▓ github BERT рд╕реЗ рднреА tokenization.py рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╛ рддреЛ рд░реЙ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ, рдпрд╛ рд╕рдВрдкреВрд░реНрдг рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╡рд╣рд╛рдВ рд╕реЗ рд▓реЗ рдЬрд╛рдПрдВ, рдпрд╛ рдЗрд╕ рдХреЛрдб https://github.com/blade1780/bert рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдПрдХ рдХреЙрдкреА рд▓реЗрдВред
рдЕрдм рдкреВрд░реНрд╡ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред BERT рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдЬреЛ рд╕рднреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ github.com/google-research/bert рдкреГрд╖реНрда рдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред рд╣рдо 104 рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмрд╣реБрднрд╛рд╖реА "рдмреАрдИрдЖрд░рдЯреА-рдмреЗрд╕, рдмрд╣реБрднрд╛рд╖реА рдХреИрд╕рдб" рд▓реЗрдВрдЧреЗред рдмрд╣реБ_cased_L-12_H-768_A-12.zip рдлрд╝рд╛рдЗрд▓ (632 рдПрдордмреА) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВред
рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ, BERT.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдлрд┐рд░ рдереЛрдбрд╝рд╛ рдХреЛрдб рд╣реЛрдЧрд╛ред
рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдЪреВрдБрдХрд┐ рд╣рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХреА рд╕рд╛рдзрд╛рд░рдг рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЯреЛрдХрди рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВрдЧреЗред Do_lower_case = False рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХреИрд╕рд░реНрдб BERT рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИред
tokenizer = tokenization.FullTokenizer(vocab_file=vocab_path, do_lower_case=False)
рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдореЙрдбрд▓
model = load_trained_model_from_checkpoint(config_path, checkpoint_path, training=True) model.summary()
BERT рджреЛ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдореЗрдВ рдЫреВрдЯреЗ рд╣реБрдП рд╢рдмреНрджреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛, рдпрд╛ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдХрд┐ рдХреНрдпрд╛ рджреВрд╕рд░рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдкрд╣рд▓реЗ рдХреЗ рдмрд╛рдж рддрд╛рд░реНрдХрд┐рдХ рд╣реИред рд╣рдо рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк рдХрд░реЗрдВрдЧреЗред
рдкрд╣рд▓реЗ рдореЛрдб рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЬрдорд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
[CLS] [MASK] [MASK]. [SEP]
рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдорд╛рд╕реНрдХ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рднрд░реЗ рд╣реБрдП рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░рд╛ рд╡рд╛рдХреНрдп рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: "рдореИрдВ рджреБрдХрд╛рди рдореЗрдВ рдЖрдпрд╛ рдФрд░ рджреВрдз рдЦрд░реАрджрд╛ред"
рджреВрд╕рд░реЗ рдореЛрдб рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рджреЛрдиреЛрдВ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХреЛ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
[CLS] . [SEP] . [SEP]
рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рджреВрд╕рд░рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдкрд╣рд▓реЗ рдХреА рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИред рдпрд╛ рдпрд╣ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП BERT рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддреАрди рд╡реИрдХреНрдЯрд░ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА рд▓рдВрдмрд╛рдИ 512 рдирдВрдмрд░ рд╣реЛрдЧреА: token_input, seg_input рдФрд░ mask_inputред
рдЯреЛрдХрди_рдЗрдирдкреБрдЯ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдЯреЛрдХрди рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЗрд╕ рд╡реЗрдХреНрдЯрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реЛрдЧрд╛, рдФрд░ рдмрд╛рдХреА рд╢реВрдиреНрдп рд╕реЗ рднрд░ рдЬрд╛рдПрдЧрд╛ред
Mask_input рдореЗрдВ, рд╣рдореЗрдВ рдЙрди рд╕рднреА рдкрджреЛрдВ рдХреЗ рд▓рд┐рдП 1 рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ [MASK] рдореБрдЦреМрдЯрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рднрд░реЗрдВред
Seg_input рдореЗрдВ, рд╣рдореЗрдВ рдкрд╣рд▓рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ (рдЖрд░рдВрднрд┐рдХ рд╕реАрдПрд▓рдПрд╕ рдФрд░ рдПрд╕рдИрдкреА рд╡рд┐рднрд╛рдЬрдХ рд╕рд╣рд┐рдд) рдХреЛ 0 рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реВрдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рджреВрд╕рд░рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ (рдЕрдВрддрд┐рдо рдПрд╕рдИрдкреА рд╕рд╣рд┐рдд) 1 рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рдФрд░ рд╢реЗрд╖ рдХреЛ рдЬреАрд░реЛ рдХреЗ рд╕рд╛рде рд╡реЗрдХреНрдЯрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рднрд░реЗрдВред
BERT рдкреВрд░реЗ рд╢рдмреНрджреЛрдВ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдмрд╕реЗ рдЖрдо рд╢рдмреНрджрд╛рдВрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдкреВрд░реЗ рд╢рдмреНрдж рднреА рд╣реИрдВред рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ vocab.txt рдлрд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдкрдиреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдХрд┐рди рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдлреНрд░рд╛рдВрд╕ рдЬреИрд╕реЗ рдкреВрд░реЗ рд╢рдмреНрдж рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реВрд╕реА рд╢рдмреНрджреЛрдВ рдХреЛ рд╢рдмреНрджрд╛рдВрд╢реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ, "рдЖрдпрд╛" рд╢рдмреНрдж рдХреЛ "рд╕рд╛рде" рдФрд░ "## рдЧрдпрд╛" рдореЗрдВ рддреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред BERT рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд╛рда рдХреА рдирд┐рдпрдорд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо tokenization.py рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдореЛрдб 1: рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдореЗрдВ рд╢рдмреНрдж [MASK] рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рд╢рдмреНрджреЛрдВ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА
рдЗрдирдкреБрдЯ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЬреЛ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
sentence = ' [MASK] [MASK].' print(sentence)
рдЗрд╕реЗ рдЯреЛрдХрди рдореЗрдВ рдмрджрд▓реЗрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЯреЛрдХрди рд╕реЗрд╡рд╛ рдХреЗ рдирд┐рд╢рд╛рди [CLS] рдФрд░ [MASK] рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рдмреНрджрдХреЛрд╖ рдореЗрдВ рд╡реЛ рд╢рдмреНрдж рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреЗ рд▓рд╛рдЗрди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ [MASK] рдорд╛рд░реНрдХрд░реЛрдВ рд╕реЗ рддреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЯреЛрдХрди рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ BERT рдЯреЛрдХрди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рджреЗ рдкрд╛рда рдХреЗ рдЯреБрдХрдбрд╝реЗ рдирд┐рдХрд╛рд▓рдиреЗ рд╣реЛрдВрдЧреЗред рд╢реБрд░реБрдЖрдд рдореЗрдВ [CLS] рдФрд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЗ рдЕрдВрдд рдореЗрдВ [SEP] рднреА рдЬреЛрдбрд╝реЗрдВред
sentence = sentence.replace(' [MASK] ','[MASK]'); sentence = sentence.replace('[MASK] ','[MASK]'); sentence = sentence.replace(' [MASK]','[MASK]')
рдЯреЛрдХрди рдореЗрдВ рдЕрдм рдЯреЛрдХрди рд╣реИрдВ рдЬреЛ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ:
token_input = tokenizer.convert_tokens_to_ids(tokens)
рдЕрдм рдЯреЛрдХрди_рдЗрдирдкреБрдЯ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реЛрддреА рд╣реИ (рд╢рдмреНрдж рд╕рдВрдЦреНрдпрд╛ред рд╢рдмреНрджрдХреЛрд╖ рдореЗрдВ) рдЬреЛ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреЗрд╡рд▓ 512 рддрддреНрд╡реЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рддрдХ рдЗрд╕ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдЕрдЬрдЧрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг [0] * рд▓рдВрдмрд╛рдИ рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд▓рдВрдмрд╛рдИ рдмрдирд╛рддрд╛ рд╣реИ, рд╢реВрдиреНрдп рд╕реЗ рднрд░ рдЬрд╛рддрд╛ рд╣реИред рдмрд╕ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдЯреЛрдХрди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдЕрдЬрдЧрд░ рдореЗрдВ рджреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
token_input = token_input + [0] * (512 - len(token_input))
рдЕрдм рд╣рд░ рдЬрдЧрд╣ 1 рд▓рдВрдмрд╛рдИ рдореЗрдВ рдПрдХ рдореБрдЦреМрдЯрд╛ рдореБрдЦреМрдЯрд╛ 512 рдмрдирд╛рдПрдВ, рдЬрд╣рд╛рдВ 103 рдирдВрдмрд░ рдЯреЛрдХрди рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рд╢рдмреНрджрдХреЛрд╖ рдореЗрдВ рдорд╛рд░реНрдХрд░ [MASK] рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ), рдФрд░ рдмрд╛рдХреА рдХреЛ 0 рд╕реЗ рднрд░рдирд╛:
mask_input = [0]*512 for i in range(len(mask_input)): if token_input[i] == 103: mask_input[i] = 1
рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд╣рд▓реЗ BERT рдореЛрдб рдХреЗ рд▓рд┐рдП, seg_input рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢реВрдиреНрдп рд╕реЗ рднрд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
seg_input = [0]*512
рдЕрдВрддрд┐рдо рдЪрд░рдг, рдЖрдкрдХреЛ рдЕрдЬрдЧрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЖрдХрд╛рд░ (1,512) рдХреЗ рд╕рд╛рде рдЕрдлреАрдо рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЙрдк-рд╢реНрд░реЗрдгреА рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
token_input = np.asarray([token_input]) mask_input = np.asarray([mask_input]) seg_input = np.asarray([seg_input])
рдареАрдХ рд╣реИ, рдХрд┐рдпрд╛ред рдЕрдм рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдЪрд▓рд╛рдПрдВ!
predicts = model.predict([token_input, seg_input, mask_input])[0] predicts = np.argmax(predicts, axis=-1) predicts = predicts[0][:len(tokens)]
рдЕрдм рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЯреЛрдХрди рд╕реЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░реЗрдВ
out = []
рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдВ:
print('Result:', out)
рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЗ рд▓рд┐рдП "рдореИрдВ [MASK] рдЖрдпрд╛ рдФрд░ [MASK] рдХреЛ рдЦрд░реАрджрд╛ред" рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗ "рдШрд░" рдФрд░ "рдпрд╣" рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛: "рдореИрдВ рдШрд░ рдЖрдпрд╛ рдФрд░ рдЗрд╕реЗ рдЦрд░реАрджрд╛ред" рд╡реИрд╕реЗ, рдкрд╣рд▓реА рдмрд╛рд░ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдШрд░ рдЦрд░реАрджрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреВрдз рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ)ред
рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг (рдореИрдВ рдЕрд╕рдлрд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЗрддрд╛, рд╕рдлрд▓ рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдВред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдиреЗрдЯрд╡рд░реНрдХ рдПрдХ рдЦрд╛рд▓реА рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ:рдкреГрдереНрд╡реА рд╕реВрд░реНрдп рд╕реЗ рддреАрд╕рд░реА [MASK] рд╣реИ
рдкрд░рд┐рдгрд╛рдо: рд╕реНрдЯрд╛рд░
рдордХреНрдЦрди рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕реИрдВрдбрд╡рд┐рдЪ [рдорд╛рд╕]
рдкрд░рд┐рдгрд╛рдо: рдореАрдЯ
[MASK] рджреЛрдкрд╣рд░ рдХреЗ рднреЛрдЬрди рдХреЗ рдмрд╛рдж рд╕реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ
рдкрд░рд┐рдгрд╛рдо: рдЗрд╕рдореЗрдВ рд╕реЗ
[MASK] рд╕реЗ рджреВрд░ рд╣реЛ рдЬрд╛рдУ
рдкрд░рд┐рдгрд╛рдо: ## рдУрд╣ - рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрднрд┐рд╢рд╛рдк рд╣реИ? )
[MASK] рджрд░рд╡рд╛рдЬреЗ рд╕реЗ
рдкрд░рд┐рдгрд╛рдо: рджреЗрдЦреЗрдВ
[MASK] рдХреЗ рд╕рд╛рде рд╣рдереМрдбрд╝рд╛ рдФрд░ рдирд╛рдЦреВрди рдХреИрдмрд┐рдиреЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдкрд░рд┐рдгрд╛рдо: рдорджрдж
рдФрд░ рдЕрдЧрд░ рдХрд▓ рдирд╣реАрдВ рд╣реИ? рдЖрдЬ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ [MASK] рдирд╣реАрдВ рд╣реИ!
рдкрд░рд┐рдгрд╛рдо: рд╣реЛрдЧрд╛
[MASK] рдХреА рдЕрдирджреЗрдЦреА рдХрд░рдХреЗ рдЖрдк рдХреИрд╕реЗ рдердХ рд╕рдХрддреЗ рд╣реИрдВ?
рдкрд░рд┐рдгрд╛рдо: рдЙрд╕реЗ
рд╣рд░ рд░реЛрдЬрд╝ рддрд░реНрдХ рд╣реИ, рдорд╣рд┐рд▓рд╛ рддрд░реНрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдкреБрд░реБрд╖ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИ [MASK]
рдкрд░рд┐рдгрд╛рдо: рджрд░реНрд╢рди
рдорд╣рд┐рд▓рд╛рдУрдВ рдореЗрдВ, рддреАрд╕ рд╡рд░реНрд╖ рдХреА рдЖрдпреБ рддрдХ, рд░рд╛рдЬрдХреБрдорд╛рд░ рдХреА рдПрдХ рдЫрд╡рд┐ рдмрдирддреА рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА [MASK] рдкрд░ рдлрд┐рдЯ рдмреИрдарддреА рд╣реИред
рдкрд░рд┐рдгрд╛рдо: рдЖрджрдореА
рдмрд╣реБрдордд рдХреЗ рдордд рд╕реЗ, рд╕реНрдиреЛ рд╡реНрд╣рд╛рдЗрдЯ рдФрд░ рд╕рд╛рдд рдбреНрд╡рд╛рд░реНрдл рдиреЗ рдПрдХ рд╡реЛрдЯ рдХреЗ рд╕рд╛рде [MASK] рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд┐рдпрд╛ред
рдкрд░рд┐рдгрд╛рдо: рдЧрд╛рдБрд╡ - рдкрд╣рд▓рд╛ рдЕрдХреНрд╖рд░ рд╕рд╣реА рд╣реИ
рдЕрдкрдиреЗ рдердХрд╛рдКрдкрди рдХреЛ 10-рдмрд┐рдВрджреБ рдкреИрдорд╛рдиреЗ рдкрд░ рдЖрдВрдХреЗрдВ: [MASK] рдЕрдВрдХ
рдкрд░рд┐рдгрд╛рдо: 10
рдЖрдкрдХрд╛ [MASK], [MASK] рдФрд░ [MASK]!
рдкрд░рд┐рдгрд╛рдо: рдореБрдЭреЗ рдкреНрдпрд╛рд░ рдХрд░реЛ - рдирд╣реАрдВ, BERT, рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдерд╛
рдЖрдк рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд╛рдХреНрдпрд╛рдВрд╢ (рдФрд░ 104 рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХреЛрдИ рднреА, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реВрдЪреА рдпрд╣рд╛рдВ рд╣реИ ) рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
[рдорд╛рд╕] рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП!
рдкрд░рд┐рдгрд╛рдо: I
рдореЛрдб 2: рджреЛ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
рд╣рдо рджреЛ рд▓рдЧрд╛рддрд╛рд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛
sentence_1 = ' .' sentence_2 = ' .' print(sentence_1, '->', sentence_2)
рд╣рдо рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд╛рджреЗ рдкрд╛рда рдХреЛ рдЯреЛрдХрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реБрдП [CLS] рд╡рд╛рдХреНрдпрд╛рдВрд╢_1 [SEP] рд╡рд╛рдХреНрдпрд╛рдВрд╢_2 [SEP] рдореЗрдВ рдЯреЛрдХрди рдмрдирд╛рдПрдВрдЧреЗ:
tokens_sen_1 = tokenizer.tokenize(sentence_1) tokens_sen_2 = tokenizer.tokenize(sentence_2) tokens = ['[CLS]'] + tokens_sen_1 + ['[SEP]'] + tokens_sen_2 + ['[SEP]']
рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЛрдХрди рдХреЛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕реВрдЪрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рд╢рдмреНрдж рд╕рдВрдЦреНрдпрд╛ред рд╢рдмреНрджрдХреЛрд╖ рдореЗрдВ) рдФрд░ рд╡реЗрдХреНрдЯрд░ рдХреЛ 512 рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░реЗрдВ:
token_input = tokenizer.convert_tokens_to_ids(tokens) token_input = token_input + [0] * (512 - len(token_input))
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЦреМрдЯрд╛ рд╢рдмреНрдж рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢реВрдиреНрдп рд╕реЗ рднрд░рд╛ рд╣реИ
mask_input = [0] * 512
рд▓реЗрдХрд┐рди рдкреНрд░рд╕реНрддрд╛рд╡ рдореБрдЦреМрдЯрд╛ рдХреЛ рджреВрд╕рд░реЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢ (рдЕрдВрддрд┐рдо рдПрд╕рдИрдкреА рд╕рд╣рд┐рдд) рдХреЗ рддрд╣рдд рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд╕рд╛рде рднрд░рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╢реВрдиреНрдп рдХреЗ рд╕рд╛рде рдмрд╛рдХреА рд╕рдм рдХреБрдЫ:
seg_input = [0]*512 len_1 = len(tokens_sen_1) + 2
рд╣рдо рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕ рд╕рдордп рдкрд░рд┐рдгрд╛рдо [1] рдореЗрдВ рд╣реИ, рдФрд░ [0] рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдКрдкрд░ рдерд╛)
predicts = model.predict([token_input, seg_input, mask_input])[1]
рдФрд░ рд╣рдо рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рджреВрд╕рд░рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдФрд░ рд╢рдмреНрджреЛрдВ рдХрд╛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ
print('Sentence is okey:', int(round(predicts[0][0]*100)), '%')
рджреЛ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдореЗрдВ:
рдореИрдВ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЖрдпрд╛ред -> рдФрд░ рджреВрдз рдЦрд░реАрджрд╛ред
рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛:
рд╡рд╛рдХреНрдп рдареАрдХ рд╣реИ: 99%
рдФрд░ рдЕрдЧрд░ рджреВрд╕рд░рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ "рдХреНрд░реВрд╕рд┐рдпрди рдЖрдХрд╛рд╢ рдкреНрд▓реВрдЯреЛ" рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рд╣реЛрдЧрд╛:
рд╡рд╛рдХреНрдп рдареАрдХ рд╣реИ: 4%
рдЧреВрдЧрд▓ рдХреЛрд▓рд╛рдм
Google 12 рдЬреАрдмреА рдХреА рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдореБрдлреНрдд рдЯреЗрд╕реНрд▓рд╛ K80 рд╕рд░реНрд╡рд░ GPU рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (TPU рдЕрдм рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ)ред рдХреЛрд▓рд╛рдм рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб рдЬреНрдпреВрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ BERT рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд▓рд┐рдВрдХ рдЦреЛрд▓реЗрдВ
http://colab.research.google.com/github/blade1780/bert/blob/master/BERT.ipynb
рд░рдирдЯрд╛рдЗрдо рдореЗрдиреВ рд╕реЗ, рд░рди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рд╕рднреА рд╕реЗрд▓ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдВ, рдореЙрдбрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╕рднреА рд░рдирдЯрд╛рдЗрдо рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реЛрдВред
рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ рд╣реИ ...рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ GPU рдФрд░ рдкрд╛рдпрдерди 3 рдХреЛ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ -> рд░рдирдЯрд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рдореЗрдиреВ рдмрджрд▓реЗрдВ
рдпрджрд┐ рдХрдиреЗрдХреНрдЯ рдмрдЯрди рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдХрдиреЗрдХреНрдЯреЗрдб рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдЕрдм рдЗрдирдкреБрдЯ рд▓рд╛рдЗрдиреЛрдВ рд╡рд╛рдХреНрдп , рд╡рд╛рдХреНрдп_1 рдФрд░ pun_2 рдХреЛ рдмрджрд▓реЗрдВ, рдФрд░ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдИрдВ рдУрд░ рдкреНрд▓реЗ рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╕рдВрдкреВрд░реНрдг рдиреЛрдЯрдмреБрдХ рдЪрд▓рд╛рдирд╛ рдЕрдм рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рдЖрдк рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рд╕реЗ рднреА Google Colab рдкрд░ BERT рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдирд╣реАрдВ рдЦреБрд▓рд╛, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдмреАрдИрдЖрд░рдЯреА рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдКрдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлреАрдб рдлреЙрд░рд╡рд░реНрдб рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдПрдХ рдпрд╛ рджреЛ рдкрд░рддреЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕реЗ рдореБрдЦреНрдп рдмреАрдИрдЖрд░рдЯреА рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдЫреВрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░реЗрдВред рдпрд╣ рдпрд╛ рддреЛ рдирдВрдЧреЗ TensorFlow рдкрд░ рдпрд╛ рдХреЗрд░рд╕ BERT рд╢реЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдирд╡рд▓реНрд╢рди рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдлрд╛рдЗрди рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рд╕рдорд╛рди рд╣реИред рддреЛ, рдПрд╕рдХреНрдпреВрдПрдбреА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ 30 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдЯреАрдкреАрдпреВ рдкрд░ рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдмреАрдИрдЯреАрдЯреА рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП 16 рдЯреАрдкреАрдпреВ рдкрд░ 4 рджрд┐рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ)ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ BERT рдореЗрдВ рдЕрдВрддрд┐рдо рдкрд░рддреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдХ рдЙрдкрдпреБрдХреНрдд рдбреЗрдЯрд╛рд╕реЗрдЯ рднреА рд╣реИред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмреАрдИрдЖрд░рдЯреА рдкреЗрдЬ https://github.com/google-research/bert рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рд╕рд╛рде рд╣реА рдХреНрд▓рд╛рдЙрдб рдЯреАрдкреАрдпреВ рдкрд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рднреА рд╣реИрдВред рдФрд░ рдмрд╛рдХреА рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ run_classifier.py рдФрд░ extract_features.py рдореЗрдВ рд╕реНрд░реЛрдд рдореЗрдВ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ ред
рдкреБрдирд╢реНрдЪ
рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд Google Colab рдХреЗ рдХреЛрдб рдФрд░ рдЬреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рдЪрдорддреНрдХрд╛рд░ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред BERT рд╕реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреА рддрд░рд╣ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рди рдХрд░реЗрдВред рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдирдПрд▓рдкреА рдореЗрдВ рдкреНрд░рдЧрддрд┐ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрддрд░ рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдИ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ BERT рдкрд┐рдЫрд▓реЗ рдореЙрдбрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реИ, рдЬреЛ рдХрд┐ рдФрд░ рднреА рдмреБрд░реЗ рдереЗред рдордЬрдмреВрдд рд╕рдВрд╡рд╛рджреА рдПрдЖрдИ рдЕрднреА рднреА рдмрд╣реБрдд рджреВрд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреАрдИрдЖрд░рдЯреА рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рднрд╛рд╖рд╛ рдореЙрдбрд▓ рд╣реИ, рди рдХрд┐ рддреИрдпрд╛рд░ рдЪреИрдЯ рдмреЙрдЯ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИред