Найти в Дзене

Определение тональности отзывов о банках на Python и Tensorflow

Как бабушка учила)))
Как бабушка учила)))

Всероссийская олимпиада школьников по ИИ
Всероссийская олимпиада школьников по ИИ

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

Зачем нужна такая программа:
1. Автоматизация: Программа позволяет обрабатывать большие объемы данных, что значительно упрощает и ускоряет процесс их анализа. Она может обработать сотни и тысячи отзывов за короткое время, что было бы невозможно выполнить вручную.

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

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

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

5. Конкурентный анализ: Программа позволяет провести сравнительный анализ между различными банками на основе их отзывов. Это может помочь клиентам выбрать наиболее надежный и удовлетворительный банк для себя, а также банкам самим - узнать о преимуществах и недостатках своих конкурентов.

Итак, перейдем к делу...

Нам даны файлы с размеченными данными - файлы с текстом отзывов и указателем их тона (positive or negative).

Файл с тренировочными данными
Файл с тренировочными данными

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

Файл с отзывами тональность которых надо определить
Файл с отзывами тональность которых надо определить

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

-5

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

-6

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

-7

Теперь наши отзывы имеют ограниченную длину.

Каждый отзыв имеет метку positive/negative, эта метка не численная и нам надо это исправить. Пройдем в цикле по каждому элементу массива с метками и сделаем замены - positive = 1, negative = 0.

-8

Теперь мы можем приступать к созданию архитектуры нейронной сети.

Создадим нейронную сеть из четырех слоев:

1 Слой (Embedding) - Слой embedding (встраивания) в глубоком обучении относится к слою нейронной сети, который используется для преобразования категориальных или дискретных данных в непрерывные векторные представления (эмбеддинги). Этот слой позволяет модели обрабатывать текстовую информацию или другие нечисловые данные.

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

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

*В нашем случае принимает массив из 100 слов

2 Слой (GlobalAveragePooling1D) - слой для преобразования вошедшего в него многомерного массива в одномерный массив. Это нужно, чтобы нейросеть работала с одномерными данными, так как работа с ними проще.

3 Слой (Dense - плотный слой) является одним из основных слоев в нейронных сетях глубокого обучения. Он представляет собой полносвязный слой, где каждый нейрон в данном слое связан со всеми нейронами предыдущего слоя.

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

*В нашем случае имеет 64 нейрона

4 Слой(Dense) - выходной слой который возвращает нам предсказание модели в виде одного числа.

-9

Теперь можем компилировать модель.

Необходимо задать модели:

1. Функция потерь - 'binary_crossentropy' (бинарная кросс-энтропия) является одной из основных функций потерь, которая часто используется в задачах бинарной классификации в нейронных сетях глубокого обучения.

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

Формула для вычисления бинарной кросс-энтропии для одного примера выглядит следующим образом:
-loss = - (y * log(y_pred) + (1 - y) * log(1 - y_pred))

где y - истинная метка примера (0 или 1), y_pred - предсказанная вероятность метки примера (число между 0 и 1).

Функция потерь 'binary_crossentropy' старается минимизировать разницу между предсказанными значениями и истинными метками, меняя веса и параметры модели. Чем меньше значение функции потерь, тем лучше модель справляется с задачей бинарной классификации.

2. Оптимизатор - Adam (Adaptive Moment Estimation) - это один из алгоритмов оптимизации, который часто используется в глубоком обучении для обновления весов и параметров модели. Он сочетает в себе методы градиентного спуска и адаптивный алгоритм оптимизации момента.

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

3. Метрика - accuracy используется для оценки точности модели машинного обучения. Она определяется как отношение числа правильно классифицированных образцов к общему числу образцов в наборе данных.

Формула для расчета accuracy:

accuracy = (количество правильно классифицированных образцов) / (общее количество образцов)

Например, если модель правильно классифицирует 90 образцов из 100, то accuracy будет равна 0.9 или 90%.

-10

Можем тренировать модель и делать предсказания на тестовых данных

-11

Передали в тренировку массив с токенезироваными отзывами и метками

Задали 10 эпох обучения - модель 10 раз пройдет по тренировочным данным, предскажет ответы и будет научена на правильном ответе.

Теперь модель обучена и способна давать ответы на тестовые данные.

Наука
7 млн интересуются