Классификация сообщений наркозависимых в социальных сетях с помощью нейронных сетей

Изучение лингвистики измененных состояний сознания. Влияние поверхностно-активных веществ на речь человека. Особенности выговора человека в измененном состоянии. Характеристика автоматической выгрузки набора данных. Обучение нейросетевых моделей.

Рубрика Иностранные языки и языкознание
Вид дипломная работа
Язык русский
Дата добавления 21.08.2020
Размер файла 445,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Мы допускаем, что на качество работы классификатора может повлиять и то, что нейросеть анализировала только 20 500 слов из частотного словаря. Наш классификатор выводит размер сообщения, который может оказаться меньше фактической длины текста. Это значит, что в заданном тексте присутствуют слова, частотный индекс которых превышает 20 500. Пример (16) содержит 17 слов, однако программа выдает, что его длина равна 16. В ходе анализа последовательности индексов данного сообщения мы выяснили, что классификатор не учел слово «сорян». Его индекс в частотном словаре -- 27 283, что превышает 20 500 (параметр maxWordCount).

народ! если тема была сорян. кто-то узнавал в жэк что с водой? почему горячая такого мутного цвета?

В данном случае пропуск лексемы не оказал негативного воздействия на работу программы. Классификатор справился со своей задачей и верно присвоил тексту индекс «0». Мы действительно обнаружили это сообщение на публичной странице «ВКонтакте», в которой обсуждается жизнь в одном из жилых комплексов и никаким образом не затрагивается тематика ПАВ.

Кроме того, мы воспользовались результатами тестирования программы на публикациях, которых не было в обучающей выборке, чтобы определить оптимальную длину текста для качественного анализа. Поскольку в процессе оптимизации параметров нам пришлось увеличить значение xLen до 50 слов, мы предположили, что классификатор будет справляться с более короткими текстами хуже, однако с текстами большей длины проблем не возникнет.

Пример (17) представляет полный текст публикации одной из групп наркозависимых «ВКонтакте». Длина этого сообщения сообщения составляет 48 слов, однако программа не учла при анализе 5. Автор не употребляет специальный сленг и не перечисляет названия ПАВ. Он или она описывает свое физическое состояние и просит у подписчиков сообщества совет. О том, что данный текст был опубликован в группе наркозависимых можно догадаться по контексту использования слов «употребление» и «бросить».

Высокое давление после и во время употребления (ближе к утру), такое, что прям все как в тумане и думаешь что помрешь, че делать с этим может кто сталкивался? Раньше такого не было .Прибора для давления нет, но давление чувствуется. Перерывы делаю 3-4 недели. Не Пишите только «бросить» ! Анонимно

Предсказание нейросети для примера (17) выглядит следующим образом: [0.44538686 0.5546131]. Его аргумент максимизации, то есть значение, при котором функция достигает максимума, равен единице. Это число и указывает на определенный класс «1». Мы настроили программу так, чтобы при выявлении данного класса она выдавала следующее сообщение: «Вердикт искусственного интеллекта: Вероятно, это сообщение опубликовано в группе наркозависимых». Класс определен верно.

Протестируем другой текст такой же длины. Пример (18) также представляет сообщение из группы наркозависимых. Публикация приведена целиком, в ней 47 слов. Программа не учла при анализе две словоформы. В группах формата «Подслушано» для наркозависимых, люди часто описывают неблагоприятное физическое состояние, когда просят совет. Данный пример не является исключением. С точки зрения лексического разнообразия, этот текст кажется нам более типичным для класса «1», чем пример (17). В нем присутствует арготизм «ешка», которым обозначается разновидность ПАВ, автор перечисляет названия психических состояний, что, в целом, характерно для текстов данной категории («тревога», «депрессия»).

Привет, у меня сос вопрос. Ела в пятницу ешку, до сих пор чувствую себя плохо. Реальность слабо ощущаю, не хватает сна, кружится голова, тревога и что то вроде депрессии. Есть что то, чем можно снять это из лекарств?Я не в себе. Не просто сонная, или уставшая

Предсказание нейросети следующее: [1.4695947e-08 1.0000000e+00]. Значение аргумента максимизации равно единице, следовательно, модель распознала класс «1». Результат верный, и мы видим, что пока пропуск слов при анализе не оказывает негативного воздействия на точность работы программы.

Мы убедились в том, что наша нейросеть хорошо справляется с распознаванием текстов от 40 до 45 слов и решили протестировать ее на публикациях меньшей длины. Для этого мы выбрали одно сообщение из группы категории «1», которое не попало в обучающую выборку, и сократили его до 36 слов, оставив три последних предложения. Мы получили пример (19).

Все вокруг..как нарисованное, или будто фильм смотрю, или как во сне. Короче не настоящее, ощущении что я осталась в коме лежать и это все галюцинации. И не проходит, уже очень долго, так не должно быть.

В публикации психическое состояние автора описано без использования в большом количестве лексики, характерной для класса «1». Мы обратили внимание только на словоформу «галюцинации», однако она была напечатана с ошибкой. Параметр maxWordCount блокирует анализ слов с опечатками, следовательно, программа не учитывала данную лексему при анализе. Тем не менее, мы убедились в том, что наш финальный шаг в ходе оптимизации параметров, увеличение значения maxWordCount с 20 000 до 20 500, действительно оказал влияние на качество классификации.

Мы протестировали текст из примера (19) на двух моделях классификатора: с первоначальным значением maxWordCount, 20 000 (BoW 50x50), и с оптимизированным, 20 500 (BoW 50x50 + mWC). И та, и другая модель учитывала при анализе 33 слова вместо 36, однако их результаты не совпали.

Предсказание BoW 50x50 (с первоначальным maxWordCount) выглядит так: [0.8672763 0.1327237]. Его аргумент максимизации равен нулю. Это значит, что нейросеть распознала класс «0». При выявлении данного класса мы настроили программу выводить следующее сообщение: «Вердикт искусственного интеллекта: Это сообщение, скорее всего, опубликовано в группе ненаркозависимых». Это ошибка.

Переобученная модель BoW 50x50 + mWC (с оптимизированным maxWordCount) рассчитала другое предсказание: [0.02713695 0.9728631]. Аргумент максимизации здесь равен единице. Это значит, что распознан класс «1». Результат верный. Этот пример иллюстрирует повышение точности нашей программы после оптимизации параметров.

Мы вновь протестировали две модели на сообщении из примера (19), увеличив длину отрывка до 6 последних предложений. Пример (20) содержит получившийся текст. Из 54 слов программа проанализировала 49.

Все вокруг будто ненастоящее. Голоса пригоушенные, или будто издалека говорят. Чем больше пространство тем тяжелее мне видеть/слышать. Все вокруг..как нарисованное, или будто фильм смотрю, или как во сне. Короче не настоящее, ощущении что я осталась в коме лежать и это все галюцинации. И не проходит, уже очень долго, так не должно быть.

Предсказание BoW 50x50 для примера (20) следующее: [1.2046777e-04 9.9987948e-01]. Это значит, что определен класс «1», верно. Предсказание BoW 50x50 + mWC также верно: [1.6329325e-06 9.9999833e-01]. Рассчитанные нейросетью значения указывают на класс текстов из групп наркозависимых. Проверка текста из примера (20) позволила нам убедиться в том, что более точная модель, с оптимизированным значением maxWordCount, в отличие от ее предыдущей модификации (BoW 50x50), способна анализировать более короткие тексты, от 30 до 40 слов.

Итак, мы можем установить минимальное количество слов для заданного текста, которое необходимо, чтобы классификатор корректно распознал класс «1». Сообщение для анализа должно содержать не менее 35 слов, с учетом того, что часть текста не будет проанализирована. Напомним, что точность распознавания этого класса равна 93%. При этом точность распознавания текстов из групп ненаркозависимых стопроцентная. Это позволяет нам предположить, что короткие тексты из групп данного типа не должны вызвать ошибку в работе классификатора.

Проверим нашу гипотезу. Пример (21) представляет публикацию из студенческого «Подслушано». Текст содержит 22 слова, из которых было проанализировано 17. В сообщении содержится объявление о поиске музыканта. Мы не нашли в нем ни одного общего лингвистического признака с текстами класса «0», поэтому посчитали его простым для классификации. Мы не ошиблись. Предсказание классификатора выглядит следующим образом: [1.0000000e+00 4.0607237e-08]. Аргумент максимизации равен нулю, определен класс «0», верно.

Ребят, ищу аккордеониста со своим инструментом в коллектив Если нравятся темы вроде Аффинажа или Шляпников и есть желание поиграть, лайкните пост, напишу

В рассмотренных примерах за счет параметра maxWordCount при анализе не учитывалось до пяти слов. Их потеря при обработке текстовых данных не привела к ошибкам в работе классификатора. Несмотря на то, что количество слов в сообщении обычно превышает количество индексов в анализируемой последовательности, программа работает корректно. Однако большую роль, как мы выяснили, играет длина текста. Желательно, чтобы она превышала 35 слов.

Мы обратили внимание на количество текстов в нашей выборке из групп наркозависимых, в которых пользователи сети описывают свое неблагоприятное психическое и/или физическое состояние. Нас заинтересовал вопрос, не начнет ли классификатор относить все сообщения, в которых люди жалуются на свое самочувствие, к классу «1»? Мы проанализировали несколько текстов из групп формата «Подслушано» для людей, страдающих от депрессивных расстройств. Сообщения данного типа не использовались нами для обучения сети.

Пример (22) можно назвать простым для автоматической классификации. Он напоминает сообщение под номером (21), так как тоже содержит объявление. Автор ищет людей для интервью. Пример короткий, он содержит 29 слов, из которых было проанализировано 25, однако модель справилась с задачей. Ее предсказание выглядит следующим образом: [0.9273292 0.0726708]. Это значит, что определен класс «0», верно.

Учусь в университете, делаю проект связанный с депрессивными расстройствами. Нужны люди для интервью и раскрытия этой проблемы. Можно и просто поделится историей онлайн, если вы не против) Напишите пожалуйста

Следующий пример (23) оказался неоднозначным. Синтаксическая структура сообщения напоминает нам текст класса «1», автор последовательно перечисляет, что он или она чувствует. В сообщении есть опечатка «момерт», которая, возможно, также могла повлиять на анализ.

Я принимаю все близко к сердцу, все мелочи, все переживания. Все это копится, и в один момерт вырывается наружу и у меня случается нервный срыв, хуже чем истерика..

Публикация (23) содержит 28 слов, из которых было проанализировано 25. BoW 50x50, менее точная модификация программы справилась с этой задачей лучше. Ее предсказание: [9.9950576e-01 4.9424247e-04]. Это значит, что определен класс «0», верно. Переобученная и более точная модификация BoW 50x50 + mWC рассчитала следующее: [0.33531737 0.66468257]. Это класс «1», ошибка. Мы не можем установить, с чем именно связано «изменение отношения» нашей программы к данной публикации.

Мы предположили, что к ошибке более точной модификации классификатора могла привести длина сообщения (23). Оно короче установленного нами минимума в 35 слов. В той же группе «Подслушано» для людей, страдающих от депрессии, мы нашли более объемную публикацию (24). Ее длина составляет 63 слова, из которых было проанализировано 53.

Мне стыдно, что моя депрессия ничем не вызвана. Просто в один момент из жизнерадостного экстраверта я превратилась в душевно больного интроверта. Очень рада, что прошли физические симптомы наподобие панических атак, жуткой тряски и потери сознания. Остался только осадок. Не могу радоваться, смеяться, нормально жить. Боюсь, что снова проведу год в постели, а еще больше боюсь того, что снова зайдут разговоры о психиатрической клинике.

Программа пропустила при анализе десять слов, однако ошибку не допустила. Ее предсказание: [0.5821372 0.4178628]. Определен класс «0», верно. Нам же, напротив, данный текст показался похожим на публикации из групп наркозависимых. Автор перечисляет симптомы душевных расстройств и использует для этого специальную лексику, которая действительно может встретиться в тексте категории «1», например, в просьбе помощи или совета.

Мы предполагали, что определенный нами минимум в 35 слов актуален только для текстов класса «1», однако анализ примера (25) позволил нам окончально убедиться в том, что и для установления класса «0», желательно выбирать более длинные сообщения. Длина примера (25) составляет 32 слова, из которых было проанализировано 28. Программа рассчитала следующее предсказание: [3.4869117e-05 9.9996507e-01]. Это класс «1», неверно.

Болею клинической депрессией больше полугода. По своей особенности не могу находиться на солнце (сразу тошнота, слабость,вялость). Сейчас просто не вывожу ,поскольку, лето на дворе. Чувствую как состояние усугубляется и очень боюсь.

Мы установили две основные причины, которые могут привести к ошибкам в работе классификатора. Первая заключается в недостаточной длине заданного текста. Это может негативно повлиять на распознавание как класса «0», так и класса «1». Вторая причина: если текст класса «0» содержит описание депрессивного состояния, то он может быть распознан как публикация из группы наркозависимых. Возможно, это связано с тем, что депрессивные расстройства могут быть как причиной, так и последствием приема психотропных и психоактивных веществ. Например, в сообщении (25) автор перечисляет названия симптомов, описание которых можно встретить в текстах класса «1», например, тошноту и слабость.

На основе этих наблюдений мы сделали вывод о том, что наша обучающая выборка, вероятно, нуждается в пополнении текстами из групп разных типов, в которых пользователи сети описывают свое болезненное психическое состояние. Это открывает возможность автоматически различать похожие сообщения разных классов.

Вернемся к примеру (24). Мы обратили внимание на то, что при анализе данного сообщения не было учтено 10 словоформ, при этом текст в огромном количестве содержит лексику, которая описывает симптомы психических расстройств. При помощи поиска по частотному словарю мы определили индексы всех словоформ с таким значением, чтобы проверить, какие из них не были проанализированы сетью. Мы получили следующий список формата «словоформа, частотный индекс»: «депрессия, 7 272», «физические, 7 180», «симптомы, 5 919», «панических, 118 294», «атак, 118 295», «сознания, 1 019», «психиатрической, 20 425», «клинике, 8 093».

Мы видим, что в «поле зрения» нашей сети не попало только словосочетание «панических атак». Индексы остальных лексем из списка представляют значение меньше 20 500. Это значит, что результаты расчетов нашей модели зависят от наличия подобной лексики в заданном тексте. Мы решили протестировать нашу программу на публикациях из групп наркозависимых, в которых используется подобный лексикон.

Пример (26) был найден в группе наркозависимых, однако нам этот текст кажется неоднозначным для классификации. Автор описывает свою «паранойю» без использования характерной для класса «1» лексики. В сообщении 52 слова, из них было проанализировано 48. Предсказание выглядит следующим образом: [0.00108777 0.9989122]. Эти расчеты указывают на класс текстов из групп наркозависимых, и это верно. На наш взгляд, классификатор справился с очень сложным случаем.

Так вот, мучает меня паранойя. Когда чем то занят, даже не задумываюсь об этом. Но когда заняться особо нечем, мозг выстраивает сумасшедшие цепочки и заставляет мой разум в это поверить. Иногда бывает трудно себя контролировать. Могу сорваться на близких мне людей, обвинить их в том, чего они не делали и т.п

А вот результат классификации текста (27) оказался неожиданным. Из 31 слова было проанализировано 26. Этот текст очень короткий, поэтому вероятность ошибки была выше. Предсказание BoW 50x50 (maxWordCount = 20 000) следующее: [2.8752763e-04 9.9971241e-01]. Определен класс «1», верно. Более точная модель BoW 50x50 + mWC (maxWordCount = 20 500) произвела такой расчет: [0.8877376 0.11226237]. Это класс «0», ошибка.

АНОН.чуваки срочно нужна ваще помощь,дело такое,на месте укола все пожелтело,а вокруг рука красным цветом покрылась,стжмать разжимать больно,что это?пройдет или бежать к врачам?Прикладываю фото

Ошибка более точной модели с примером (27) обеспокоила нас. Выявление публикаций, в которых люди просят, возможно, срочной помощи у незнакомых людей, первостепенно. Автор описывает последствия «укола» с помощью просторечий, стиль его письма напоминает скорее разговорную речь. Мы считаем, что при высокоточной классификации подобные сообщения должны распознаваться правильно.

Наш обучающий набор данных содержит не только жалобы на психическое и/или физическое состояние, просьбы помощи или совета, но и так называемые трип-репорты. Такие тексты представляют собой «отчеты» (англ. report) о трипах, «путешествиях» (англ. trip) в измененное состояние сознания посредством употребления каких-либо ПАВ. Авторы подобных текстов описывают воздействие вещества на организм и сознание человека, способ употребления и обстановку, в которой происходил прием. Пример (28) представляет отрывок, первые два предложения такого текста. В сообщении 27 слов, при анализе было пропущено пять. Предсказание выглядит следующим образом: [0.01702867 0.98297125]. Это класс «1», верно.

Ладно, пока там все брызжут желчью, расскажу вам коротенькую стори, для кого-то может даже поучительную. Было это где-то в 2к14, поехали с другом Димой в курортный городочек...

Пример (29) также представляет отрывок одного из таких репортов. Длина текста составляет 58 слов, 4 не было учтено при анализе. Предсказание классификатора: [0.41930303 0.580697]. Определен класс «1», верно. Мы видим, что несмотря на необычное название, трип-репорты скорее напоминают рассказы в свободной форме, чем отчеты.

он что-то дал ему, не предупредив меня, мы же договаривались, что никаких левых людей. Но не успев задать вопроса, он начал говорить, еле сдерживая смех. Как оказалось, он скатал грязь с ног, положил это в слюду от пачки сигарет и, собственно, отдал. Никиту мы больше не видели, хотя было интересно, что он сделал с этим. Такие вот дела

В сообщении (30) такого же типа всего 34 слова, из которых было проанализировано 28. Предсказание нашей модели следующее: [0.06820762 0.9317924]. Определен класс «1», верно. Нам показалось любопытным, что нейросеть точно распознает трип-репорты, даже если в заданном примере отсутствует сленг или специальная лексика. Мы полагаем, что несмотря на то, что такие тексты напоминают истории или рассказы, по структуре они достаточно однотипны.

Люди, проходящие мимо меня, куда-то спешили, озадаченные лица, торопливые походки, взгляды в никуда, я обожал сидеть так в утро понедельника, и осознавать, что мне никуда спешить не надо, а голова моя свободна от проблем.

Пример (31) мы считаем нестандартным. Контекст позволяет читателю догадаться, что публикация описывает историю, связанную с ПАВ, однако косвенным путем, например, автор акцентирует внимание на фразе «Все будет ровно» и описывает свое нервное состояние. Длина текста составляет 52 слова, однако проанализировано было всего лишь 38. Предсказание выглядит следующим образом: [0.900199 0.09980103]. Определен класс «0», ошибка.

Короткий телефонный разговор с получателем, и фраза "Все будет ровно", прибавила мне уверенности. Моя очередь уже подходила. Девушка безразлично перекладывала мои продукты сверяясь с описью, рутинная работа. Вдруг, пакет с кофе вызвал у нее внезапный интерес, широко развернув его, она принялась внимательно рассматривать содержимое, принюхиваясь и вороша содержимое ручкой. Я занервничал.

Итак, мы установили минимальную длину текста, необходимую для качественной работы нашего классификатора, с помощью тестирования публикаций, которых не было в обучающей выборке. Наша модель будет точно распознавать тексты из групп не- или наркозависимых в том случае, если заданное сообщение содержит не менее 35 слов. Данная особенность обусловлена двумя факторами. Первый заключается в том, что при обучении нейросеть анализировала отрывки публикаций длиной в 50 слов. Тексты были нарезаны таким образом с помощью параметра xLen. Второй фактор связан с параметром maxWordCount, за счет которого классификатор анализирует только те слова в заданном тексте, значение частотного индекса которых ниже 20 500. Корректное распознавание более коротких публикаций может оказаться случайностью.

Мы убедились в том, что оптимизация параметров нашей модели благоприятно повлияла на качество классификации, однако с некоторыми примерами менее точные модификации программы справлялись лучше. Конечно, совершенного алгоритма распознавания публикаций из групп наркозависимых быть не может. Лексические особенности текста и стиль письма -- не абсолютные и далеко не единственные факторы, которые могут повлиять на решение данной задачи.

Также стоит обратить внимание на то, что точность распознавания текстов из групп ненаркозависимых выше. Мы считаем эту особенность нашей программы скорее хорошим показателем. Такие особенности как стиль письма, тематика публикации и лексическое наполнение сообщения, например, использование специфического арго или просторечий, могут привести к неоднозначности. Мы считаем, что в таких случаях, заданное стоит относить к нейтральному классу «0».

ЗАКЛЮЧЕНИЕ

В ходе работы нам удалось обучить две нейросетевых модели для классификации текста, Bag-of-Words и Word Embeddings. Обе модели предназначены для решения одной задачи, присваивания класса «0» или «1» заданным сообщениям из групп не- или наркозависимых соответственно. Точность распознавания мы оценивали с помощью метрики Accuracy, доли правильных ответов от количества текстов в выборке.

Эксперименты по перебору и настройке параметров нашей программы позволили нам разработать наиболее эффективную модификацию. Средняя точность финального варианта модели составляет 97%. Это значит, что тексты из групп ненаркозависимых (класс «0») нейросеть распознает со стопроцентной точностью, а тексты из групп наркозависимых (класс «1») с точностью 93%. Мы назвали модификацию BoW 50x50 + mWC. В названии зашифрован тип модели, Bag-of-Words, и ее настройки: xLen, длина обучающего отрывка, которая составляет 50 слов; step, смещение на 50 единиц при формировании выборки; maxWordCount, количество слов из частотного словаря, которое было учтено при обучении, увеличенное с 20 000 до 20 500.

Мы протестировали нейросеть на текстах, которых не было в обучающей выборке, чтобы определить характеристики текста, необходимые для точной работы программы. Мы обратили внимание на то, что классификатор способен точно распознавать сообщения, в которых люди жалуются на проблемы со здоровьем или свое психическое состояние. Этот результат впечатлил нас, и мы приняли решение продолжить исследование возможностей нейросетей и разработку программы. Возможно, что результаты нашей дальнейшей работы найдут практическое применение.

Несмотря на то, что тексты из групп наркозависимых богаты арго, специальной лексикой, бранными и обсценными словами, наличие или отсутствие перечисленных элементов в заданном тексте не повлияет на работу классификатора. Результат вычислений модели Bag-of-Words основан на частотности словоупотреблений, и мы беспокоились, что эксплицитные характеристики текстов из групп класса «1» внесут помехи в работу программы. Наши опасения не оправдались.

Мы установили минимальное количество слов в заданном тексте, необходимое для корректной работы программы. С учетом фильтрации редких словоформ и опечаток, которая производится в процессе выполнения maxWordCount, сообщение для классификации должно содержать не менее 35 слов. Анализ слишком коротких сообщений приведет к большому количеству ошибок. Более того, мы считаем, что он не имеет смысла. Подобные тексты не всегда несут смысловую нагрузку, это могут быть комментарии к полноценным публикациям или ответы на реплики других пользователей.

Важно отметить, что все знаки кроме букв в заданных текстах фильтруются в ходе токенизации, и текст приводится к нижнему регистру. Это обеспечивает единообразность данных без снижения эффективности. В ходе тестирования программы на новых публикациях, нам стало интересно, повлияет ли на эффективность предварительная лемматизация обучающих текстов, отразится ли на ходе обучения нейросети учет регистра знака, использованных символов и эмодзи. В будущем мы планируем продолжить эксперименты с нашим классификатором и базой данных из групп не- и наркозависимых людей и получить ответы на эти вопросы.

Мы выявили основной недостаток классификатора. Он заключается в том, что сообщения, в которых люди описывают свое депрессивное, подавленное состояние и какие-либо психические проблемы, могут быть с высокой долей вероятности ошибочно отнесены к категории «1». Это связано с тем, что тексты такого типа отсутствуют в нашем обучающем наборе для класса «0». Однако в группах наркозависимых можно встретить множество публикаций, авторы которых описывают свою депрессию, связанную с употреблением ПАВ. Такие тексты использовались для обучения нашей сети. Они действительно напоминают сообщения из групп людей, страдающих от психических расстройств. Мы предполагаем, что решить проблему можно будет с помощью переобучения модели на наборе данных, дополненном текстами из групп людей, страдающих от депрессий.

Итак, мы находим нейросетевой подход приемлемым для решения задачи классификации текстов из групп не- и наркозависимых. Результаты пилотного исследования мы считаем успешными. Они войдут в основу наших будущих экспериментов с искусственным интеллектом в области компьютерной лингвистики и ЛИСС. В будущем мы планируем создать классификатор публичных страниц социальной сети «ВКонтакте». Программа будет получать на вход ссылку на онлайн-сообщество, по ID или домену которой произойдет автоматическая выгрузка нескольких последних публикаций. Тексты будут обработаны для нейросетевой классификации, каждому сообщению будет присвоен класс. Программа рассчитает, текстов какого типа оказалось в сообществе больше и выведет на экран свой вердикт.

Мы убедились в том, что нейросети могут использоваться в исследованиях лингвистики измененных состояний сознания. Мы полагаем, что новые технологии позволяют проанализировать большое количество данных и обнаружить особенности, на которые в ходе традиционного анализа можно не обратить внимания.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ

1. Воробьев, Н.В., Пучков, Е.В. Классификация текстов с помощью сверточных нейронных сетей [Текст] // Молодой исследователь Дона. -- 2017. -- Т. 9 (6). -- 6 с.

2. Лурия, А.Р. Основные проблемы нейролингвистики [Текст] / А.Р. Лурия. -- М. : МГУ, 1975. -- 250 с.

3. Панов, А.Г. Аутогенная тренировка [Текст] / Панов, А.Г., Беляев, Г.С., Лобзин, В.С. и др. -- Л. : Медицина, 1973. -- 216 с.

4. Смирнова, О.С., Шишков, В.В. Выбор топологии нейронных сетей и их применение для классификации коротких текстов [Текст] // International Journal of Open Information Technologies. -- 2016. -- Vol. 4 (8). -- P. 50-54.

5. Созыкин, А.В. Обзор методов обучения глубоких нейронных сетей [Текст] // Вестник ЮУрГУ. -- 2017. -- Т. 6 (3). -- С. 28-59.

6. Спивак, Д.Л. Лингвистика измененных состояний сознания [Текст] / Д.Л. Спивак. -- Л. : "Наука", 1986. -- 92 с.

7. Спивак, Д.Л. Лингвистика измененных состояний сознания: проблема текста [Текст] / Д.Л. Спивак // Вопросы языкознания. -- 1987. - №2. -- C. 77-84.

8. Спивак, Д.Л. Лингвистическая типология искусственно вызываемых состояний измененного сознания. Сообщение I [Текст] / Д.Л. Спивак // Физиология человека. -- 1983. - № 1. -- С. 141-146.

9. Спивак, Д.Л. Стадии в синхронии естественного и искусственных языков [Текст] / Д.Л. Спивак // Инженерная лингвистика и оптимизация преподавания иностранных языков. -- Л. : ЛГПИ, 1980. -- С. 7-30.

10. Уголовный кодекс Российской Федерации от 13.06.1996 г. № 63-ФЗ (ред. от 07.04.2020 г.) (с изм. и доп., вступ. в силу с 12.04.2020) [Текст] // Собрание законодательства РФ. -- 1996. - № 25. -- Ст. 2954.

11. Фирсанова, В.И. Функционирование жаргона наркозависимых в социальных сетях [Текст] / В.И. Фирсанова // Политика и культура в современном мире. -- 2019. -- СПб.: Норма. -- С. 185--195.

12. Шайдукова, Л.К. Современные подходы к реабилитации наркозависимых [Текст] / Л.К. Шайдукова // Казанский медицинский журнал. -- 2013. -- Т.94. -- №3. -- С. 402-405.

13. Bransford, J.D., Franks, J.J. The abstraction of linguistic ideas [Text] // Cognitive Psychology. -- 1971. -- Vol. 2. -- P. 331-350.

14. Chollet, F. Deep Learning with Python [Text] / F. Chollet. -- Manning Publications, 2017. -- 384 p.

15. Collins, P.J. A Comparison of the Oral Syntactic Performance of Alcoholic and Non-Alcoholic Adults [Text] // Language and Speech. -- 1980. -- Vol. 3. -- P. 281-288.

16. Collobert, R., Weston, J., Bottou, L., Karlen, M. et al. Natural Language Processing (Almost) from Scratch [Text] // Journal of Machine Learning Research. -- 2011. -- Vol. 12. -- P. 2493-2537.

17. Flexer, A. Statistical Evaluation of Neural Network Experiments: Minimum Requirements and Current Practice [Text] // Cybernetics and Systems '96, Proceedings of the 13th European Meeting on Cybernetics and Systems Research. Austrian Society for Cybernetic Studies, Vienna. -- 1996. -- Vol. 2. -- P. 1005-1008.

18. Goodfellow, I., Bengio, Y., Courville, A. Deep Learning [Text] / I. Goodfellow, Y. Bengio, A. Courville. -- MIT Press, 2016. -- 800 p.

19. Jacobson, R. Main trends in the science of language [Text] / R. Jacobson. -- New York: Harber, 1974. -- 76 p.

20. Jenkins, J.J. Remember that old theory of memory? Well, forget it! [Text] // American Psychologist. -- 1974. -- Vol. 29. -- P. 785-795.

21. Kim, P. MATLAB Deep Learning: With Machine Learning, Neural Networks and Artificial Intelligence [Text] / P. Kim. -- Apress, 2017. -- 151 p.

22. Kim, Y. Convolutional Neural Networks for Sentence Classification [Text] // Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP). -- 2014. -- P. 1746--1751.

23. Lauret, A. The Design of Web APIs [Text] / A. Lauret. -- Manning Publishings, 2019. -- 400 p.

24. Lee, J.Y., Dernoncourt, F. Sequential Short-Text Classification with Recurrent and Convolutional Neural Networks [Text] // Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. -- 2016. -- Vol. 16 (1). -- P. 515--520.

25. Lee, M.D., Corlett, E.Y. Sequential sampling models of human text classification [Text] // Cognitive Science. -- 2003. -- Vol. 27 (2). -- P. 159-193.

26. Lewis, D.D., Gale, W.A. A Sequential Algorithm for Training Text Classifiers [Text] // SIGIR '94. -- Springer, London, 1994. -- P. 3-12.

27. Manning, C., Raghavan, P., Schьtze, H. Introduction to Information Retrieval [Text] / C. Manning, P. Raghavan, H. Schьtze. -- Cambridge University Press, 2008. -- 506 p.

28. Ng, T.S., Hung, Y.S. Safety, Reliability and Applications of Emerging Intelligent Control Technologies [Text] / T.S. Ng, Y.S. Hung. -- Elsevier, 2014. -- 240 p.

29. Sebastiani, F. Machine Learning in Automated Text Categorization [Text] // ACM Computing Surveys. -- Vol. 34 (1). -- 2002. -- P. 1-47.

30. Spence D.P. Language in psychotherapy [Text] // Psycholinguistic Research (PLE: Psycholinguistics): Implications and Applications. -- 2013. -- 471 p.

31. Sriram, B., Fuhry, D., Demir, E., Ferhatosmanoglu, H., Demirbas, M. Short text classification in twitter to improve information filtering [Text] // SIGIR '10: Proceedings of the 33rd international ACM SIGIR conference on Research and development in information retrieval. -- 2010. -- P. 841-842.

32. Turney, P.D., Pantel, P. From frequency to meaning: Vector space models of semantics [Text] // Journal of artificial intelligence research. -- 2010. -- Vol. 37. -- P. 141-188.

33. Waibel, A., Hanazawa, T., Hinton, G., Shikano, K., Lang K.J. Phoneme recognition using timedelay neural networks [Text] // IEEE Transactions on Acoustics, Speech, and Signal Processing. -- 1989. -- Vol. 37 (3) -- P. 328--339.

34. Webster, J.J., Kit, C. Tokenization as the initial phase in NLP [Text] // COLING '92: Proceedings of the 14th conference on Computational linguistics. -- 1992. -- Vol. 4. -- P. 1106-1110.

35. What is Colaboratory? [Web resource] // Google Colab [website]. -- URL : https://colab.research.google.com/notebooks/intro.ipynb (request date: 07.05.2020)

36. Yin, Z., Shen Y. On the Dimensionality of Word Embedding [Text] // 32nd Conference on Neural Information Processing Systems. -- Montreal, Canada, 2018. -- 12 p.

37. Zhang, Y., Jin, R., Zhou Z. Understanding bag-of-words model: a statistical framework [Text] // International Journal of Machine Learning and Cybernetics. -- 2010. -- Vol. 1. -- P. 43-52.

ПРИЛОЖЕНИЕ

Бот для выгрузки всех публикаций из «ВКонтакте»

def main():

Авторизация:

vk_session = vk_api.VkApi('login', 'password')

vk_session.auth()

Инструмент для выгрузки всех постов со стены. Указывается идентификационный номер пользователя или сообщества, при этом ID сообщества помечается знаком дефиса:

tools = vk_api.VkTools(vk_session)

wall = tools.get_all('wall.get', 100, {'owner_id': -id})

Получение количества записей в данном сообществе или у данного пользователя,

и вывод массива с сохранением его в переменную:

print('Posts count:', wall['count'])

for elem in wall['items']:

print(elem, end='\n')

data = wall['items']

Загрузка модуля для работы с расширением json:

import json

Запись результатов работы в отдельный файл json:

with open('output.txt', 'w') as fw:

json.dump(data, fw, ensure_ascii=False)

return wall

if __name__ == '__main__':

Обработка текстовых данных

Загрузка модуля для токенизации текстов:

from keras.preprocessing.text import Tokenizer, text_to_word_sequence

Задаем максимальное количество слов, которое будет учтено при обучении с целью избежать анализа редких слов и опечаток:

maxWordsCount = 20000

Функция для разбиения текста на отрывки и превращения в числовую матрицу.

Параметры функции: num_words (количество слов, которое будет учтено при обучении), filters (символы, которые не будут учитываться при обучении), lower (приведение всего текста к нижнему регистру), split (тип разделителя слов), char_level (удалить однобуквенные слова - мы их не удаляли).

tokenizer = Tokenizer(num_words=maxWordsCount, filters='!"#$%&()*+,-./:;,<=>?@[\\]^_`{|}~\t\n0123456789', lower=True, split=' ', char_level=False)

Метод обрабатывает тексты тренировочной выборки, собирает словарь частотности словоупотреблений и присваивает каждому слову индекс (1 - самое частотное):

tokenizer.fit_on_texts(training_set)

Сохраним все индексы для слов в список:

items = list(tokenizer.word_index.items())

Преобразуем тексты обучающей и проверочной выборки и сохранить полученные последовательности индексов в переменные:

trainWordIndexes = tokenizer.texts_to_sequences(training_set)

testWordIndexes = tokenizer.texts_to_sequences(validation_set)

Формирование выборки

Функция для формирования обучающей выборки по списку с индексами слов.

Тексты разделяются на короткие вектора. Параметры: xLen (длина окна вектора), step (смещение).

def getSetFromIndexes(wordIndexes, xLen, step):

xSample = []

wordsLen = len(wordIndexes)

index = 0

while (index + xLen <= wordsLen):

xSample.append(wordIndexes[index:index+xLen])

index += step

return xSample

Каждый преобразованный текст выборки добавляем в список:

def createSetsMultiClasses(wordIndexes, xLen, step):

nClasses = len(wordIndexes) #количество классов выборки

classesXSamples = [] #количество окон в тексте, умноженное на длину окна

for wI in wordIndexes:

classesXSamples.append(getSetFromIndexes(wI, xLen, step))

xSamples = [] #суммарное количество окон во всех текстах, умноженное на длину окна

ySamples = [] #суммарное количество окон во всех текстах, умноженное на вектор нужной длины

Добавляем тексты всех классов в общий список:

for t in range (nClasses):

xT = classesXSamples[t]

for i in range(len(xT)):

xSamples.append(xT[i])

Текущий класс переводится в one-hot вектор:

from tensorflow.keras import utils

currY = utils.to_categorical(t, nClasses)

На каждое окно выборки добавляем соответствующий вектор класса:

for i in range(len(xT)):

ySamples.append(currY)

Переводим в массив NumPy:

import numpy as np

xSamples = np.array(xSamples)

ySamples = np.array(ySamples)

Возвращаем выборку и соответствующие вектора классов:

return (xSamples, ySamples)

Извлекаем выборки:

xTrain, yTrain = createSetsMultiClasses(trainWordIndexes, xLen, step)

xTest, yTest = createSetsMultiClasses(testWordIndexes, xLen, step)

Обучение моделей

Преобразуем тексты выборки в список для осуществления метода:

xTrain01 = tokenizer.sequences_to_matrix(xTrain.tolist())

xTest01 = tokenizer.sequences_to_matrix(xTest.tolist())

Параметры модели Bag-of-Words:

model01 = Sequential()

model01.add(BatchNormalization())

model01.add(Dense(200, input_dim=maxWordsCount, activation='relu'))

model01.add(Dropout(0.5))

model01.add(BatchNormalization())

model01.add(Dense(2, activation='softmax'))

Параметры модели Words Embeddings:

modelE = Sequential()

modelE.add(Embedding(maxWordsCount, 30, input_length=xLen)) #30-мерное пространство

modelE.add(SpatialDropout1D(0.25))

modelE.add(Flatten())

modelE.add(BatchNormalization())

modelE.add(Dense(200, activation='relu'))

modelE.add(Dropout(0.25))

modelE.add(BatchNormalization())

modelE.add(Dense(2, activation='softmax'))

Компиляция моделей:

model.compile(optimizer='adam',

loss='categorical_crossentropy',

metrics=['accuracy'])

Обучение моделей:

history = model.fit(xTrain,

yTrain,

epochs=20,

batch_size=200,

validation_data=(xTest, yTest))

callbacks=[checkpoint]) #функция для сохранения весов модели в отдельный файл

Функция для распознавания результатов и вывода результатов работы классификатора:

def recognizeMultiClass(model, xTest, modelName):

val = []

pred = []

totalSumRec = []

for i in range(nClasses):

currPrediction = model.predict(xTest[i])

pred.append(currPrediction)

currOut = np.argmax(currPrediction, axis=1)

evVal = []

sumRec = []

for j in range(nClasses):

sumRec.append(0)

for t in range(len(currOut)):

if (currOut[t] == j):

sumRec[j] += 1

evVal.append(sumRec[j] / len(currOut))

totalSumRec.append(sumRec[i])

val.append(evVal[i])

recognizedClass = np.argmax(evVal)

sumVal = 0

sumCount = 0

lenXtest = []

for i in range(nClasses):

sumCount += len(xTest[i])

sumVal += totalSumRec[i]

return sumVal/sumCount

xTest2Classes01, xTest2Classes = createTestMultiClasses(testWordIndexes, xLen, step)

Сохранение модели и весов

Сохраним модель нейросети в отдельный файл:

from keras.models import model_from_json

model_json = model.to_json()

with open("model.json", "w") as json_file:

json_file.write(model_json)

Сохраним веса нейросети в отдельный файл (производится в ходе обучения):

from keras.callbacks import ModelCheckpoint

weights_file = "weights.hdf5"

checkpoint = ModelCheckpoint(weights_file, monitor='acc', mode='max', save_best_only=False, verbose=1)

Загрузим модель и веса, скомпилируем модель:

jfile = open("model.json", "r")

loaded_json = jfile.read()

jfile.close()

loaded_model = model_from_json(loaded_json)

loaded_model.load_weights("weights.hdf5")

loaded_model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

Протестируем модель (функция для проверки любого сообщения):

text = input()

def getClass(text):

testData = []

testData.append(text)

listData = tokenizer.texts_to_sequences(testData)

tData = tokenizer.sequences_to_matrix(listData)

prediction = model01.predict(tData)

typePred = np.argmax(prediction)

wordsData = 0

for count in listData[0]:

wordsData += 1

typeClass = getClass(text)

Размещено на Allbest.ru

...

Подобные документы

  • Анализ особенностей морфологической и синтаксической структур новых лингвистических единиц, характеризующих интернет-грамматику речи интернет-сообщений на материале текстов, выбранных из немецких социальных сетей. Примеры лингвистических новообразований.

    курсовая работа [954,7 K], добавлен 31.10.2014

  • Основные понятия корпусной лингвистики. Общая характеристика Национального корпуса русского языка. Изучение лексических категорий многозначности и омонимии, синонимии и антонимии. Использование данных Корпуса при изучении синтаксиса и морфологии.

    дипломная работа [95,5 K], добавлен 07.11.2013

  • Коммуникативные стратегии как компонент речевого воздействия. Речевые стратегии, их классификация. Типология иллокутивных целей. Грамматические особенности речи человека, находящегося в экстремальной ситуации (на основе анализа американского кинотекста).

    курсовая работа [40,6 K], добавлен 27.01.2014

  • Речь как форма поведения человека, в которой обнаруживаются проявления его характера, его отношения с другими людьми, его жизненные позиции. Структура и характеристика речевых коммуникативных качеств. Речь в межличностном и социальном взаимодействии.

    реферат [30,5 K], добавлен 13.02.2008

  • Мышление и речь человека. Содержание и форма речи. Язык - система знаков, необходимых для человеческого общения, мышления и выражения. Жесты - вспомогательное средство общения. Речь в деятельности юриста. Разновидности и особенности юридической речи.

    курсовая работа [24,3 K], добавлен 15.12.2008

  • Классификация видов письменной речи - содержание (мышление), выражение (речь), исполнение (графика). Обзор основных видов письменных заданий: репродуктивный, индивидуальный творческий диктант. Письменная монологическая речь и ее социокультурный компонент.

    реферат [32,9 K], добавлен 28.05.2010

  • Понятие и классификация жаргонизмов, их разновидности, роль и место в современном языке. Особенности использования жаргонизмов в периодических изданиях и рекламных текстах, анализ их употребления в материалах журналистских и рекламных сообщений.

    курсовая работа [51,9 K], добавлен 08.05.2010

  • Изучение употребления устойчивых оборотов речи в русском языке. Классификация фразеологических единиц, характеризующих социальное положение человека по степени слитности. Структурно-семантический анализ отобранных из словаря фразеологических оборотов.

    курсовая работа [29,8 K], добавлен 22.04.2011

  • Речь как вид деятельности человека и как ее продукт осуществляется на основе использования средств языка (слов, их сочетаний, предложений, пр.) и эмоциального выражения. Функции и разновидности речи. Этикет речевого общения и этикетные формулы речи.

    реферат [26,4 K], добавлен 07.04.2008

  • Понятие лингвистики связного текста. Теория связывания, механизм связности как основной текстообразующий фактор. Факторы, влияющие на выбор анафорических средств, степень активации референта в памяти человека. Типологии анафоры и виды антецедентов.

    дипломная работа [93,0 K], добавлен 02.03.2011

  • Изучение эмоций с точки зрения зарубежного и отечественного опыта. Уровни эмоциональной интенсивности. Взаимоотношение эмотивности и экспрессивности в языке. Лексико-семантические особенности и связи английских слов – наименований отрицательных эмоций.

    дипломная работа [861,8 K], добавлен 22.08.2015

  • История изучения детской речи. Речь как проявление творческой деятельности человека. Понятие "отрицательного языкового материала". Этапы освоения языка детьми: невербальный период, этап голофраз и звукоподражательных слов, первые двухсловные высказывания.

    курсовая работа [39,6 K], добавлен 20.06.2013

  • Влияние социальных факторов на особенности общения современной молодежи. Анализ речевой культуры подростка в среде сверстников, в кругу родителей и в обществе посторонних взрослых людей. Влияние преподавателя на формирование речи у старшеклассников.

    реферат [17,0 K], добавлен 26.05.2015

  • Теоретические основы исследования языкового такта в аспекте межкультурной коммуникации. Соотношение понятий "языковой такт" и "политкорректность". Проявления языкового такта в публикациях в социальных сетях в русскоязычной и англоязычной лингвокультурах.

    дипломная работа [214,9 K], добавлен 29.05.2019

  • Различия между литературным и разговорным языками, их характерные черты и сферы употребления. Взаимосвязь литературного и разговорного языков в повседневной жизни человека. Современные тенденции русской разговорной речи, ее эмоциональная окраска.

    реферат [23,4 K], добавлен 18.06.2009

  • Изучение фразеологии – материала, наиболее ментально содержательного с точки зрения воспроизведения языковой картины, и который ярко отражает национальную культуру народа. Влияние на фразеосемантическое поле психического, физического состояния человека.

    статья [21,9 K], добавлен 14.04.2010

  • Рассмотрение понятия и признаков разговорного стиля русского языка. Ознакомление со статистикой пользования социальными сетями. Положительные черты общения в Интернете. Изучение положительных и отрицательных языковых особенностей виртуального общения.

    презентация [893,3 K], добавлен 24.04.2015

  • Выявление характера и особенности специального искажения слов русского языка в виртуальном пространстве сети Интернет. Причины использования интернет-сленга при общении в социальных сетях. Сравнительный анализ отношения к интернет-сленгу детей и взрослых.

    контрольная работа [914,8 K], добавлен 29.03.2016

  • Целенаправленное и неосознанное влияние общества на систему языка. Языковая политика. Роль социальных факторов в развитии системы языка. Классификация социолингвистических факторов. Влияние социальных факторов на фонетическую и морфологическую систему.

    курсовая работа [75,3 K], добавлен 23.03.2015

  • Характеристика способов словообразования в немецком языке. Изучение словообразовательных моделей современного немецкого языка. Анализ особенностей газетно-публицистического текста и компьютерной лексики. Словообразовательные модели частей немецкой речи.

    курсовая работа [58,3 K], добавлен 29.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.