DevGang
Авторизоваться

Введение в анализ настроений с помощью распознавания речи 

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

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

Начнем

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

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

Мы собираемся использовать Speech-to-Text API AssemblyAI. Это очень хорошо обученный API искусственного интеллекта. Это бесплатно. Вы получите уникальный ключ API после создания учетной записи. Мы будем использовать этот ключ API для использования услуг и функций.

Давайте начнем.

Шаг 1: Библиотеки

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

Все библиотеки, которые нам нужны, являются встроенными библиотеками Python. Таким образом, нам не нужно устанавливать какие-либо библиотеки.

Давайте продолжим, откроем новый блокнот Jupyter и импортируем библиотеки.

import sys
import time
import requests

Шаг 2: Аудиоданные

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

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

Я перемещу файл записи в ту же папку, что и мой блокнот Jupyter. А затем определю его в программе.

audio_data = "review_recording.m4a"

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

def read_audio_file(audio_data, chunk_size=5242880):
    with open(audio_data, 'rb') as _file:
        while True:
            data = _file.read(chunk_size)
            if not data:
                break
            yield data

Пришло время загрузить нашу аудиозапись в облако.

headers = {
    "authorization": "API key goes here"
 }
response = requests.post('https://api.assemblyai.com/v2/upload', headers=headers, data=read_audio_file(audio_data))
print(response.json())

Здорово! После запуска этого блока кода. Мы получим ответ от API. Ответное сообщение будет содержать URL-адрес загруженного файла.

Шаг 3: Транскрипция аудио с анализом тональности

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

Вот официальная документация, если вы хотите узнать больше.

Хорошо, давайте сделаем это.

Мы определим четыре переменные: одну строку, два словаря и один POST-запрос. Анализ настроений включается, когда мы добавляем назначенное значение True. Если False, запрос будет выполнять обычное распознавание речи.

speech_to_text_api = "https://api.assemblyai.com/v2/transcript"
data = {
  "audio_url": "The upload url address from the previous step",
  "sentiment_analysis": "TRUE"
}
headers = {
    "authorization": "API key goes here",
    "content-type": "application/json"
}
response = requests.post(speech_to_text_api, json=data, headers=headers)
print(response.json())

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

id — это идентификатор нашего запроса. Он понадобится нам для отслеживания процесса. И ключ state показывает статус нашего заказа.

Заключительный шаг: понимание результатов

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

request_url = "https://api.assemblyai.com/v2/transcript/o6z85sn6vc-acc5-4d64-9a41-9386674f7ff0"
headers = {
    "authorization": "API key goes here"
}
response = requests.get(request_url, headers=headers)
print(response.json())

Вот скриншот всего ответа:

Давайте продолжим и отфильтруем ключ анализа тональности из этого длинного словаря.

sentiment_analysis_report = response.json()['sentiment_analysis_results']
sentiment_analysis_report

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

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

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В подарок 100$ на счет при регистрации

Получить