{"id":335845,"date":"2022-07-18T15:00:19","date_gmt":"2022-07-18T15:00:19","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=335845"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=335845","title":{"rendered":"<span>\u041c\u0443\u043b\u044c\u0442\u0438\u043a\u043b\u0430\u0441\u0441\u043e\u0432\u0430\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430. \u0414\u0438\u0441\u0431\u0430\u043b\u0430\u043d\u0441 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0438\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f TF-IDF<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0445 \u043c\u0435\u0442\u043e\u043a \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435. \u041a\u0430\u043a, \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0441\u044b\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p><em>\u0412\u043f\u0435\u0440\u0432\u044b\u0435 \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u2013 \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 &#8212; \u043e\u043a\u043e\u043b\u043e \u0441\u0442\u0430 \u0441\u043b\u043e\u0432 \u2013 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u043a\u0430\u043a \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430, \u0442\u0430\u043a \u0438 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u2013 \u043f\u044f\u0442\u044c, \u043e\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e\u0439 \u00ab\u044d\u043c\u043e\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u043a\u0440\u0430\u0441\u043a\u0438\u00bb \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0435\u0439.<\/em><\/p>\n<h2>\u0414\u0430\u043d\u043d\u044b\u0435<\/h2>\n<figure class=\"float\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/26f\/794\/a0f\/26f794a0f2d1c77c45355af50721d707.png\" width=\"466\" height=\"188\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/26f\/794\/a0f\/26f794a0f2d1c77c45355af50721d707.png\"\/><figcaption><\/figcaption><\/figure>\n<p><em>\u041f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 NDA \u044f \u043d\u0435 \u043c\u043e\u0433\u0443 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043a\u043b\u0438\u0435\u043d\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u043e\u0431 \u043e\u0442\u0435\u043b\u044f\u0445 \u2013 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/em><\/p>\n<p>\u041c\u043e\u0439 \u00ab\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439\u00bb \u0441\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 163830 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (\u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e <a href=\"https:\/\/drive.google.com\/file\/d\/13b57W8XKkaT5m_cEeumeGtpXhtQCrlyk\/view?usp=sharing\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>), \u043a\u0430\u043a \u0438 \u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0432 \u0441\u0435\u0442\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0441\u0431\u0430\u043b\u0430\u043d\u0441 \u0432 \u043a\u043b\u0430\u0441\u0441\u0430\u0445, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043e\u0449\u0443\u0442\u0438\u043c\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f.<\/p>\n<figure class=\"float\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f68\/571\/650\/f68571650bef7f7d2d9a2156f8614dfa.png\" width=\"501\" height=\"328\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f68\/571\/650\/f68571650bef7f7d2d9a2156f8614dfa.png\"\/><figcaption><\/figcaption><\/figure>\n<p><em>\u041d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u0441 \u043c\u0435\u0442\u043a\u0430\u043c\u0438 <\/em><strong><em>1 \u0438 3<\/em><\/strong><em>, \u0438 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u0435\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <\/em><strong><em>5-\u044b\u0439 \u043a\u043b\u0430\u0441\u0441<\/em><\/strong><em>. <\/em><\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u0432\u0435\u0441\u043e\u043c\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0434\u043b\u0438\u043d\u0435, \u043f\u0440\u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0434\u043b\u0438\u043d\u0435 \u043e\u0442\u0437\u044b\u0432\u0430 50 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043a\u0440\u0443\u043f\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e, \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u044e\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 100 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u2013 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u044b \u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u044b\u0441\u044f\u0447\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a55\/6d5\/4e9\/a556d54e923a87e077b072bf4c6d72c9.png\" width=\"974\" height=\"308\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a55\/6d5\/4e9\/a556d54e923a87e077b072bf4c6d72c9.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0447\u0438\u0441\u0442\u043e\u0442\u044b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u044f \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 25000 \u0441\u0442\u0440\u043e\u043a \u2013 \u043f\u043e 5000 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0441. \u041c\u043e\u0434\u0435\u043b\u0438\u0440\u0443\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043e\u0442 1 \u0434\u043e 100.<\/p>\n<h2>\u0417\u0430\u0434\u0430\u0447\u0430<\/h2>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0443\u0442\u044c \u0433\u043b\u0443\u0431\u0436\u0435 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0443\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u043e\u0432 TF-IDF<\/p>\n<h2>\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430. \u042f \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b \u0447\u0442\u043e 30-35 \u0442\u044b\u0441\u044f\u0447 \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c 20\u043a \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438 \u0434\u043b\u044f \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0430 15 \u0442\u044b\u0441\u044f\u0447\u0430\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0434\u043b\u044f 5-\u0433\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u044f \u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u00ab\u0434\u0435\u0448\u0435\u0432\u044b\u0439\u00bb \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 <strong>\u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0433\u0440\u0430\u043c\u043c<\/strong> \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u0440\u043f\u0443\u0441\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0434\u043b\u044f \u043d\u0430\u0441 <strong>\u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0441\u043f\u0435\u043a\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/strong>, \u0442\u0430\u043a \u0434\u043b\u044f \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0442\u043e\u0434 TF-IDF. \u0414\u0430\u043b\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0441\u044c \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435, \u0430 \u0437\u0434\u0435\u0441\u044c \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u043c\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 (\u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u0438\u0435 \u043e\u0442\u0437\u044b\u0432\u044b). <\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e (<em>tokenize_sentences<\/em>) \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u043c (<em>&#8216;END_SENT_START&#8217;<\/em>) \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f. <em>[&#8216;\u043d\u0430\u0447\u043d\u0435\u043c&#8217;, &#8216;\u0441&#8217;, &#8216;\u0442\u043e\u0433\u043e&#8217;, &#8216;\u0447\u0442\u043e&#8217;, &#8216;\u0432&#8217;, &#8216;\u044d\u0442\u043e\u043c&#8217;, &#8216;\u043e\u0442\u0435\u043b\u0435&#8217;, &#8216;\u043d\u0435&#8217;, &#8216;\u0431\u0435\u0440\u0443\u0442&#8217;, &#8216;\u0434\u0435\u043d\u044c\u0433\u0438&#8217;, &#8216;\u0442\u043e\u043b\u044c\u043a\u043e&#8217;, &#8216;\u0437\u0430&#8217;, &#8216;\u0432\u043e\u0437\u0434\u0443\u0445&#8217;, &#8216;END_SENT_START&#8217;, &#8216;\u0437\u0432\u043e\u043d\u043e\u043a&#8217;, &#8216;\u0441&#8217;, &#8216;\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430&#8217;, &#8230;]<\/em><\/p>\n<pre><code class=\"python\">import pandas as pd import numpy as np import sklearn import re  import nltk from nltk import tokenize from nltk.tokenize import RegexpTokenizer  def get_text_for_label(df, label): # \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430     label = 'label == ' + str(label)     df_label = df.query(label).drop(['label'], axis=1)     return df_label.feedback.values.tolist()  feedback_label_1 = get_text_for_label(df_fin_feedback, 1) # \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430  def tokenize_sentences(text_corp): # \u0424\u0443\u043d\u043a\u0446\u0438\u044e \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u043d\u0430 \u0442\u043e\u043a\u0435\u043d\u044b \u0441 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u043e\u0439 \u043f\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c     token_corp = []     for text in text_corp:         text = re.sub(r'\\s+', ' ', text, flags=re.M)         for sent in re.split(r'(?&lt;=[.!?\u2026])\\s+', text):             sent = sent.replace('\\n',' ')             for word in sent.split():                 token = re.search(r'[\u0430-\u044f\u0451\u0410-\u042f\u0401a-zA-Z]+', word, re.I)                 if token is None:                     continue                 token_corp.append(token.group().lower())             token_corp.append('END_SENT_START') # \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d     return token_corp  token_label_1 = tokenize_sentences(feedback_label_1) # \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u0445\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0431\u0438\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438: \u043a\u043b\u044e\u0447\u0438 \u2013 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b, \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2013 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0437\u0430 \u043d\u0438\u043c\u0438 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0435 \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 (\u00a0 { &#8216;\u043e\u0442\u0435\u043b\u044c&#8217;: [(&#8216;\u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c&#8217;, 4.116e-06), (&#8216;\u0432\u043e\u0431\u0449\u0435\u043c&#8217;, 2.058e-06), \u2026)<\/p>\n<pre><code class=\"python\">from collections import Counter, defaultdict  def get_bigramms(token_list):     bigramm_corp = []     for i in range(len(token_list)-1):         bigramm = token_list[i] + ' ' + token_list[i+1]         bigramm_corp.append(bigramm) # \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0438\u0433\u0440\u0430\u043c\u043c          unique_token_count = len(set(bigramm_corp)) # \u043a\u043e\u043b-\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u0438\u0433\u0440\u0430\u043c\u043c     bigramm_proba = {} # \u0421\u043e\u0437\u0434\u0430\u044e \u0441\u043b\u043e\u0432\u0430\u0440\u0438\u043a \u0434\u043b\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430: \u041a\u043b\u044e\u0447 - \u0431\u0438\u0433\u0440\u0430\u043c\u043c\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 - \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c           count_bigramm = Counter(bigramm_corp) # \u0421\u043e\u0437\u0434\u0430\u044e \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442 \u0431\u0438\u0433\u0440\u0430\u043c\u043c     count_token = Counter(token_list) # \u0421\u043e\u0437\u0434\u0430\u044e \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442 \u0442\u043e\u043a\u0435\u043d\u043e\u0432                      # \u0421\u043e\u0437\u0434\u0430\u044e \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0431\u0438\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438: \u043a\u043b\u044e\u0447\u0438 \u2013 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b,      # \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2013 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0437\u0430 \u043d\u0438\u043c\u0438 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0435      # \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 (  { '\u043e\u0442\u0435\u043b\u044c': [('\u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c', 4.116e-06), ('\u0432\u043e\u0431\u0449\u0435\u043c', 2.058e-06), \u2026)     grouped_bigramms = defaultdict(list)     for bigramm in set(bigramm_corp):         first_word, second_word = bigramm.split()         proba = (count_bigramm[bigramm] + 1) \/ (count_token[first_word] + unique_token_count) # \u0424\u043e\u0440\u043c\u0443\u043b\u0430 \u041b\u0430\u043f\u043b\u0430\u0441\u0430         grouped_bigramms[first_word].append((second_word, proba))     return grouped_bigramms  grouped_bigramm_1 = get_bigramms(token_label_1) # \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430<\/code><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043a\u043e\u0434 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0421\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0434\u0430\u0451\u0442 4 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e 15 \u0441\u043b\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0435, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \ud83d\ude42<\/p>\n<blockquote>\n<p><em>&#8216;\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b\u0438 \u043a\u0430\u043a \u0438 \u0432\u0441\u044f \u043c\u0435\u0431\u0435\u043b\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u0445\u043e\u0447\u0443 \u043e\u0442 \u043e\u0442\u0435\u043b\u044f \u043d\u0435 \u0437\u0432\u043e\u043d\u0438\u043b\u0430 \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u0443 \u0432\u044b\u0431\u043e\u0440\u0430. \u043e\u043a\u0440\u0443\u0433\u0430 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043f\u043e \u0447\u0430\u0441\u0430 \u0432\u0438\u0434\u0438\u043c\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u0438\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043d\u0435\u0442 \u0447\u0430\u0439\u043d\u0438\u043a\u0430 \u043d\u0438 \u0441\u043e\u0441\u0438\u0441\u043e\u043a. \u043e\u0442\u043d\u0435\u0441\u0435\u043d \u043a \u0441\u0432\u0435\u0434\u0435\u043d\u044c\u044e, \u043b\u0438\u043d\u0438\u044e \u0441\u0442\u0430\u043b\u0438 \u0436\u0434\u0430\u0442\u044c \u043f\u043e\u043a\u0430 \u043c\u044b \u0431\u044b\u043b\u0438 \u0441 \u0441\u0443\u0445\u0430\u0440\u0438\u043a\u0430\u043c\u0438, \u043e\u0442\u0444\u0443\u0442\u0431\u043e\u043b\u0438\u0432\u0430\u044e\u0442, \u0432\u0435\u0447\u0435\u0440\u043d\u0438\u0439 \u0440\u044b\u043d\u043e\u043a \u0433\u0434\u0435 \u0442\u043e. \u0447\u0435\u0440\u043d\u044b\u0448\u0435\u0432\u0441\u043a\u043e\u0439, \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0447\u0435\u043c \u044f \u0443\u0435\u0437\u0436\u0430\u043b\u0430 \u0438\u0437 \u0441\u0430\u043d\u0430\u0442\u043e\u0440\u0438\u044f \u0430 \u0442\u0443\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438.&#8217;<\/em><\/p>\n<\/blockquote>\n<pre><code class=\"python\">import random   def generate_texts(token_label, grouped_bigramm, label, count_text, count_sent, count_word):      # \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u0430 \u0431\u0438\u0433\u0440\u0430\u043c\u043c \"\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439\"     exceptions_bigramm = defaultdict(int)     # \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f     unique_token = list(set(token_label))      texts = []     for it_text in range(count_text):  # \u0426\u0438\u043a\u043b \u0441 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c \u043a\u043e\u043b-\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432         text = ''         unique_word = set()          # \u0426\u0438\u043a\u043b \u0441 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c \u043a\u043e\u043b-\u0432\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435         for it_sent in range(count_sent):             len_sent = count_word             # \u0413\u0435\u043d\u0435\u0440\u0438\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f             start_word = random.choice(unique_token)             # \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0435 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e             final_sent = start_word             # \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u043b\u0438\u0441\u044c \u0432 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0447\u0442\u043e\u0431\u044b \u0433\u0435\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0435 \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c)             unique_word.add(start_word)              for step in range(count_word):                 next_word = None  # \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430                 frequency = 0  # \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f-\u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430                  # \u041f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e \u0441 \u043a\u043b\u044e\u0447\u043e\u043c \u0431\u0438\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0435\u0451 \u0447\u0430\u0441\u0442\u043e\u0442\u044b                 for second_word, freq in grouped_bigramm[start_word]:                     bigramm = start_word + ' ' + second_word                     # \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0432\u0430 \u0432 \u043e\u0434\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435                     if exceptions_bigramm[bigramm] > 3:                         continue                     if freq > frequency and second_word not in unique_word and second_word != 'END_SENT_START':                         next_word = second_word                         frequency = freq  # \u0415\u0441\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0435\u0433\u043e                 if next_word is None:  # \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u0441\u043b\u043e\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u0438\u0441\u043a \u0437\u0430\u043d\u043e\u0432\u043e                     start_word = random.choice(unique_token)                     final_sent += ', ' + start_word                     unique_word.add(start_word)                 else:                     # \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0446\u0438\u043a\u043b\u0430 \u043d\u0430\u0448\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0441\u043b\u043e\u0432\u0430 (\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u0438 \u0432 \u0446\u0438\u043a\u043b\u0435) - \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435                     exceptions_bigramm[start_word + ' ' + next_word] += 1                     start_word = next_word                     final_sent += ' ' + next_word                     unique_word.add(start_word)             final_sent += '. '             text += final_sent         texts.append(text)      generation_text_df = pd.DataFrame(texts, columns=['feedback'])  # \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0444\u0440\u0435\u0439\u043c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430     generation_text_df['label'] = label     return generation_text_df[['label', 'feedback']]   label_1_df = generate_texts(token_label_1, grouped_bigramm_1, label=1, count_text=15000, count_sent=4, count_word=15)<\/code><\/pre>\n<p>\u041a\u0430\u043a, \u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435, \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 <strong>\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0432\u0430\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0432\u0430 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0435<\/strong> \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u0442\u043e\u0447\u0435\u043d \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c. \u0418 \u0442\u0435\u043f\u0435\u0440\u044c, \u0437\u0430\u043f\u0430\u043c\u044f\u0442\u043e\u0432\u0430\u0432 \u0432\u044b\u0448\u0435\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435, \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<h2>\u0411\u0430\u043b\u0430\u043d\u0441 \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0432 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0431\u0430\u043b\u0430\u043d\u0441\u0443 \u0434\u043b\u0438\u043d\u0443 \u0441\u0430\u043c\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432. <em>\u0414\u043b\u044f \u0447\u0435\u0433\u043e?<\/em> \u0427\u0442\u043e \u0431\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 TF-IDF.<\/p>\n<p>\u041c\u0435\u0440\u0430 TF-IDF \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0434\u0432\u0443\u0445 \u0441\u043e\u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u0435\u0439.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c54\/9db\/808\/c549db80862e7588760be72104af92cb.png\" alt=\"\" title=\"\" width=\"510\" height=\"57\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c54\/9db\/808\/c549db80862e7588760be72104af92cb.png\"\/><figcaption><\/figcaption><\/figure>\n<p>TF &#8212; \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u043b\u043e\u0432\u0430 &#8212; \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 \u043a \u043e\u0431\u0449\u0435\u043c\u0443 \u0447\u0438\u0441\u043b\u0443 \u0441\u043b\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043b\u043e\u0432\u0430 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<figure class=\"float\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/848\/db0\/e64\/848db0e645a8c5fcf204584338144b47.png\" width=\"261\" height=\"91\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/848\/db0\/e64\/848db0e645a8c5fcf204584338144b47.png\"\/><figcaption><\/figcaption><\/figure>\n<p>IDF &#8212; \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 &#8212; \u0438\u043d\u0432\u0435\u0440\u0441\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0423\u0447\u0451\u0442 IDF \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0432\u0435\u0441 \u0448\u0438\u0440\u043e\u043a\u043e\u0443\u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u043e\u0432. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 IDF.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/28e\/646\/dca\/28e646dca2602660278b748220e7033e.png\" width=\"515\" height=\"99\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/28e\/646\/dca\/28e646dca2602660278b748220e7033e.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0435\u0441 \u0432 TF-IDF \u043f\u043e\u043b\u0443\u0447\u0430\u0442 \u0441\u043b\u043e\u0432\u0430 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 <strong>\u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430<\/strong> \u0438 \u0441 \u043d\u0438\u0437\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0439 <strong>\u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445<\/strong>. \u0422\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u043a\u043e\u0440\u043f\u0443\u0441 \u0441 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 \u0441 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u043b\u043e\u0432, \u043c\u044b \u0440\u0438\u0441\u043a\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u0430\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c IDF \u0435\u0441\u043b\u0438 \u0441\u043b\u043e\u0432\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u0430\u0445 \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u0435\u0441\u043b\u0438 \u0441\u043b\u043e\u0432\u043e \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0440\u0443\u043f\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435.<\/p>\n<p>\u0415\u0449\u0451 \u0440\u0430\u0437 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443<\/p>\n<ul>\n<li>\n<p><em>\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439. \u0421\u043b\u043e\u0432\u043e t \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f <\/em><strong><em>\u043f\u044f\u0442\u044c \u0440\u0430\u0437 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u043b\u0438\u043d\u043d\u043e\u0439 500 \u0441\u043b\u043e\u0432<\/em><\/strong><em>: \u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u044b IDF \u043f\u043e\u043b\u0443\u0447\u0438\u0442 5 \u0431\u0430\u043b\u043e\u0432 \u0438 \u0441\u043d\u0438\u0437\u0438\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0430\u043c\u043e\u0433\u043e IDF, \u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441 \u0441\u043b\u043e\u0432\u0430.<\/em><\/p>\n<\/li>\n<li>\n<p><em>\u0412\u0442\u043e\u0440\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439. \u0421\u043b\u043e\u0432\u043e t \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f <\/em><strong><em>\u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0440\u0430\u0437\u0443 \u0432 \u043f\u044f\u0442\u0438 \u0442\u0435\u043a\u0441\u0442\u0430\u0445 \u0434\u043b\u0438\u043d\u043d\u043e\u0439 100 \u0441\u043b\u043e\u0432<\/em><\/strong><em>: \u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u044b IDF \u043f\u043e\u043b\u0443\u0447\u0438\u0442 1 \u0431\u0430\u043b\u043e\u0432 \u0438 \u0437\u0430\u0432\u044b\u0441\u0438\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0430\u043c\u043e\u0433\u043e IDF, \u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441 \u0441\u043b\u043e\u0432\u0430.<\/em><\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0434\u0432\u043e\u0434\u044f \u0447\u0435\u0440\u0442\u0443, \u0432\u044b\u0445\u043e\u0434\u0438\u0442, \u0447\u0442\u043e, \u0437\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0443 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u043e\u0432, <strong>\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u044f \u0434\u043b\u0438\u043d\u0443 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0434\u043b\u044f \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/strong>. \u0415\u0441\u043b\u0438 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u043e\u0439 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 100 \u0441\u043b\u043e\u0432, \u043d\u0430\u043c \u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435<\/p>\n<p>\u041f\u0440\u0438\u0432\u0435\u0434\u0451\u043c \u0442\u043e\u043a\u0435\u043d\u044b \u043a \u0438\u0445 \u043b\u0435\u043c\u043c\u0430\u043c<\/p>\n<pre><code class=\"python\">from nltk.tokenize import RegexpTokenizer from nltk import tokenize import nltk import pymorphy2 morph = pymorphy2.MorphAnalyzer()   def lemmatize(text):     pattern = '[\u0430-\u044f\u0451\u0410-\u042f\u0401]+'     tok = tokenize.RegexpTokenizer(pattern)     text = tok.tokenize(text)      def normalize(word):         return morph.parse(word.lower())[0].normal_form      return \" \".join([normalize(it) for it in text if len(it) > 2])   df_feedback_train['feedback'] = df_feedback_train['feedback'].apply(lambda value: lemmatize(value))<\/code><\/pre>\n<p>\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043d\u0430\u0448 \u043a\u043e\u0440\u043f\u0443\u0441 \u0447\u0435\u0440\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f\/\u0441\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u0440\u043f\u0443\u0441 \u0441 \u0434\u043b\u0438\u043d\u0430\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c, \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430\u0445 \u2013 <strong>\u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e \u0441\u0442\u0430 \u0442\u043e\u043a\u0435\u043d\u043e\u0432.<\/strong><\/p>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b: <em>1. \u0441\u0430\u043c \u043a\u043e\u0440\u043f\u0443\u0441; 2. \u043d\u0438\u0436\u043d\u0438\u0439 \u043f\u043e\u0440\u043e\u0433 \u0441\u043b\u043e\u0432 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435; 3. \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u043e\u0440\u043e\u0433 \u0441\u043b\u043e\u0432; 4.\u00a0 \u043d\u0438\u0436\u043d\u0438\u0439 \u043f\u043e\u0440\u043e\u0433 \u0441\u043b\u043e\u0432 \u0432 \u0442\u0435\u043a\u0441\u0442\u0430\u0445 \u00ab\u043f\u043e\u0434 \u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u0435\u00bb.<\/em><\/p>\n<pre><code class=\"python\">list_feedback_label_1 = get_text_for_label(df_feedback_train, 1) # \u0421\u043d\u043e\u0432\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u0444\u0440\u0435\u0439\u043c\u0430 (\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430)   def balance_text(corp, low_thresh, high_thresh, low_remove_tresh):     new_corp, temp = [], []     for text in corp:         if low_thresh &lt;= len(text) &lt;= high_thresh: # \u0415\u0441\u043b\u0438 \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 - \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f             new_corp.append(text)         elif len(text) &lt; low_thresh: # \u0415\u0441\u043b\u0438 \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u0430 - \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0437\u0430\u0442\u0435\u043c \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u043c \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u043c             if len(temp) >= low_thresh:                 new_corp.append(temp)                 temp = text             else:                 temp.extend(text)         else:             # \u0415\u0441\u043b\u0438 \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u0430 - \u0441\u043f\u043b\u0438\u0442\u0438\u043c \u043d\u0430 \u043c\u0435\u043d\u044c\u0448\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430             # \u0421\u043e\u0432\u0441\u0435\u043c \u043c\u0435\u043b\u043a\u0438\u0435 \u0445\u0432\u043e\u0441\u0442\u043e\u0432\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c             for j in range(0, len(text) - low_remove_tresh, high_thresh):                 new_corp.append(text[j:min(len(text), j + high_thresh)])       if len(temp) > low_remove_tresh:         new_corp.append(temp)       return new_corp   label_1_feedback_balance = balance_text(list_feedback_label_1, 50, 100, 10) # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 # \u0412\u0441\u0451 \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 5-\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432.<\/code><\/pre>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ccd\/547\/366\/ccd547366bcd8649d760b71dc4877c47.png\" width=\"1193\" height=\"299\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ccd\/547\/366\/ccd547366bcd8649d760b71dc4877c47.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u0435 (\u0433\u0440\u0430\u0444\u0438\u043a \u043d\u0438\u0436\u0435), \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u044f \u0441\u0442\u0440\u0435\u043c\u0438\u043b\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0445\u043e\u0436\u0438\u043c \u2013 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c, \u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0434\u0430\u043b\u043e \u0445\u0443\u0434\u0448\u0438\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0430 \u0441\u0430\u043c\u044b\u0439 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0432\u044b\u0448\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e4f\/d5b\/3a8\/e4fd5b3a8a13eb47fb387957046616f5.png\" width=\"1216\" height=\"302\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e4f\/d5b\/3a8\/e4fd5b3a8a13eb47fb387957046616f5.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u0441\u043e \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u043b\u043e\u0432, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0442\u0441\u0435\u0447\u0451\u043c \u043b\u0438\u0448\u043d\u0435\u0435 \u2013 \u0434\u0443\u043c\u0430\u044e 40\u043a \u0434\u043e\u043a\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u0443\u0447\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 TF-IDF \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f.<\/p>\n<pre><code class=\"python\">from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report, confusion_matrix, accuracy_score  %matplotlib inline import matplotlib.pyplot as plt import seaborn as sns  # \u041e\u0442\u0441\u0435\u043a\u0430\u0435\u043c \u043b\u0438\u0448\u043d\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043b-\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 label_1_feedback_balance = label_1_feedback_balance[:40000] # \u0422\u0430\u043a \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430  # \u0421\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u043c \u043e\u0434\u0438\u043d \u0444\u0440\u0435\u0439\u043c \u0434\u043b\u044f \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 def list_to_df(texts, label): # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0444\u0440\u0435\u0439\u043c\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430     feedback = [' '.join(it) for it in texts]     labels = [label for i in range(len(texts))]     return pd.DataFrame(list(zip(labels, feedback)), columns =['label', 'feedback'])  df_label_1 = list_to_df(label_1_feedback_balance, 1) # \u0422\u0430\u043a \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 (\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0444\u0440\u0435\u0439\u043c)  df_feedback_train_balance = pd.concat([df_label_1, df_label_2, df_label_3, df_label_4, df_label_5], axis=0) # \u0421\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u043c df_feedback_train_balance = df_feedback_train_balance.sample(frac=1).reset_index(drop=True) # \u041d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u044b   X_train_text = df_feedback_train_balance['feedback'].values X_test_text = df_feedback_test['feedback'].values y_train = df_feedback_train_balance['label'].values y_test = df_feedback_test['label'].values  v = TfidfVectorizer(norm=None, max_df=0.8, max_features=500, decode_error='replace') # \u0412\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0430 X_train_vector = v.fit_transform(X_train_text) X_test_vector = v.transform(X_test_text)  clf = LogisticRegression( random_state=64, solver='lbfgs', max_iter=10000, n_jobs=-1) # \u041e\u0431\u0443\u0447\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 clf.fit(X_train_vector, y_train) y_pred = clf.predict(X_test_vector)  # \u0412\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 print(accuracy_score(y_test, y_pred)) print(classification_report(y_test,y_pred))  T5_lables = ['5','4','3','2','1']      ax= plt.subplot()  cmm = confusion_matrix(y_test,y_pred) sns.heatmap(cmm, annot=True, fmt='g', ax=ax);  ax.set_xlabel('Predicted labels');ax.set_ylabel('True labels');  ax.set_title('Confusion Matrix');  ax.xaxis.set_ticklabels(T5_lables); ax.yaxis.set_ticklabels(T5_lables);<\/code><\/pre>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0441 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 (\u043d\u0435 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u043c\u0438 \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443) \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c <strong>0.51211<\/strong>. \u041a\u043b\u0430\u0441\u0441\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u0445 precision \u0438 recall. <\/p>\n<figure class=\"float\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4d6\/4f1\/60d\/4d64f160d3226e13514218ea02ce95a1.png\" width=\"461\" height=\"334\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4d6\/4f1\/60d\/4d64f160d3226e13514218ea02ce95a1.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u043b\u0430\u0431\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u0430\u0445 \u0434\u0430\u043b\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 <strong>0,56897<\/strong>.<\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0436\u0435 \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u043f\u043e \u0434\u043b\u0438\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c <strong>0,64984<\/strong>. \u0423\u0442\u043e\u0447\u043d\u0451\u043d\u043d\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0442\u0430\u043a \u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u0440\u0438\u044f\u0442\u043d\u0435\u0439, \u0434\u0430 \u0438 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0432 <strong>8%<\/strong> \u043f\u0440\u0438 \u043c\u043d\u043e\u0433\u043e\u043a\u043b\u0430\u0441\u0441\u043e\u0432\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0449\u0443\u0442\u0438\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<figure class=\"float\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/619\/810\/621\/619810621d101f46ef9e1c672f634556.png\" width=\"466\" height=\"343\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/619\/810\/621\/619810621d101f46ef9e1c672f634556.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435!<\/p>\n<p>\u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u0412\u0430\u0448\u0438\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435\u043c, \u0441 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435\u043c \u043e\u0442\u0432\u0435\u0447\u0443 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445. <\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/677512\/\"> https:\/\/habr.com\/ru\/post\/677512\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0445 \u043c\u0435\u0442\u043e\u043a \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435. \u041a\u0430\u043a, \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0441\u044b\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p><em>\u0412\u043f\u0435\u0440\u0432\u044b\u0435 \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u2013 \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 &#8212; \u043e\u043a\u043e\u043b\u043e \u0441\u0442\u0430 \u0441\u043b\u043e\u0432 \u2013 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u043a\u0430\u043a \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430, \u0442\u0430\u043a \u0438 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u2013 \u043f\u044f\u0442\u044c, \u043e\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e\u0439 \u00ab\u044d\u043c\u043e\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u043a\u0440\u0430\u0441\u043a\u0438\u00bb \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0435\u0439.<\/em><\/p>\n<h2>\u0414\u0430\u043d\u043d\u044b\u0435<\/h2>\n<figure class=\"float\"><figcaption><\/figcaption><\/figure>\n<p><em>\u041f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 NDA \u044f \u043d\u0435 \u043c\u043e\u0433\u0443 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043a\u043b\u0438\u0435\u043d\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u043e\u0431 \u043e\u0442\u0435\u043b\u044f\u0445 \u2013 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/em><\/p>\n<p>\u041c\u043e\u0439 \u00ab\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439\u00bb \u0441\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 163830 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (\u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e <a href=\"https:\/\/drive.google.com\/file\/d\/13b57W8XKkaT5m_cEeumeGtpXhtQCrlyk\/view?usp=sharing\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>), \u043a\u0430\u043a \u0438 \u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0432 \u0441\u0435\u0442\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0441\u0431\u0430\u043b\u0430\u043d\u0441 \u0432 \u043a\u043b\u0430\u0441\u0441\u0430\u0445, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043e\u0449\u0443\u0442\u0438\u043c\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f.<\/p>\n<figure class=\"float\"><figcaption><\/figcaption><\/figure>\n<p><em>\u041d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u0441 \u043c\u0435\u0442\u043a\u0430\u043c\u0438 <\/em><strong><em>1 \u0438 3<\/em><\/strong><em>, \u0438 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u0435\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <\/em><strong><em>5-\u044b\u0439 \u043a\u043b\u0430\u0441\u0441<\/em><\/strong><em>. <\/em><\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u0432\u0435\u0441\u043e\u043c\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0434\u043b\u0438\u043d\u0435, \u043f\u0440\u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0434\u043b\u0438\u043d\u0435 \u043e\u0442\u0437\u044b\u0432\u0430 50 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043a\u0440\u0443\u043f\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e, \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u044e\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 100 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u2013 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u044b \u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u044b\u0441\u044f\u0447\u0438.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0447\u0438\u0441\u0442\u043e\u0442\u044b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u044f \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 25000 \u0441\u0442\u0440\u043e\u043a \u2013 \u043f\u043e 5000 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0441. \u041c\u043e\u0434\u0435\u043b\u0438\u0440\u0443\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043e\u0442 1 \u0434\u043e 100.<\/p>\n<h2>\u0417\u0430\u0434\u0430\u0447\u0430<\/h2>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0443\u0442\u044c \u0433\u043b\u0443\u0431\u0436\u0435 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0443\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u043e\u0432 TF-IDF<\/p>\n<h2>\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430. \u042f \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b \u0447\u0442\u043e 30-35 \u0442\u044b\u0441\u044f\u0447 \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c 20\u043a \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438 \u0434\u043b\u044f \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0430 15 \u0442\u044b\u0441\u044f\u0447\u0430\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0434\u043b\u044f 5-\u0433\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u044f \u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u00ab\u0434\u0435\u0448\u0435\u0432\u044b\u0439\u00bb \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 <strong>\u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0433\u0440\u0430\u043c\u043c<\/strong> \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u0440\u043f\u0443\u0441\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0434\u043b\u044f \u043d\u0430\u0441 <strong>\u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0441\u043f\u0435\u043a\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/strong>, \u0442\u0430\u043a \u0434\u043b\u044f \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0442\u043e\u0434 TF-IDF. \u0414\u0430\u043b\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0441\u044c \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435, \u0430 \u0437\u0434\u0435\u0441\u044c \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u043c\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 (\u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u0438\u0435 \u043e\u0442\u0437\u044b\u0432\u044b). <\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e (<em>tokenize_sentences<\/em>) \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u043c (<em>&#8216;END_SENT_START&#8217;<\/em>) \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f. <em>[&#8216;\u043d\u0430\u0447\u043d\u0435\u043c&#8217;, &#8216;\u0441&#8217;, &#8216;\u0442\u043e\u0433\u043e&#8217;, &#8216;\u0447\u0442\u043e&#8217;, &#8216;\u0432&#8217;, &#8216;\u044d\u0442\u043e\u043c&#8217;, &#8216;\u043e\u0442\u0435\u043b\u0435&#8217;, &#8216;\u043d\u0435&#8217;, &#8216;\u0431\u0435\u0440\u0443\u0442&#8217;, &#8216;\u0434\u0435\u043d\u044c\u0433\u0438&#8217;, &#8216;\u0442\u043e\u043b\u044c\u043a\u043e&#8217;, &#8216;\u0437\u0430&#8217;, &#8216;\u0432\u043e\u0437\u0434\u0443\u0445&#8217;, &#8216;END_SENT_START&#8217;, &#8216;\u0437\u0432\u043e\u043d\u043e\u043a&#8217;, &#8216;\u0441&#8217;, &#8216;\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430&#8217;, &#8230;]<\/em><\/p>\n<pre><code class=\"python\">import pandas as pd import numpy as np import sklearn import re  import nltk from nltk import tokenize from nltk.tokenize import RegexpTokenizer  def get_text_for_label(df, label): # \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430     label = 'label == ' + str(label)     df_label = df.query(label).drop(['label'], axis=1)     return df_label.feedback.values.tolist()  feedback_label_1 = get_text_for_label(df_fin_feedback, 1) # \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430  def tokenize_sentences(text_corp): # \u0424\u0443\u043d\u043a\u0446\u0438\u044e \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u043d\u0430 \u0442\u043e\u043a\u0435\u043d\u044b \u0441 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u043e\u0439 \u043f\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c     token_corp = []     for text in text_corp:         text = re.sub(r'\\s+', ' ', text, flags=re.M)         for sent in re.split(r'(?&lt;=[.!?\u2026])\\s+', text):             sent = sent.replace('\\n',' ')             for word in sent.split():                 token = re.search(r'[\u0430-\u044f\u0451\u0410-\u042f\u0401a-zA-Z]+', word, re.I)                 if token is None:                     continue                 token_corp.append(token.group().lower())             token_corp.append('END_SENT_START') # \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d     return token_corp  token_label_1 = tokenize_sentences(feedback_label_1) # \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u0445\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0431\u0438\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438: \u043a\u043b\u044e\u0447\u0438 \u2013 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b, \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2013 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0437\u0430 \u043d\u0438\u043c\u0438 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0435 \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 (\u00a0 { &#8216;\u043e\u0442\u0435\u043b\u044c&#8217;: [(&#8216;\u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c&#8217;, 4.116e-06), (&#8216;\u0432\u043e\u0431\u0449\u0435\u043c&#8217;, 2.058e-06), \u2026)<\/p>\n<pre><code class=\"python\">from collections import Counter, defaultdict  def get_bigramms(token_list):     bigramm_corp = []     for i in range(len(token_list)-1):         bigramm = token_list[i] + ' ' + token_list[i+1]         bigramm_corp.append(bigramm) # \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0438\u0433\u0440\u0430\u043c\u043c          unique_token_count = len(set(bigramm_corp)) # \u043a\u043e\u043b-\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u0438\u0433\u0440\u0430\u043c\u043c     bigramm_proba = {} # \u0421\u043e\u0437\u0434\u0430\u044e \u0441\u043b\u043e\u0432\u0430\u0440\u0438\u043a \u0434\u043b\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430: \u041a\u043b\u044e\u0447 - \u0431\u0438\u0433\u0440\u0430\u043c\u043c\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 - \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c           count_bigramm = Counter(bigramm_corp) # \u0421\u043e\u0437\u0434\u0430\u044e \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442 \u0431\u0438\u0433\u0440\u0430\u043c\u043c     count_token = Counter(token_list) # \u0421\u043e\u0437\u0434\u0430\u044e \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442 \u0442\u043e\u043a\u0435\u043d\u043e\u0432                      # \u0421\u043e\u0437\u0434\u0430\u044e \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0431\u0438\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438: \u043a\u043b\u044e\u0447\u0438 \u2013 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b,      # \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2013 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0437\u0430 \u043d\u0438\u043c\u0438 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0435      # \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 (  { '\u043e\u0442\u0435\u043b\u044c': [('\u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c', 4.116e-06), ('\u0432\u043e\u0431\u0449\u0435\u043c', 2.058e-06), \u2026)     grouped_bigramms = defaultdict(list)     for bigramm in set(bigramm_corp):         first_word, second_word = bigramm.split()         proba = (count_bigramm[bigramm] + 1) \/ (count_token[first_word] + unique_token_count) # \u0424\u043e\u0440\u043c\u0443\u043b\u0430 \u041b\u0430\u043f\u043b\u0430\u0441\u0430         grouped_bigramms[first_word].append((second_word, proba))     return grouped_bigramms  grouped_bigramm_1 = get_bigramms(token_label_1) # \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430<\/code><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043a\u043e\u0434 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0421\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0434\u0430\u0451\u0442 4 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e 15 \u0441\u043b\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0435, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \ud83d\ude42<\/p>\n<blockquote>\n<p><em>&#8216;\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b\u0438 \u043a\u0430\u043a \u0438 \u0432\u0441\u044f \u043c\u0435\u0431\u0435\u043b\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u0445\u043e\u0447\u0443 \u043e\u0442 \u043e\u0442\u0435\u043b\u044f \u043d\u0435 \u0437\u0432\u043e\u043d\u0438\u043b\u0430 \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u0443 \u0432\u044b\u0431\u043e\u0440\u0430. \u043e\u043a\u0440\u0443\u0433\u0430 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043f\u043e \u0447\u0430\u0441\u0430 \u0432\u0438\u0434\u0438\u043c\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u0438\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043d\u0435\u0442 \u0447\u0430\u0439\u043d\u0438\u043a\u0430 \u043d\u0438 \u0441\u043e\u0441\u0438\u0441\u043e\u043a. \u043e\u0442\u043d\u0435\u0441\u0435\u043d \u043a \u0441\u0432\u0435\u0434\u0435\u043d\u044c\u044e, \u043b\u0438\u043d\u0438\u044e \u0441\u0442\u0430\u043b\u0438 \u0436\u0434\u0430\u0442\u044c \u043f\u043e\u043a\u0430 \u043c\u044b \u0431\u044b\u043b\u0438 \u0441 \u0441\u0443\u0445\u0430\u0440\u0438\u043a\u0430\u043c\u0438, \u043e\u0442\u0444\u0443\u0442\u0431\u043e\u043b\u0438\u0432\u0430\u044e\u0442, \u0432\u0435\u0447\u0435\u0440\u043d\u0438\u0439 \u0440\u044b\u043d\u043e\u043a \u0433\u0434\u0435 \u0442\u043e. \u0447\u0435\u0440\u043d\u044b\u0448\u0435\u0432\u0441\u043a\u043e\u0439, \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0447\u0435\u043c \u044f \u0443\u0435\u0437\u0436\u0430\u043b\u0430 \u0438\u0437 \u0441\u0430\u043d\u0430\u0442\u043e\u0440\u0438\u044f \u0430 \u0442\u0443\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438.&#8217;<\/em><\/p>\n<\/blockquote>\n<pre><code class=\"python\">import random   def generate_texts(token_label, grouped_bigramm, label, count_text, count_sent, count_word):      # \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u0430 \u0431\u0438\u0433\u0440\u0430\u043c\u043c \"\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439\"     exceptions_bigramm = defaultdict(int)     # \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f     unique_token = list(set(token_label))      texts = []     for it_text in range(count_text):  # \u0426\u0438\u043a\u043b \u0441 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c \u043a\u043e\u043b-\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432         text = ''         unique_word = set()          # \u0426\u0438\u043a\u043b \u0441 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c \u043a\u043e\u043b-\u0432\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435         for it_sent in range(count_sent):             len_sent = count_word             # \u0413\u0435\u043d\u0435\u0440\u0438\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f             start_word = random.choice(unique_token)             # \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0435 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e             final_sent = start_word             # \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u043b\u0438\u0441\u044c \u0432 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0447\u0442\u043e\u0431\u044b \u0433\u0435\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0435 \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c)             unique_word.add(start_word)              for step in range(count_word):                 next_word = None  # \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430                 frequency = 0  # \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f-\u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430                  # \u041f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e \u0441 \u043a\u043b\u044e\u0447\u043e\u043c \u0431\u0438\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0435\u0451 \u0447\u0430\u0441\u0442\u043e\u0442\u044b                 for second_word, freq in grouped_bigramm[start_word]:                     bigramm = start_word + ' ' + second_word                     # \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0432\u0430 \u0432 \u043e\u0434\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435                     if exceptions_bigramm[bigramm] > 3:                         continue                     if freq > frequency and second_word not in unique_word and second_word != 'END_SENT_START':                         next_word = second_word                         frequency = freq  # \u0415\u0441\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0435\u0433\u043e                 if next_word is None:  # \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u0441\u043b\u043e\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u0438\u0441\u043a \u0437\u0430\u043d\u043e\u0432\u043e                     start_word = random.choice(unique_token)                     final_sent += ', ' + start_word                     unique_word.add(start_word)                 else:                     # \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0446\u0438\u043a\u043b\u0430 \u043d\u0430\u0448\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0441\u043b\u043e\u0432\u0430 (\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u0438 \u0432 \u0446\u0438\u043a\u043b\u0435) - \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435                     exceptions_bigramm[start_word + ' ' + next_word] += 1                     start_word = next_word                     final_sent += ' ' + next_word                     unique_word.add(start_word)             final_sent += '. '             text += final_sent         texts.append(text)      generation_text_df = pd.DataFrame(texts, columns=['feedback'])  # \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0444\u0440\u0435\u0439\u043c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430     generation_text_df['label'] = label     return generation_text_df[['label', 'feedback']]   label_1_df = generate_texts(token_label_1, grouped_bigramm_1, label=1, count_text=15000, count_sent=4, count_word=15)<\/code><\/pre>\n<p>\u041a\u0430\u043a, \u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435, \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 <strong>\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0432\u0430\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0432\u0430 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0435<\/strong> \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u0442\u043e\u0447\u0435\u043d \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c. \u0418 \u0442\u0435\u043f\u0435\u0440\u044c, \u0437\u0430\u043f\u0430\u043c\u044f\u0442\u043e\u0432\u0430\u0432 \u0432\u044b\u0448\u0435\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435, \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<h2>\u0411\u0430\u043b\u0430\u043d\u0441 \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0432 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0431\u0430\u043b\u0430\u043d\u0441\u0443 \u0434\u043b\u0438\u043d\u0443 \u0441\u0430\u043c\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432. <em>\u0414\u043b\u044f \u0447\u0435\u0433\u043e?<\/em> \u0427\u0442\u043e \u0431\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 TF-IDF.<\/p>\n<p>\u041c\u0435\u0440\u0430 TF-IDF \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0434\u0432\u0443\u0445 \u0441\u043e\u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u0435\u0439.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>TF &#8212; \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u043b\u043e\u0432\u0430 &#8212; \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 \u043a \u043e\u0431\u0449\u0435\u043c\u0443 \u0447\u0438\u0441\u043b\u0443 \u0441\u043b\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043b\u043e\u0432\u0430 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<figure class=\"float\"><figcaption><\/figcaption><\/figure>\n<p>IDF &#8212; \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 &#8212; \u0438\u043d\u0432\u0435\u0440\u0441\u0438\u044f<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-335845","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=335845"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335845\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=335845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=335845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=335845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}