Skip to content

Быстрая и удобная библиотека для оценки тональности текста с использованием нейросети

Notifications You must be signed in to change notification settings

Ar4ikov/SentimentFilter

Repository files navigation

Sentiment Filter

Достаточно удобная нейросеть, основанная на архитектуре CNN + LSTM

Сделано на базе фреймворка Keras с бэкендом Tensorflow

Что такое Sentiment Analysis? Вики
В моем случае тональность текста будет ограничена лишь тремя возможными положениями:

  • Негативный текст
  • Нейтральный текст
  • Позитивный текст

Чем выше оценка текста по шкале score ∈ [0, 1] и score ∈ ℝ, тем негативнее текст
Примеры:

  • "Лучше помолчать, чем говорить без смысла." - 0.308
  • "Бесконечность - не предел!" - 0.414
  • "Что может быть неприятнее, чем этот ужасный комментарий, написанный не пойми каким уродом?" - 0.994

Работа с библиотекой.

1. Установка.

Перед началом установки, в setup.py убедитесь, что вы ставите именно ту версию Tensorflow (CPU или GPU), которая вам нужна

USE_GPU = False  # True ->  если вам нужна GPU версия Tensorflow

А затем выполните установку

root@ar4ikov: /home/user/SentimentFilter# python setup.py install

2. Импортирование.

import sentiment_filter as s

sentiment = s.SentimentFilter()

3. Вызов основного функционала.

import sentiment_filter as s

sentiment = s.SentimentFilter()

text = """Привет, фильтрация текста от негатива - удобная штука!"""

sentiment.get_analysis(text)
# Response: {'result': <Sentiment.POSITIVE: 'positive'>, 'score': 0.005}

3.1. Проверка результата через Enum.

import sentiment_filter as s

sentiment = s.SentimentFilter()

text = """Не согласен - критикуй. Критикуешь - предлагай."""
response = sentiment.get_analysis(text)
# Response: {'result': <Sentiment.POSITIVE: 'positive'>, 'score': 0.274}

if sentiment.Sentiment(response["result"]) == sentiment.Sentiment.POSITIVE:
    """Make some here"""

elif sentiment.Sentiment(response["result"]) == sentiment.Sentiment.NEGATIVE:
    """Make some here"""

else:  # sentiment.Sentiment.NEUTRAL
    """Make some here too"""

3.2. Булевы методы.

import sentiment_filter as s

sentiment = s.SentimentFilter()

text = """Не согласен - критикуй. Критикуешь - предлагай."""
sentiment.is_negative(text)  # Стандартное значение негативности: score >= 0.67
# Response: False

sentiment.is_negative(text)  # Стандартное значение нейтральности: 0.45 <= score <= 0.67
# Response: False

sentiment.is_positive(text)  # Стандартное значение позитивности: score <= 0.45
# Response: True

3.2.1. Изменение score характеристики текста

import sentiment_filter as s

sentiment = s.SentimentFilter()

text = """Не согласен - критикуй. Критикуешь - предлагай."""
sentiment.is_negative(text, score=0.26)
# Response: True

sentiment.get_analysis(text, scores=[0.1, 0.26])
# Response: {'result': <Sentiment.NEGATIVE: 'negative'>, 'score': 0.274}

4. Сервер на flask для работы веб-сервисов.

- ПРРРР, для запуска стоит установить flask

root@ar4ikov:~# pip install flask

Далее, в самом начале файла request_server.py вы найдете 3 константы

# ... some code ...

DEBUG = False
HOST = "localhost"
PORT = 80

# ... some code ...

Измените их под себя (DEBUG лично я бы советовал не трогать).

Дальше - запуск!

root@ar4ikov: /home/user/SentimentFilter# python request_server.py

Стандартный запрос на

POST http://localhost:80/get_analysis?text=Привет

Даст ответ

{
  "status":true,
  "response":
    {
      "requested_text": "Привет",
      "score": 0.301,
      "type": "positive"
    }
}

5. Сохранение результатов работы нейросети из социальных сетей

root@ar4ikov: /home/user/SentimentFilter/transport/vk# python vk.py
root@ar4ikov: /home/user/SentimentFilter/transport/SOME_FILE# python SOME_FILE.py

В самом файле нужные константы подписаны комментариями, не перепутаете.

Больше примеров работы (и с другими классами) вы найдете в examples!

About

Быстрая и удобная библиотека для оценки тональности текста с использованием нейросети

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages