Используйте мой Блокнот Google Colab для интерактивного обучения!

Что такое сентиментальный анализ?

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

Применение аналитической методологии для определения мнения человека и его классификации по конкретным эмоциям (положительные, отрицательные, нейтральные, счастливые, грустные, злые, смиренные и т. д.). Итак, резюмируя, «Анализ настроений — это интерпретация и классификация эмоций».

Приложения:

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

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

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

Почему нейронная сеть?

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

В мире больших данных у всех есть проблемы с 5 В, когда мы практически имеем дело с данными. Одним из них является Скорость ДАННЫХ. означает «Скорость создания данных выше, чем наши возможности анализа данных с точки зрения оборудования, человеческих ресурсов, аналитических методологий и алгоритмических ограничений».

Чтобы расширить наши ограничения, мы используем нейронную сеть, которая может найти нашу сложную комбинацию текстовых данных с использованием модели RNN/LSTM. Даже если у нас есть данные с точки зрения распознавания лиц (в качестве первого обзора продукта) или видеосъемки, мы все равно можем найти лучший подход, используя CNN.

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

Начало:

Здесь я буду использовать данные обзора и этикетки в виде текстового файла (.txt). Вы можете загрузить набор данных и мою записную книжку Google Colab для интерактивного обучения. затем просто запустите следующий код:

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

На каждом этапе сначала я объясню «примененные фундаментальные принципы/гипотезы», затем соответствующие «коды с логикой кода» и «результаты выходных данных» для моделей модульного тестирования, а затем применим к основной модели. Все последовательности будут сохраняться до конца и разделены по шагам: X.x (где X = этап, x = подшаги)Кстати, я разделю это на следующие 3 этапа: [1] Извлечение признаков и I.P.-O.P. творчество. [2] Архитектура модели (NN). [3] Шумоподавление.

Этап_1: Извлечение признаков и создание IP/OP:

Особенности — это неотъемлемое свойство объекта, которое говорит нам, чем они отличаются от других. Например:

  1. "Я счастлив"
  2. "Мне грустно"
  • И «Счастливый», и «Грустный» — это два разных слова, которые передают нам настроение писателя. Таким образом, для любого текста их слова являются конечными представителями.
  • Это означает, что если мы отделим слова от текста и сгенерируем total_counts, это может создать один вектор слов в качестве входных данных.
  • В python функция «.split(““)” будет разделять наши слова так же, как они разделены в тексте пробелами.

Шаг: 1,0

Я использую счетчики для подсчета положительных, отрицательных и total_words в соответствующих метках. Это позволит разделить соответствующие слова, чтобы определить характер конкретного слова, представленного в отличительных метках. И, как вы видите ниже, мы получаем релевантные слова с их количеством. Его набор кортежей в виде (слово, количество)

Шаг: 1.1

Но, из вышеприведенного результата мы не должны найти содержательной информации, которая могла бы привести нас к какому-то выводу, слова «the», «and», «a», «of», «to» употребляются гораздо чаще, но не относятся к настроению автора, поэтому лучше найти «pos_neg_ratio», чем это, чтобы уменьшить перекрытие слов в каждом счетчике.

  • Это уменьшит вычислительную и временную сложность.
  • Положительное отношение к отрицательному для данного слова можно рассчитать с помощью positive_counts[word] / float(negative_counts[word]+1). Обратите внимание на +1 в знаменателе — гарантирует, что мы не делим на ноль, если слова встречаются только в положительных отзывах.
  • мы будем рассматривать только слова, которые в общей сложности встречаются более 100 раз, это один из видов гипотез, который помогает нам сократить слова о продукте, торговой марке или типе продуктов.

Интерпретация результата: Здесь наше отношение положительного к отрицательному означает, что если слово находится в положительной метке, то оно имеет значение соотношения ›1, а для отрицательных терминов значение стало ‹1 (близким к нулю). Общие слова около 1. Вы можете найти это в результате кода.

Шаг: 1.2

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

log(n)является одним из них, потому что log(2¹⁰⁰⁰⁰⁰⁰) ~= 20,00 (19,9315685693), поэтому для нас это будет лучшая полоса распределения. [нажмите здесь, чтобы получить отличные ответы].

Отлично! теперь наш диапазон составляет от (+2,80 до -3,32) и уменьшен с (16,55 до 0,02), а еще одним преимуществом является распределение данных. со ссылкой на ось Y, отрезанную осью X от нуля, мы получим преимущество для лучшего моделирования распределения, классификации и визуализации.

СОЗДАНИЕ ВХОДНЫХ/ВЫХОДНЫХ ДАННЫХ:

Для этого мы должны понимать, что является вводом и выводом с точки зрения Neural_Network?

Понятно, что наши слова являются вводными, поскольку мы определили их как функцию, способную определять настроение писателя, и наш вывод должен быть либо положительным, либо отрицательным отзывом. Это означает, что нам нужна функция активации softmax, чтобы решить вывод с точки зрения вероятности. Если сеть считает, что вероятность слова (>0,5) представляет положительную метку, а (‹0,5) — отрицательную метку. (Я подробно расскажу об этом на этапе сетевой архитектуры. Итак, давайте определимся с Input_layer (layer_0).

Шаг : 1.3 (генерация входных данных):

Здесь наши меры заключаются в создании входного слоя (layer_0) и его использовании для обновления слоя_1 (hidden_layer).

Интерпретация: сначала мы создаем один набор общих слов и генерируем индексацию для обновления информации в layer_0. Очевидно, что layer_0 должен быть и входная длина нашего set_size (1,74074).

Шаг: 1.4 (обновление слоя):

Сначала я использую layer_0 *= 0 для сброса слоя, а затем обновляю его с помощью цикла for. layer_0[0][word2Index[word]] +=1 подсчитывает каждое слово обзора и увеличивает его для каждого повторения слова. Итак, мы получаем реальный вес слова в каждой метке. Например, в конкретном обзоре «если клиенты используют слово «удовлетворенный» или «счастливый»» 3 раза, это увеличивает его вес в выводе и даст лучший результат.

Шаг : 1.4 (вывод):

Нейронная сеть использует математические модели и выдает результат в числовой форме. поэтому лучше преобразовать наши выходные ярлыки в 1 и 0 для «ПОЗИТИВНО» и «ОТРИЦАТЕЛЬНО».

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

Как я и просил ранее, эта тема довольно длинная, поэтому я пытаюсь разделить ее на три части, чтобы дать ясное понимание. В следующей части мы обсудим [Нажмите здесь] ›› Архитектура нейронной_сети и настройка параметров и ее влияние на производительность модели , я также рассматриваю такие явления, как недообучение и переоснащение в машинном обучении.

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

Девиз моей жизни: «Продолжай учиться, наслаждайся расширением возможностей».