Для обработки естественного языка Python требуется всего 5 строк кода

Python NLP

Это 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 для полного распознавания эмоций, следующие:

  1. модуль импорта
  2. модель нагрузки
  3. готовить предложения
  4. Определите эмоции

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

# 导入模块
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 .