Это 18-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления
Введение
Искусственный интеллект — популярное применение языка Python, а обработка естественного языка — основное направление искусственного интеллекта. Обработка естественного языка (NLP) — это метод изучения общения между людьми и компьютерами с использованием естественного языка. Все мы знаем, что компьютеры по сути знают только 0 и 1, но с помощью языков программирования мы можем использовать языки программирования для общения с компьютерами. На самом деле это общение между программистами и компьютерами, а в повседневной жизни мы используем естественный язык, язык эмоций. Так как же заставить компьютер понимать этот эмоциональный язык? Это то, о чем идет речь в исследованиях по обработке естественного языка.
Распознавание эмоций языка — это операция обработки естественного языка.Если мы хотим реализовать распознавание эмоций с нуля, это относительно громоздко. Во-первых, нам нужно подготовить достаточно данных.Чтобы компьютер лучше понял, нам также нужно предварительно обработать данные, а затем нам нужны обучающие данные.С обучающими данными мы можем начать распознавание эмоций. Точность идентификации зависит от корреляции и количества данных, Чем выше корреляция данных и больше количество данных, тем выше точность идентификации.
Однако мы можем быстро реализовать распознавание эмоций с помощью paddlehub, давайте сначала посмотрим, как его установить.
2. Установите лопастную втулку.
paddlehub — это библиотека моделей в Baidu PaddlePaddle, с помощью paddlepaddle можно быстро реализовать множество операций, в том числе распознавание эмоций в тексте, о котором мы сегодня поговорим, а код очень простой. Для начала нам нужно установить paddlepaddle, заходим на официальный сайт https://www.paddlepaddle.org.cn/install/quick , после входа на официальный сайт можно увидеть следующий интерфейс:
Мы можем выбрать метод установки в соответствии с нашей версией Python, компьютерной системой и т. д. Информацию о поддерживаемой версии paddlepaddle можно посмотреть на официальном сайте, поэтому здесь я не буду вдаваться в подробности. Я использую Python3.7, который устанавливается непосредственно с помощью pip, и мы выполняем следующие операторы в консоли.
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
Затем проверьте в консоли, успешно ли прошла установка. Введите первыйPython
, затем выполнитеimport paddle.fluid
, а затем выполнитьpaddle.fluid.install_check.run_check()
следующее:
C:\Users\zaxwz>python
Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import paddle.fluid
>>> paddle.fluid.install_check.run_check()
Если это показываетYour Paddle is installed successfully! Let's start deep Learning with Paddle now
Это означает, что установка прошла успешно. Кроме того, нам также необходимо установить paddlehub, который также устанавливается с помощью pip, Оператор выполнения выглядит следующим образом:
pip install -i https://mirror.baidu.com/pypi/simple paddlehub
После успешной установки paddlepaddle и paddlehub мы можем начать писать код.
3. Распознавание эмоций
(1) Распознавание эмоций
Шаги, чтобы использовать paddlehub для полного распознавания эмоций, следующие:
- модуль импорта
- модель нагрузки
- готовить предложения
- Определите эмоции
Для выполнения вышеперечисленных шагов требуется всего четыре строки кода. Кроме того, нам нужно вывести результат распознавания. Всего строк кода пять. Давайте посмотрим на эти пять строк волшебного кода:
# 导入模块
import paddlehub as hub
# 加载模型
senta = hub.Module(name='senta_lstm')
# 准备句子
sentence = ['你真美']
# 情绪识别
result = senta.sentiment_classify(data={"text":sentence})
# 输出识别结果
print(result)
Результаты идентификации следующие:
[{'text': '你真美', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9602, 'negative_probs': 0.0398}]
Мы видим, что подготовленное предложение является типом списка, распознанный результат также является типом списка, а элемент списка в результате является словарем. В этот список словарей включен результат нашей идентификации. Давайте проанализируем этот словарь.
(2) Анализ результатов
Полученный словарь содержит 4 поля, которые мы показываем в виде таблицы:
Имя поля | Значение поля | объяснять |
---|---|---|
text | распознанный исходный текст | распознанный исходный текст |
sentiment_label | Ярлыки категорий | 1 положительный, 0 отрицательный |
sentiment_key | Результат классификации | положительный положительный, отрицательный отрицательный |
positive_probs | процент положительных результатов | Возможность положительных эмоций |
negative_probs | Отрицательная ставка | Возможность отрицательных эмоций |
Приведенная выше таблица отредактирована мной, извините за неуместные слова. Мы можем проанализировать результаты нашей вышеуказанной процедуры в сравнении с приведенной выше таблицей. Подразумевается, что предложение «Ты прекрасна» содержит положительные эмоции. Давайте рассмотрим еще несколько примеров:
import paddlehub as hub
senta = hub.Module(name='senta_lstm')
sentence = [
'你真美',
'你真丑',
'我好难过',
'我不开心',
'这个游戏好好玩',
'什么垃圾游戏',
]
results = senta.sentiment_classify(data={"text":sentence})
for result in results:
print(result)
Результаты идентификации следующие:
{'text': '你真美', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9602, 'negative_probs': 0.0398}
{'text': '你真丑', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.0033, 'negative_probs': 0.9967}
{'text': '我好难过', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.5324, 'negative_probs': 0.4676}
{'text': '我不开心', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.1936, 'negative_probs': 0.8064}
{'text': '这个游戏好好玩', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9933, 'negative_probs': 0.0067}
{'text': '什么垃圾游戏', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.0108, 'negative_probs': 0.9892}
Выше 6 предложений, большинство из них успешно идентифицируют эмоцию, но我好难过
Результат идентификации положительный, что явно неверно. В целом, распознавание простых предложений является относительно точным. Кроме того, если вас не устраивает точность распознавания, мы также можем обучить собственный набор данных.Подробные операции можно найти по адресу проекта. https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/sentiment_classification .