{"id":15962521,"url":"https://github.com/ar4ikov/sentimentfilter","last_synced_at":"2025-07-27T01:04:56.275Z","repository":{"id":105065385,"uuid":"238078112","full_name":"Ar4ikov/SentimentFilter","owner":"Ar4ikov","description":"Быстрая и удобная библиотека для оценки тональности текста с использованием нейросети","archived":false,"fork":false,"pushed_at":"2024-11-28T08:32:18.000Z","size":14026,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-05T08:51:10.189Z","etag":null,"topics":["cnn-keras","cnn-text-classification","filter","keras","lstm","open-source","sentiment","sentiment-analysis","tensorflow"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ar4ikov.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-03T22:51:39.000Z","updated_at":"2024-11-28T08:32:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"d7f49938-9e3c-4706-98e4-ff976f37f64f","html_url":"https://github.com/Ar4ikov/SentimentFilter","commit_stats":{"total_commits":20,"total_committers":1,"mean_commits":20.0,"dds":0.0,"last_synced_commit":"f77166f29fa3a0f0a07210c8485f2a0e80f3b60f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Ar4ikov/SentimentFilter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ar4ikov%2FSentimentFilter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ar4ikov%2FSentimentFilter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ar4ikov%2FSentimentFilter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ar4ikov%2FSentimentFilter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ar4ikov","download_url":"https://codeload.github.com/Ar4ikov/SentimentFilter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ar4ikov%2FSentimentFilter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267278631,"owners_count":24063252,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cnn-keras","cnn-text-classification","filter","keras","lstm","open-source","sentiment","sentiment-analysis","tensorflow"],"created_at":"2024-10-07T16:04:11.883Z","updated_at":"2025-07-27T01:04:56.258Z","avatar_url":"https://github.com/Ar4ikov.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Sentiment Filter\n---\n\nДостаточно удобная нейросеть, основанная на архитектуре CNN + LSTM\n![](images/network.png)\n\nСделано на базе фреймворка **[Keras](https://keras.io)** с бэкендом **[Tensorflow](https://tensorflow.org)**\n\nЧто такое Sentiment Analysis? [Вики](https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%82%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0)\u003cbr\u003e\nВ моем случае тональность текста будет ограничена лишь тремя возможными положениями:\n- Негативный текст\n- Нейтральный текст\n- Позитивный текст\n\nЧем выше оценка текста по шкале `score ∈ [0, 1] и score ∈ ℝ`, тем негативнее текст \u003cbr\u003e\nПримеры:\n- `\"Лучше помолчать, чем  говорить без смысла.\"` - `0.308`\n- `\"Бесконечность - не предел!\"` - `0.414`\n- `\"Что может быть неприятнее, чем этот ужасный комментарий, написанный не пойми каким уродом?\"` - `0.994`\n\n## Работа с библиотекой. \n\n### 1. Установка.\nПеред началом установки, в `setup.py` убедитесь, что вы ставите именно ту версию Tensorflow (CPU или GPU), которая вам нужна\n```python\nUSE_GPU = False  # True -\u003e  если вам нужна GPU версия Tensorflow\n```\n\nА затем выполните установку\n```bash\nroot@ar4ikov: /home/user/SentimentFilter# python setup.py install\n```\n\n### 2. Импортирование.\n```python\nimport sentiment_filter as s\n\nsentiment = s.SentimentFilter()\n```\n\n### 3. Вызов основного функционала.\n```python\nimport sentiment_filter as s\n\nsentiment = s.SentimentFilter()\n\ntext = \"\"\"Привет, фильтрация текста от негатива - удобная штука!\"\"\"\n\nsentiment.get_analysis(text)\n# Response: {'result': \u003cSentiment.POSITIVE: 'positive'\u003e, 'score': 0.005}\n```\n\n### 3.1. Проверка результата через Enum.\n```python\nimport sentiment_filter as s\n\nsentiment = s.SentimentFilter()\n\ntext = \"\"\"Не согласен - критикуй. Критикуешь - предлагай.\"\"\"\nresponse = sentiment.get_analysis(text)\n# Response: {'result': \u003cSentiment.POSITIVE: 'positive'\u003e, 'score': 0.274}\n\nif sentiment.Sentiment(response[\"result\"]) == sentiment.Sentiment.POSITIVE:\n    \"\"\"Make some here\"\"\"\n\nelif sentiment.Sentiment(response[\"result\"]) == sentiment.Sentiment.NEGATIVE:\n    \"\"\"Make some here\"\"\"\n\nelse:  # sentiment.Sentiment.NEUTRAL\n    \"\"\"Make some here too\"\"\"\n```\n\n### 3.2. Булевы методы.\n```python\nimport sentiment_filter as s\n\nsentiment = s.SentimentFilter()\n\ntext = \"\"\"Не согласен - критикуй. Критикуешь - предлагай.\"\"\"\nsentiment.is_negative(text)  # Стандартное значение негативности: score \u003e= 0.67\n# Response: False\n\nsentiment.is_negative(text)  # Стандартное значение нейтральности: 0.45 \u003c= score \u003c= 0.67\n# Response: False\n\nsentiment.is_positive(text)  # Стандартное значение позитивности: score \u003c= 0.45\n# Response: True\n```\n\n### 3.2.1. Изменение `score` характеристики текста\n```python\nimport sentiment_filter as s\n\nsentiment = s.SentimentFilter()\n\ntext = \"\"\"Не согласен - критикуй. Критикуешь - предлагай.\"\"\"\nsentiment.is_negative(text, score=0.26)\n# Response: True\n\nsentiment.get_analysis(text, scores=[0.1, 0.26])\n# Response: {'result': \u003cSentiment.NEGATIVE: 'negative'\u003e, 'score': 0.274}\n```\n\n### 4. Сервер на flask для работы веб-сервисов.\n**- ПРРРР, для запуска стоит установить `flask`**\u003cbr\u003e\n```bash\nroot@ar4ikov:~# pip install flask\n```\n\nДалее, в самом начале файла `request_server.py` вы найдете 3 константы\n```python\n# ... some code ...\n\nDEBUG = False\nHOST = \"localhost\"\nPORT = 80\n\n# ... some code ...\n```\n\nИзмените их под себя (DEBUG лично я бы советовал не трогать). \n\nДальше - запуск!\n```bash\nroot@ar4ikov: /home/user/SentimentFilter# python request_server.py\n```\n\nСтандартный запрос на\n```http request\nPOST http://localhost:80/get_analysis?text=Привет\n```\n\nДаст ответ\n```json\n{\n  \"status\":true,\n  \"response\":\n    {\n      \"requested_text\": \"Привет\",\n      \"score\": 0.301,\n      \"type\": \"positive\"\n    }\n}\n```\n\n### 5. Сохранение результатов работы нейросети из социальных сетей\n```bash\nroot@ar4ikov: /home/user/SentimentFilter/transport/vk# python vk.py\n```\n```bash\nroot@ar4ikov: /home/user/SentimentFilter/transport/SOME_FILE# python SOME_FILE.py\n```\n\nВ самом файле нужные константы подписаны комментариями, не перепутаете.\n\nБольше примеров работы (и с другими классами) вы найдете в **`examples`**!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Far4ikov%2Fsentimentfilter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Far4ikov%2Fsentimentfilter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Far4ikov%2Fsentimentfilter/lists"}