Файл: Основы проектирования программ. Этапы создания программного обеспеченияКурсовая работа.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 30.03.2023

Просмотров: 316

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

По словам известного американского изобретателя и футуролога Рэя Курцвейла развитие технологий в последние два десятилетия имеет экспоненциальную скорость [1]. «We won’t experience 100 years of progress in the 21st century—it will be more like 20,000 years of progress (at today’s rate)». Ещё десять лет назад смартфон не существовал, а первый персональный компьютер появился только 40 лет назад. Однако, за такой короткий промежуток времени развития уже в конце второго десятилетия 21 века почти невозможно представить жизнь людей без смартфонов, ноутбуков и прочих «умных» устройств, так как они очень глубоко успели засесть в нашей учёбе, работе, развлечениях и личной жизни.

По данным на август 2018 года количество пользователей самых популярных социальных сетей таких, как Facebook, YouTube и Instagram достигло 2 230, 1 900 и 1000 миллионов соответственно [2], то есть фактически почти треть людей планеты постоянно общаются, покупают онлайн, смотрят видео, играют, комментируют и прочее. Благодаря этому одним из результатов таких показателей является то, что невидимая преграда, разделяющая производителя и потребителя, начала быстро исчезать. Теперь потребитель очень легко может выразить через отзывы и комментарии своё мнение по поводу тех, или иных товаров или информационного контента, откуда и появилась потребность обрабатывать их для определения отношений пользователей к тому или иному объекту. Но количество таких отзывов, особенно на крупных платформах, может достигать нескольких сотен или даже тысяч, а обработка всего этого «вручную» будет слишком энерго- и время-затратной операцией. Поэтому готовые программные решения, которые позволили бы справляться с подобными задачами, имеют высокую практическую значимость для крупных социальных сетей, производителей, которые продают свои товары онлайн, социологов, PR-специалистов, маркетологов, СМИ, чтобы отслеживать общественное мнение по поводу различных событий и т.д.

В последние годы начало бурно развиваться такое направление, как контент-анализ в компьютерной лингвистике, в частности, анализ тональности текста или сентимент-анализ. Он предназначен для автоматизированного выявления в текстах эмоционально окрашенной лексики и эмоциональной оценки авторов (мнений) по отношению к объектам, речь о которых идёт в тексте. Анализ тональности текста включает в себя такие основные задачи, как определение субъективности или объективности текста по отношению к субъекту и оценка полярности мнения (позитивное, негативное или нейтральное), которая сводится к задаче классификации [3].


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

Цели и задачи работы

Целью этой работы является разработка математического и программного обеспечения для классификации текстового контента на русском языке по типу эмоционального окраса на несколько категорий: позитивные, негативные, реклама/поздравления и неопределенные по отношению к конкретному объекту. Для достижения этой цели необходимо выполнить ряд задач:

  1. изучение степени проработанности данного класса задач и существующих методов решения;
  2. адаптация выбранного метода под решение данной задачи;
  3. его реализация в виде web-приложения.

ГЛАВА 1 ПОСТАНОВКА ПРОБЛЕМЫ ПРОЕКТИРОВАНИЯ ПРОГРАММЫ

Существующие подходы к классификации текстов

Существует два основных подхода к классификации текстов по их тональности: один основан на использовании заранее составленных словарей тональности (каждому слову поставлено в соответствие его значение тональности), второй – на методах машинного обучение (machine learning).

Метод с использованием специализированных словарей проводится в несколько этапов [4]:

  1. Делается лингвистический анализ текста, с помощью которого происходит лемматизация всех слов (приведение в начальную форму), определяются части речи, его падеж, число, род, роль каждой лексемы в предложении (подлежащее, сказуемое, обстоятельство и т.д.), его тип (физ. лицо, юр. лицо, имя собственное и т.д.).
  2. Каждому слову и словосочетанию ставятся в соответствие два значения: одно указывает на тональность, другое – на силу тональной оценки. Если же лексема не была найдена в словаре, то по умолчанию она становится нейтральной.
  3. Далее делается синтаксический анализ, при котором слова и словосочетания объединяются в тональные цепочки в виде предложений, выделяется субъект, предикат и объект. При этом определяются деепричастные и причастные обороты, подчинительные предложения и т.д.
  4. Определяется объект, в отношении которого применяется эмотивная лексика, и, в зависимости от его месторасположения в предложении, делается вывод об общей оценке тональности.

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

Машинное обучение является подразделом науки об искусственном интеллекте, исследующий построение алгоритмов, способных обучаться [5]. Основную задачу очень чётко можно сформулировать через термин, который был введен В. Н. Вапником: «восстановление зависимостей по эмпирическим данным». Другими словами, имеется множество объектов и их описаний (обучающая выборка) – требуется вывести общие зависимости и взаимосвязи, с помощью которых в дальнейшем можно исследовать данные, которые не были в составе обучающей выборки.

В машинном обучении следует выделить искусственные нейронные сети (ИНС) [6]. Они представляют собой нелинейные математические модели, имеющие структуру нейронных сетей биологического происхождения, которые в состоянии обучаться для решения определенного ряда задач таких как: классификация, кластеризация, прогнозирование, распознавание, визуализация и многих других.

Состоят они из искусственных нейронов, способных обрабатывать данные. В общем виде нейронная сеть представляет собой 3 связных слоя: входной, скрытый и выходной слои. Входной слой принимает данные и передаёт их в скрытый слой, где происходит их обработка, в свою очередь обработанные данные поступают на выход.

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

Целью обучения нейронных сетей является поиск оптимальных значений весов, при которых значение ошибки результата работы нейронной сети (классификация, прогнозирование и т.д.) будет минимально. Обучение обычно осуществляется в несколько эпох, при этом одна эпоха значит, что весь датасет прошёл через нейронную сеть в прямом и обратном направлении один раз. Широко используемым методом при обучении является метод обратного распространения ошибки. Коротко говоря, прямое распространение – это вложенные друг в друга функций активации, которые соответствуют разным слоям, а обратное – это производная этой сложной функции по правилу цепочки. На примере это выглядит таким образом:


f(x) = A(B(C(x))) (1)

где A, B, C – функции активации;

f’(x) = f’(A) A’(B) B’(C) C’(x) (2)

где f’ – искомая производная.

Существует два основных типа машинного обучения:

  • «с учителем» (supervised) – обучающая выборка представляет собой пару «объект, класс». Требуется найти функцию, которая описывает зависимость класса от объекта, и построить алгоритм, который на вход будет принимать описание объекта и по итогу своей работы выдавать ответ.
  • «без учителя» (unsupervised) – на вход подаются объекты, между которыми необходимо искать зависимости. Ответы не задаются.

Второй подход для анализа текстов, не говоря уже об их классификации по тональности, показывает низкие результаты [8]. Наиболее популярным и эффективным подходом для нашей задачи является машинное обучение с учителем, что было уже неоднократно доказано на соревнованиях SemEval (Semantic Evaluation) [9].

    1. Постановка задачи классификации текстов при анализе их тональности и её проблематика

Постановка задачи

Формализуем понятие задачи классификации. Пусть существуют множество Х – заданные объекты, конечное множество Y – номера классов и неизвестная функция f: X Y. Значения этого отображения известны только на конечном множестве объектов из Х: Хm = {(x1,y1),(x2,y2),…,(xm,ym)}, которое называется обучающей выборкой. Требуется найти такой алгоритм f*, что любому объекту из Х будет ставиться в соответствие значение из Y (машинное обучение с учителем). Далее оценивается работа найденного классификатора на тестовой выборке – это X \ Xm.

Существуют различные типы задач классификации, разнообразие которых зависит от вида входных данных и типа классов. На вход классификатору могут подаваться матрица расстояний между объектами (каждый объект задаётся набором расстояний до остальных объектов выборки), признаковое поле (заданный набор характеристик объекта), изображение или видео, временной ряд, представляющий собой последовательность измерений во времени. Также существуют и более сложные случаи, когда входными данными могут быть текст, графы, запрос к базе данных. Однако, в таких случаях обычно делается предобработка, сводящая к первому или второму случаю. По типу выходных данных можно выделить бинарную классификацию, мульти-классовую (более 2-ух классов), пересекающиеся классы (объект может принадлежать одновременно к нескольким категориям), нечеткие классы (определяется степень принадлежности объектов к каждому из классов в виде, к примеру, действительного числа от 0 до 1) [10].


Конкретно наша задача будет представлять собою разработку web-сервиса, в частности, мульти-классового классификатора, где входными данными будут посты из социальной сети Twitter, а выходными – одна из категорий для каждого поста: позитивная, негативная, реклама/поздравление или неопределенная. При этом итоговый результат будет выводиться на экран пользователя в виде графика.

Проблематика задачи

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

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

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

Оценка качества работы классификатора

Как говорилось выше, оценивается качество работы классификатора на тестовой выборке. В машинном обучении наиболее популярными абсолютными показателями качества работы алгоритмов являются метрики: точность (precision), полнота (recall) и F-мера.

Но прежде чем перейти к формулировкам данных метрик и к тому, как они вычисляются, необходимо дать понятие матрицы ошибок (табл. 1) [11]. Она является очень полезным инструментом для быстрого вычисления точности и полноты. На ней изображены 4 результата работы модели классификатора: истинно положительные – количество объектов, правильно присвоенных положительному классу (True Positive), ложно положительные - количество объектов, неверно присвоенных положительному классу (False Positive), ложно отрицательные - количество объектов, неверно присвоенных отрицательному классу (False Negative), истинно отрицательные - количество объектов, правильно присвоенных отрицательному классу (True Negative).