рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рда рд╡рд╛рд░реНрддрд╛рд▓рд╛рдкреЛрдВ рдореЗрдВ рднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ


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

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

1. рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛


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

рддрд╛рд▓рд┐рдХрд╛ 1. рдПрдореЛрдХреЛрдЯреЗрдХреНрд╕реНрдЯ рдбреЗрдЯрд╛рд╕реЗрдЯ ( рдЪрдЯрд░реНрдЬреА рдПрдЯ рдЕрд▓ред, 2019 ) рдХреЗ рдЙрджрд╛рд╣рд░рдг
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рд╕реНрдЯреЗрдЬ -1)рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд░реЛрдмреЛрдЯ (рд╕реНрдЯреЗрдЬ -1)рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рд╕реНрдЯреЗрдЬ 2)рд╕рддреНрдп рд╡рд░реНрдЧ
рдореИрдВ рд╕рд┐рд░реНрдл рдирд╛рдмрд╛рд░реНрдб рдЗрдВрдЯрд░реНрдирд╢рд┐рдк рдХреЗ рд▓рд┐рдП рдпреЛрдЧреНрдп рд╣реВрдВрдпрд╣рд╛рдБ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред рдмрдзрд╛рдИ!рдореИрдВ рд░реЛрдиреЗ рд▓рдЧреАрд╕реБрдЦ
рдореЗрд░реЗ рдмрдЪреНрдЪреЗ рдХреЛ рдердкреНрдкрдбрд╝ рдорд╛рд░рдиреЗ рдХреА рддреБрдореНрд╣рд╛рд░реА рд╣рд┐рдореНрдордд рдХреИрд╕реЗ рд╣реБрдИрдЕрдЧрд░ рддреБрдо рдореЗрд░реА рдХрд╛рд░ рдЦрд░рд╛рдм рдХрд░реЛрдЧреЗ рддреЛ рдореИрдВ рднреА рддреБрдореНрд╣рд╛рд░реЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░реВрдВрдЧрд╛рдмрд╕ рдПрдХ рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЛрдХреНрд░реЛрдз
рдореБрдЭреЗ рдФрд░ рджреБрдЦ рд╣реБрдЖрдЖрдкрдХрд╛ рдпрд╣ рдорддрд▓рдм рдирд╣реАрдВ рдерд╛редрддреБрдо рдореБрдЭрд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддреА рд╣реЛрд╢реЛрдХ
рдореИрдВ рд░рд╛рдд рдХрд░реВрдВрдЧрд╛редрдареАрдХ рд╣реИред рдореБрдЭреЗ рдкрд╛рд╢ рдореЗрдВ рд░рдЦреЛредрд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рди рджреЗрдиреЗ рдкрд░редрдЕрдиреНрдп

рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рджреМрд░рд╛рди, рдЖрдпреЛрдЬрдХреЛрдВ рдиреЗ рдХрдИ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд┐рдПред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛рд╕реЗрдЯ (рдЯреНрд░реЗрди) рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдЧреНрд░рдВрдереЛрдВ рдореЗрдВ 30,160 рд╢рд╛рдорд┐рд▓ рдереЗред рдЗрди рдЧреНрд░рдВрдереЛрдВ рдореЗрдВ "рдЦреБрд╢", "рдЙрджрд╛рд╕" рдФрд░ "рдЧреБрд╕реНрд╕реЗ рдореЗрдВ" рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рдЧрднрдЧ 5000 рдСрдмреНрдЬреЗрдХреНрдЯ рдереЗ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрдХреНрд╖рд╛ "рдЕрдиреНрдп" (рддрд╛рд▓рд┐рдХрд╛ 2) рд╕реЗ 15000 рдЧреНрд░рдВрде рднреА рдереЗред

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

рддрд╛рд▓рд┐рдХрд╛ 2. рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рднрд╛рд╡рдирд╛ рд╡рд░реНрдЧ рд▓реЗрдмрд▓ рдХрд╛ рд╡рд┐рддрд░рдг ( рдЪрдЯрд░реНрдЬреА рдПрдЯ рдЕрд▓ред, 2019 )ред
рдбрд╛рдЯрд╛рд╕реЗрдЯрд╕реБрдЦрд╢реЛрдХрдХреНрд░реЛрдзрдЕрдиреНрдпрдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
рдЯреНрд░реЗрдирд┐рдВрдЧ
14.07%
18.11%
18.26%
49.56%
30 160
рд╡рд┐рдХрд╛рд╕ рдХрд░рдирд╛
5.15%
4.54%
5.45%
84.86%
2755
рдХрд╕реМрдЯреА
5.16%
4.54%
5.41%
84.90%
5509
рджреВрд░ рдХреА
33.33%
33.33%
33.33%
0%
900 рд╣рдЬрд╛рд░

рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рджреВрд░ рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд╡рд┐рдЯрд░ рд╕реЗ 900 рд╣рдЬрд╛рд░ рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖рд╛ рдХреЗ рд╕рдВрджреЗрд╢ рдПрдХрддреНрд░ рдХрд┐рдП (рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╡рдирд╛ рдХреЗ рд▓рд┐рдП 300 рд╣рдЬрд╛рд░ рдЯреНрд╡реАрдЯ)ред рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдордиреЗ рдЧреЛ рдПрдЯ рдЕрд▓ рдХреА рд░рдгрдиреАрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ред (2009), рдЬрд┐рд╕рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЗрд╡рд▓ рднрд╛рд╡рдирд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╢рдмреНрджреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдЬреБрдбрд╝реЗ рдереЗ, рдЬреИрд╕реЗ #angry, #annoyed, #happy, #sad, # рдЧрд▓рдд рдФрд░ рдЗрддрдиреЗ рдкрд░ред рд╢рдмреНрджреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗрдореАрдПрд╡рд▓-2018 рдПрдЖрдИрдЯреА рдбреАрдЖрдИрдПрд╕рд╕реА ( рдбреБрдкреНрдкрд╛рдбрд╛ рдПрдЯ рдЕрд▓, 2018 ) рдХреА рд╢рд░реНрддреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

EmoContext рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдореБрдЦреНрдп рдЧреБрдгрд╡рддреНрддрд╛ рдореАрдЯреНрд░рд┐рдХ рднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рддреАрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд╕рдд F1 рдорд╛рдк рд╣реИ, рдЬреЛ рдХрд┐ "рдЦреБрд╢", "рдЙрджрд╛рд╕" рдФрд░ "рдирд╛рд░рд╛рдЬ" рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред

def preprocessData(dataFilePath, mode): conversations = [] labels = [] with io.open(dataFilePath, encoding="utf8") as finput: finput.readline() for line in finput: line = line.strip().split('\t') for i in range(1, 4): line[i] = tokenize(line[i]) if mode == "train": labels.append(emotion2label[line[4]]) conv = line[1:4] conversations.append(conv) if mode == "train": return np.array(conversations), np.array(labels) else: return np.array(conversations) texts_train, labels_train = preprocessData('./starterkitdata/train.txt', mode="train") texts_dev, labels_dev = preprocessData('./starterkitdata/dev.txt', mode="train") texts_test, labels_test = preprocessData('./starterkitdata/test.txt', mode="train") 

2. рдкрд╛рда рдкреВрд░реНрд╡ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг


рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдПрдХрдлреНрд░рд╕рд┐рд╕ рдЯреВрд▓ (рдмрд╛рдЬреЛрдЯрд┐рд╕ рдПрдЯ рдЕрд▓ред, 2017) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдкреВрд░реНрд╡-рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рд╡рд░реНрддрдиреА рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд╢рдмреНрджреЛрдВ, рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЛрдХрди рдХреЛ рдЧрд┐рд░рд╛рдпрд╛, рд╕рд╛рдорд╛рдиреНрдп рдпрд╛ рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реНрдЯреЗрдЬ рдкрд░, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд┐рдП:

  • URL рдФрд░ рдореЗрд▓, рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп, рдЙрдкрдирд╛рдо, рдкреНрд░рддрд┐рд╢рдд, рдореБрджреНрд░рд╛рдПрдВ рдФрд░ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╕рдВрдмрдВрдзрд┐рдд рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреА рдЧрдИрдВред
  • рджреЛрд╣рд░рд╛рдП, рд╕реЗрдВрд╕рд░ рдХрд┐рдП рдЧрдП, рд▓рдореНрдмреА рдЕрдкрд░рдХреЗрд╕ рд╢рдмреНрдж рд╣рдордиреЗ рдЙрдЪрд┐рдд рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рдПред
  • рдмрдврд╝реЗ рд╣реБрдП рд╢рдмреНрджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

рддрд╛рд▓рд┐рдХрд╛ 3. рдкрд╛рда рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгред
рд╕реНрд░реЛрдд рдкрд╛рдардкреВрд░реНрд╡-рд╕рдВрд╕рд╛рдзрд┐рдд рдкрд╛рда
рдЖрдИ рдлреАрд▓ рдпреВ ... рдореИрдВ рд▓рд╛рдЦ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рддреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ <allcaps> i feel you </ allcaps>ред <рджреЛрд╣рд░рд╛рдпрд╛> рдореИрдВ рд▓рд╛рдЦ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рддреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ
рдердХ рдЧрдпрд╛ рдФрд░ рдореИрдВ рднреА рддреБрдореНрд╣реЗрдВ рдпрд╛рдж рдХрд┐рдпрд╛: you(рдердХ рдЧрдпрд╛ рдФрд░ рдореИрдВ рднреА рддреБрдореНрд╣реЗрдВ рдпрд╛рдж рдХрд┐рдпрд╛ <рдЙрджрд╛>
рдЖрдкрдХреЛ рдЗрд╕ рдкрд░ liiiiiiisten рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: www.youtube.com/watch?v=99myH1orbs4рдЖрдкрдХреЛ <elongated> рдпрд╣ рд╕реБрдирдирд╛ рдЪрд╛рд╣рд┐рдП: <url>
рдореЗрд░рд╛ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдЗрд╕рдХреА рджреЗрдЦрднрд╛рд▓ рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдХрд┐рд░рд╛рдпрд╛ рд▓рдЧрднрдЧ $ 650 рд╣реИредрдореЗрд░рд╛ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдЗрд╕рдХреА рджреЗрдЦрднрд╛рд▓ рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдХрд┐рд░рд╛рдпрд╛ рд▓рдЧрднрдЧ <рдкреИрд╕рд╛> рд╣реИред

 from ekphrasis.classes.preprocessor import TextPreProcessor from ekphrasis.classes.tokenizer import SocialTokenizer from ekphrasis.dicts.emoticons import emoticons import numpy as np import re import io label2emotion = {0: "others", 1: "happy", 2: "sad", 3: "angry"} emotion2label = {"others": 0, "happy": 1, "sad": 2, "angry": 3} emoticons_additional = { '(^уГ╗^)': '<happy>', ':тАСc': '<sad>', '=тАСd': '<happy>', ":'тАС)": '<happy>', ':тАСd': '<laugh>', ':тАС(': '<sad>', ';тАС)': '<happy>', ':тАС)': '<happy>', ':\\/': '<sad>', 'd=<': '<annoyed>', ':тАС/': '<annoyed>', ';тАС]': '<happy>', '(^ ^)': '<happy>', 'angru': 'angry', "dтАС':": '<annoyed>', ":'тАС(": '<sad>', ":тАС[": '<annoyed>', '( ? )': '<happy>', 'xтАСd': '<laugh>', } text_processor = TextPreProcessor( # terms that will be normalized normalize=['url', 'email', 'percent', 'money', 'phone', 'user', 'time', 'url', 'date', 'number'], # terms that will be annotated annotate={"hashtag", "allcaps", "elongated", "repeated", 'emphasis', 'censored'}, fix_html=True, # fix HTML tokens # corpus from which the word statistics are going to be used # for word segmentation segmenter="twitter", # corpus from which the word statistics are going to be used # for spell correction corrector="twitter", unpack_hashtags=True, # perform word segmentation on hashtags unpack_contractions=True, # Unpack contractions (can't -> can not) spell_correct_elong=True, # spell correction for elongated words # select a tokenizer. You can use SocialTokenizer, or pass your own # the tokenizer, should take as input a string and return a list of tokens tokenizer=SocialTokenizer(lowercase=True).tokenize, # list of dictionaries, for replacing tokens extracted from the text, # with other expressions. You can pass more than one dictionaries. dicts=[emoticons, emoticons_additional] ) def tokenize(text): text = " ".join(text_processor.pre_process_doc(text)) return text 

3. рд╢рдмреНрджреЛрдВ рдХрд╛ рд╡реЗрдХреНрдЯрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡


рд╡реЗрдХреНрдЯрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд╣рд░реА рд╢рд┐рдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдирдПрд▓рдкреА-рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рдмрди рдЧрдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╡реЗрдХреНрдЯрд░ рдореИрдкрд┐рдВрдЧ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ Word2Vec ( рдорд┐рдХреЛрд▓реЛрд╡ рдПрдЯ рдЕрд▓ред, 2013 ), рдЧреНрд▓реЛрд╡реА ( рдкреЗрдирд┐рдВрдЧрдЯрди рдПрдЯ рдЕрд▓ред, 2014 ) рдФрд░ рдлрд╛рд╕реНрдЯрдЯреИрдХреНрд╕ ( рдЬреВрд▓рд┐рди рдПрдЯ рдЕрд▓ред, 2017 ) рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдбреЗрдЯрд╛рд╕реНрдЯреЛрд░реЗрдЬ рд╡реИрдХреНрдЯрд░ ( рдмрд╛рдЬреЛрдЯрд┐рд╕ рдПрдЯ рдЕрд▓)ред ред, 2017 )ред Word2Vec рд╢рдмреНрджреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдпрд╣ рдорд╛рдирдХрд░ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╢рдмреНрдж рд╕рдВрдмрдВрдзреА рд╢рдмреНрдж рд╕рдорд╛рди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред Word2Vec рд▓рдХреНрд╖реНрдп рд╢рдмреНрдж (CBOW рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░) рдпрд╛ рд╕рдВрджрд░реНрдн (Skip-Gram рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░) рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╣рд╛рдирд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ GloVe рд╢рдмреНрдж рд╡реИрдХреНрдЯрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдЖрд╕рдиреНрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдЖрдпрд╛рдо рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред FastText рдХрд╛ рддрд░реНрдХ Word2Vec рдХреЗ рддрд░реНрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рд╢рдмреНрдж рд╡реИрдХреНрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХрд╛рддреНрдордХ n-рдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдЕрдЬреНрдЮрд╛рдд рд╢рдмреНрджреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╕рднреА рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд┐рд╢ рдирд┐рд░реВрдкрдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд░рд▓ LSTM рдореЙрдбрд▓ (рдордВрдж = 64) рдХрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджрд┐рдпрд╛ рдФрд░ рдХреНрд░реЙрд╕-рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдЧреАрдХрд░рдг рджрдХреНрд╖рддрд╛ рдХреА рддреБрд▓рдирд╛ рдХреАред рдПрдл 1 рдЙрдкрд╛рдпреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдбреЗрдЯрд╛рд╕реНрдЯреЛрд░ рд╡реИрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╢рдмреНрджреЛрдВ рдХреЗ рднрд╛рд╡рдирд╛рддреНрдордХ рд░рдВрдЧ рдХреЗ рд╕рд╛рде рдЪрдпрдирд┐рдд рд╡реЗрдХреНрдЯрд░ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЛ рд╕рдореГрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЗрдмрд▓ рдХрд┐рдП рдЧрдП рджреВрд░ рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ ( Deriu et alред, 2017 ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрдХреНрдЯрд░ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рд╣рдордиреЗ "рдЦрд░рд╛рдм", "рдЙрджрд╛рд╕" рдФрд░ "рдЦреБрд╢" рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ LSTM рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд░ рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреА рдкрд╣рд▓реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рджреМрд░рд╛рди рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдкрд░рдд рдЬрдореА рд╣реБрдИ рдереА рддрд╛рдХрд┐ рд╡реИрдХреНрдЯрд░реЛрдВ рдХреЗ рд╡рдЬрди рдореЗрдВ рдордЬрдмреВрдд рдмрджрд▓рд╛рд╡ рди рд╣реЛ рд╕рдХреЗ, рдФрд░ рдЕрдЧрд▓реЗ рдкрд╛рдВрдЪ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рдд рдХреЛ рдкрд┐рдШрд▓рд╛рдпрд╛ рдЧрдпрд╛ред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдмрд╛рдж, "рд╡рд┐рд▓рдВрдмрд┐рдд" рд╡реИрдХреНрдЯрд░ рдХреЛ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдмрд╛рдж рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рд╛рдЭрд╛ рднреА рдХрд┐рдпрд╛ рдЧрдпрд╛ ред

 def getEmbeddings(file): embeddingsIndex = {} dim = 0 with io.open(file, encoding="utf8") as f: for line in f: values = line.split() word = values[0] embeddingVector = np.asarray(values[1:], dtype='float32') embeddingsIndex[word] = embeddingVector dim = len(embeddingVector) return embeddingsIndex, dim def getEmbeddingMatrix(wordIndex, embeddings, dim): embeddingMatrix = np.zeros((len(wordIndex) + 1, dim)) for word, i in wordIndex.items(): embeddingMatrix[i] = embeddings.get(word) return embeddingMatrix from keras.preprocessing.text import Tokenizer embeddings, dim = getEmbeddings('emosense.300d.txt') tokenizer = Tokenizer(filters='') tokenizer.fit_on_texts([' '.join(list(embeddings.keys()))]) wordIndex = tokenizer.word_index print("Found %s unique tokens." % len(wordIndex)) embeddings_matrix = getEmbeddingMatrix(wordIndex, embeddings, dim) 

4. рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛


рдЖрд╡рд░реНрддрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ (рдЖрд░рдПрдирдПрди) рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдПрдХ рдкрд░рд┐рд╡рд╛рд░ рд╣реИ рдЬреЛ рдШрдЯрдирд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВред рдкрд╛рд░рдВрдкрд░рд┐рдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╡рд┐рдкрд░реАрдд, RNN рдХреЛ рдЖрдВрддрд░рд┐рдХ рд╕рдВрддреБрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдл RNN рдореЗрдВ рдЪрдХреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдПрдХ рдкрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдкрд┐рдЫрд▓реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред LSTM рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ (рд▓реЙрдиреНрдЧ рд╢реЙрд░реНрдЯ-рдЯрд░реНрдо рдореЗрдореЛрд░реА) рдХреЛ 1997 рдореЗрдВ RNN ( Hochreiter рдФрд░ Schmidhuber, 1997 ) рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред LSTM рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛрд╢рд┐рдХрд╛рдПрдВ рдлрдЯ рдФрд░ рдлреАрдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИрдВред рдкрд╛рд░рдВрдкрд░рд┐рдХ LSTM рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдПрдХ рджрд┐рд╢рд╛ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреНрд╡рд┐рджрд┐рд╢ LSTM рджреЛ рдЫрд┐рдкреЗ рд╣реБрдП LSTM рдкрд░рддреЛрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд╕реВрдЪрдирд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ рддреЛ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдФрд░ рджреВрд╕рд░рд╛ рд╡рд┐рд░реБрджреНрдз - рдЬрд┐рд╕рд╕реЗ рдПрдХ рд╕рд╛рде рдЕрддреАрдд рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд╛рдЬреНрдпреЛрдВ ( Schuster рдФрд░ Paliwal, 1997 ) рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред


рдЪрд┐рддреНрд░ 1: рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдХрдо рдХрд┐рдпрд╛ рд╣реБрдЖ рд╕рдВрд╕реНрдХрд░рдгред LSTM рдореЙрдбреНрдпреВрд▓ рдкрд╣рд▓реЗ рдФрд░ рддреАрд╕рд░реЗ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рднрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЪрд┐рддреНрд░ 1 рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдПрдХ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдкрд░рдд рдФрд░ рджреЛ рджреНрд╡рд┐рджрд┐рд╢ рдПрд▓рдЯреАрдПрд╕рдПрдо рдореЙрдбреНрдпреВрд▓ (рдордВрдж = 64) рд╣реИрдВред рдкрд╣рд▓рд╛ LTSM рдореЙрдбреНрдпреВрд▓ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдпрд╛рдиреА, рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХреА рдкрд╣рд▓реА рдФрд░ рддреАрд╕рд░реА рдкреНрд░рддрд┐рдХреГрддрд┐) рдХреЗ рд╢рдмреНрджреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдореЙрдбреНрдпреВрд▓ рджреВрд╕рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рджреВрд╕рд░реЗ рдкреНрд░рддрд┐рдХреГрддрд┐) рдХреЗ рд╢рдмреНрджреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╡реЗрдХреНрдЯрд░ рдЕрднреНрдпрд╛рд╡реЗрджрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╢рдмреНрджреЛрдВ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рджреНрд╡рд┐рджрд┐рд╢ рдПрд▓рдЯреАрдПрд╕рдПрдо рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдореА рддреАрди рдлреАрдЪрд░ рдореИрдкреНрд╕ рдХреЛ рдПрдХ рдлреНрд▓реИрдЯ рдлреАрдЪрд░ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рдЫрд┐рдкреА рдкрд░рдд (рдордВрдж = 30) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ рд▓реЗрдмрд▓ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рд╕рдХреНрд░рд┐рдпрдг рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░рдд рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдУрд╡рд░рдлрд╝рд┐рдЯрд┐рдВрдЧ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗрдХреНрдЯрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреА рдкрд░рддреЛрдВ рдХреЗ рдмрд╛рдж, рдЧреЙрд╕рд┐рдпрди рд╢реЛрд░ рдХреЗ рд╕рд╛рде рдирд┐рдпрдорд┐рддреАрдХрд░рдг рдкрд░рддреЗрдВ рдЬреЛрдбрд╝реА рдЧрдИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдПрд▓рдЯреАрдПрд╕рдПрдо рдореЙрдбреНрдпреВрд▓ (рдкреА = 0.2) рдФрд░ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдкрд░рддреЛрдВ рдХреЛ рдПрдХ рдЫрд┐рдкреА рд╣реБрдИ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реА рдкрд░рдд (рдкреА = 0.1) рдФрд░ рд╢реНрд░реАрд╡рд╛рд╕реНрддрд╡ рдПрдЯ рдЕрд▓, 2014 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ ред )ред

 from keras.layers import Input, Dense, Embedding, Concatenate, Activation, \ Dropout, LSTM, Bidirectional, GlobalMaxPooling1D, GaussianNoise from keras.models import Model def buildModel(embeddings_matrix, sequence_length, lstm_dim, hidden_layer_dim, num_classes, noise=0.1, dropout_lstm=0.2, dropout=0.2): turn1_input = Input(shape=(sequence_length,), dtype='int32') turn2_input = Input(shape=(sequence_length,), dtype='int32') turn3_input = Input(shape=(sequence_length,), dtype='int32') embedding_dim = embeddings_matrix.shape[1] embeddingLayer = Embedding(embeddings_matrix.shape[0], embedding_dim, weights=[embeddings_matrix], input_length=sequence_length, trainable=False) turn1_branch = embeddingLayer(turn1_input) turn2_branch = embeddingLayer(turn2_input) turn3_branch = embeddingLayer(turn3_input) turn1_branch = GaussianNoise(noise, input_shape=(None, sequence_length, embedding_dim))(turn1_branch) turn2_branch = GaussianNoise(noise, input_shape=(None, sequence_length, embedding_dim))(turn2_branch) turn3_branch = GaussianNoise(noise, input_shape=(None, sequence_length, embedding_dim))(turn3_branch) lstm1 = Bidirectional(LSTM(lstm_dim, dropout=dropout_lstm)) lstm2 = Bidirectional(LSTM(lstm_dim, dropout=dropout_lstm)) turn1_branch = lstm1(turn1_branch) turn2_branch = lstm2(turn2_branch) turn3_branch = lstm1(turn3_branch) x = Concatenate(axis=-1)([turn1_branch, turn2_branch, turn3_branch]) x = Dropout(dropout)(x) x = Dense(hidden_layer_dim, activation='relu')(x) output = Dense(num_classes, activation='softmax')(x) model = Model(inputs=[turn1_input, turn2_input, turn3_input], outputs=output) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc']) return model model = buildModel(embeddings_matrix, MAX_SEQUENCE_LENGTH, lstm_dim=64, hidden_layer_dim=30, num_classes=4) 

5. рдкрд░рд┐рдгрд╛рдо


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

рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдиреЗ рдЯреНрд░реЗрди рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рджреЗрд╡ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рджреМрд░рд╛рди рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдП, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдВрддрд┐рдо рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ, рдореЙрдбрд▓ рдиреЗ 72.59% рдХрд╛ рдПрдХ рд╕реВрдХреНрд╖реНрдо-рдФрд╕рдд F1 рдорд╛рдк рджрд┐рдЦрд╛рдпрд╛, рдФрд░ рд╕рднреА рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдзрд┐рдХрддрдо рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо 79.59% рдерд╛ред рдлрд┐рд░ рднреА, рд╣рдорд╛рд░рд╛ рдкрд░рд┐рдгрд╛рдо рдЖрдпреЛрдЬрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд 58.68% рдХреЗ рдЖрдзрд╛рд░рднреВрдд рдореВрд▓реНрдп рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдерд╛ред

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

рдкреНрд░рд╢рд╕реНрддрд┐ рдкрддреНрд░:

 @inproceedings{smetanin-2019-emosense, title = "{E}mo{S}ense at {S}em{E}val-2019 Task 3: Bidirectional {LSTM} Network for Contextual Emotion Detection in Textual Conversations", author = "Smetanin, Sergey", booktitle = "Proceedings of the 13th International Workshop on Semantic Evaluation", year = "2019", address = "Minneapolis, Minnesota, USA", publisher = "Association for Computational Linguistics", url = "https://www.aclweb.org/anthology/S19-2034", pages = "210--214", } 

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


All Articles