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

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

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

Модуль Tkinter и vaderSentiment

Tkinter позволяет создавать настольные приложения. Он предлагает множество виджетов, таких как кнопки, метки и текстовые поля, которые упрощают разработку приложений. Вы можете использовать Tkinter для создать приложение-словарь на Python или к создайте собственное новостное приложение, которое обновляет истории через API.

instagram viewer

Чтобы установить Tkinter, откройте терминал и выполните:

пип установить ткинтер

VADER (Valence Aware Dictionary and sEntiment Reasoner) — это инструмент анализа настроений на основе лексики и правил. Он предварительно построен и широко используется в Обработка естественного языка. Алгоритм имеет набор предопределенных слов, которые представляют различные настроения. На основе слов, найденных в предложении, этот алгоритм дает оценку полярности. Используя эту оценку, вы можете определить, является ли предложение положительным, отрицательным или нейтральным.

Чтобы установить пакет vaderSentiment в Python, выполните следующую команду терминала:

pip install vaderSentiment

Как определить чувства с помощью Python

Вы можете найти исходный код этого примера программы в его Репозиторий GitHub.

Начните с импорта необходимых модулей VADER и tkinter:

от vaderSentiment.vaderSentiment Импортировать SentimentIntensityAnalyzer
от ткинтер Импортировать *

Затем определите функцию, очистить все(). Его цель — очистить поля ввода, что вы можете сделать с помощью удалить() метод из начального индекса 0 к конечному индексу, КОНЕЦ.

дефочистить все():
отрицательное поле.удалить(0, КОНЕЦ)
нейтральное поле.удалить(0, КОНЕЦ)
положительное поле.удалить(0, КОНЕЦ)
общее поле.удалить(0, КОНЕЦ)
textArea.delete(1.0, КОНЕЦ)

Определите функцию, обнаружить_чувство(). Используйте метод get, чтобы получить слово, введенное в текстовая область виджет и создать объект SentimentIntensityAnalyzer сорт. Использовать polarity_scores к полученному тексту и примените алгоритм анализа тональности VADER.

дефобнаружить_сентимент():
предложение = textArea.get("1.0", "конец")
sentient_obj = SentimentIntensityAnalyzer()
сентимент_дикт = сентимент_объект.полярность_оценки (предложение)

Извлеките отрицательную оценку тональности ('нег') и преобразовать его в проценты. Вставьте полученное значение в отрицательное поле начиная с позиции 10. Повторите тот же процесс для нейтральной оценки тональности ('ней') и положительная оценка тональности ('поз').

 строка = строка (sentiment_dict['нег'] * 100)
отрицательное поле. вставка (10, нить)

строка = строка (sentiment_dict['ней'] * 100)
нейтральное поле. вставка (10, нить)

строка = строка (sentiment_dict['поз'] * 100)
положительное поле. вставка (10, нить)

Извлеките значение составного ключа, содержащего общую тональность предложения. Если значение больше или равно 0,05, предложение положительное. Если значение меньше или равно -0,05, предложение отрицательное. Для значений от -0,05 до 0,05 это нейтральное утверждение.

если сентимент_дикт['сложный'] >= 0.05:
строка = "Позитив"
Элиф сентимент_дикт['сложный'] <= - 0.05:
строка = «Отрицательный»
еще:
строка = «Нейтральный»

Вставьте результат в в целомПоле с 10-й позиции:

 общее поле. вставка (10, нить)

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

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

если __имя__ == "__основной__":
графический интерфейс = Тк()
gui.config (фон ="# A020f0")
графический интерфейс.название(«Анализатор настроений ВЕЙДЕР»)
графический интерфейс.геометрия("400x700")
enterText = Метка (графический интерфейс, текст =«Введите предложение:», шрифт ="ариал 15 полужирный",бг="# A020f0")
отрицательный = Метка (графический интерфейс, текст ="Отрицательный процент:", шрифт ="ариал 15",бг="# A020f0")
нейтральный = Метка (графический интерфейс, текст =«Нейтральный процент:», шрифт ="ариал 15",бг="# A020f0")
положительный = Метка (графический интерфейс, текст =«Положительный процент:», шрифт ="ариал 15",бг="# A020f0")
в целом = Метка (графический интерфейс, текст =«Общее предложение:», шрифт ="ариал 15",бг="# A020f0")
textArea = Текст (графический интерфейс, высота =5, ширина =25, шрифт ="ариал 15", бг="#cf9fff")
проверить = Кнопка (графический интерфейс, текст ="Проверить настроение", бг="# e7305b", шрифт=("ариал", 12, "смелый"), command=detect_sentiment)
ясно = Кнопка (графический интерфейс, текст ="Прозрачный", бг="# e7305b", шрифт=("ариал", 12, "смелый"), команда = очистить все)
Выход = Кнопка (графический интерфейс, текст ="Выход", бг="# e7305b", шрифт=("ариал", 12, "смелый"), команда=выход)

Определите четыре поля ввода для различных настроений и установите их родительское окно и стили шрифта.

 отрицательное поле = запись (графический интерфейс, шрифт ="ариал 15")
нейтральныйПоле = Запись (графический интерфейс, шрифт ="ариал 15")
PositiveField = Entry (gui, font="ариал 15")
totalField = Entry (gui, font="ариал 15")

Используйте сетку, состоящую из 13 строк и трех столбцов для общего макета. Разместите различные элементы, такие как метки, поля ввода текста и кнопки, в различные строки и столбцы, как показано на рисунке. Добавьте необходимые отступы везде, где это необходимо. Установить липкий возможность "В" чтобы выровнять тексты в своей ячейке по левому краю.

 enterText.grid (строка =0, столбец =2, пэди =15)
textArea.grid (строка =1, столбец =2, padx=60, пэди =10, липкий=W)
check.grid (строка =2, столбец =2, пэди =10)
отрицательная.сетка (строка=3, столбец =2, пэди =10)
нейтраль.сетка (строка=5, столбец =2, пэди =10)
положительный.сетка (строка=7, столбец =2, пэди =10)
total.grid (строка =9, столбец =2, пэди =5)
отрицательныйField.grid (строка =4, столбец =2)
нейтральныйField.grid (строка =6, столбец =2)
PositiveField.grid (строка =8, столбец =2)
totalField.grid (строка =10, столбец =2, пэди =10)
clear.grid (строка =11, столбец =2, пэди =10)
Выход.сетка (строка=12, столбец =2, пэди =10)

основной цикл () Функция сообщает Python запустить цикл событий Tkinter и прослушивать события, пока вы не закроете окно.

 графический интерфейс.mainloop()

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

Результат обнаружения настроений с использованием Python

При запуске этой программы появляется окно VADER Sentiment Analyzer. Когда мы протестировали программу на положительном предложении, она обнаружила его с точностью 79%. Попробовав нейтральное утверждение и отрицательное, программа смогла определить с точностью 100% и 64,3% соответственно.

Альтернативы анализу настроений с использованием Python

Вы можете использовать Textblob для анализа настроений, речевых тегов и классификации текста. Он имеет согласованный API и встроенный классификатор полярности настроений. NLTK — это обширная библиотека НЛП, которая содержит широкий спектр инструментов для анализа текста, но имеет крутую кривую обучения для начинающих.

Одним из самых популярных инструментов является IBM Watson NLU. Он основан на облаке, поддерживает несколько языков и имеет такие функции, как распознавание сущностей и извлечение ключей. С введением GPT вы можете использовать API OpenAI и интегрировать его в свои приложения, чтобы получать точную и надежную информацию о настроениях клиентов в режиме реального времени.