Достаточно удобная нейросеть, основанная на архитектуре CNN + LSTM
Сделано на базе фреймворка Keras с бэкендом Tensorflow
Что такое Sentiment Analysis? Вики
В моем случае тональность текста будет ограничена лишь тремя возможными положениями:
- Негативный текст
- Нейтральный текст
- Позитивный текст
Чем выше оценка текста по шкале score ∈ [0, 1] и score ∈ ℝ
, тем негативнее текст
Примеры:
"Лучше помолчать, чем говорить без смысла."
-0.308
"Бесконечность - не предел!"
-0.414
"Что может быть неприятнее, чем этот ужасный комментарий, написанный не пойми каким уродом?"
-0.994
Перед началом установки, в setup.py
убедитесь, что вы ставите именно ту версию Tensorflow (CPU или GPU), которая вам нужна
USE_GPU = False # True -> если вам нужна GPU версия Tensorflow
А затем выполните установку
root@ar4ikov: /home/user/SentimentFilter# python setup.py install
import sentiment_filter as s
sentiment = s.SentimentFilter()
import sentiment_filter as s
sentiment = s.SentimentFilter()
text = """Привет, фильтрация текста от негатива - удобная штука!"""
sentiment.get_analysis(text)
# Response: {'result': <Sentiment.POSITIVE: 'positive'>, 'score': 0.005}
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"""
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
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}
- ПРРРР, для запуска стоит установить 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"
}
}
root@ar4ikov: /home/user/SentimentFilter/transport/vk# python vk.py
root@ar4ikov: /home/user/SentimentFilter/transport/SOME_FILE# python SOME_FILE.py
В самом файле нужные константы подписаны комментариями, не перепутаете.
Больше примеров работы (и с другими классами) вы найдете в examples
!