{"id":18425272,"url":"https://github.com/evilfreelancer/docker-rumorpheme-bot","last_synced_at":"2025-07-27T04:45:28.213Z","repository":{"id":260762601,"uuid":"866549383","full_name":"EvilFreelancer/docker-rumorpheme-bot","owner":"EvilFreelancer","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-02T11:45:48.000Z","size":14,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-16T08:15:11.361Z","etag":null,"topics":[],"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/EvilFreelancer.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":"2024-10-02T13:14:28.000Z","updated_at":"2024-11-02T11:45:52.000Z","dependencies_parsed_at":"2024-11-02T12:26:38.259Z","dependency_job_id":null,"html_url":"https://github.com/EvilFreelancer/docker-rumorpheme-bot","commit_stats":null,"previous_names":["evilfreelancer/docker-rumorpheme-bot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvilFreelancer%2Fdocker-rumorpheme-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvilFreelancer%2Fdocker-rumorpheme-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvilFreelancer%2Fdocker-rumorpheme-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvilFreelancer%2Fdocker-rumorpheme-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EvilFreelancer","download_url":"https://codeload.github.com/EvilFreelancer/docker-rumorpheme-bot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248758446,"owners_count":21156957,"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","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":[],"created_at":"2024-11-06T05:03:22.257Z","updated_at":"2025-04-13T17:58:24.386Z","avatar_url":"https://github.com/EvilFreelancer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ruMorphemeBot\n\nruMorphemeBot — это Telegram-бот для морфемного разбора русских слов. Бот использует обученную модель нейронной сети для\nанализа слов и их разделения на морфемы (приставки, корни, суффиксы и т.д.).\n\nОснован на модели [evilfreelancer/ruMorpheme](https://github.com/EvilFreelancer/ruMorpheme).\n\n## Возможности\n\n- отправьте боту русское слово или несколько слов, и он вернет их морфемный разбор;\n- поддерживается вывод в формате plain text или JSON Lines;\n- можно включить или отключить отображение типов морфем;\n- пользователи могут оценивать качество разбора с помощью лайков и дизлайков.\n\n## Примеры работы\n\n| Ввод            | Режим           | Вывод                                                                                                                                                                                                                                                       |\n|-----------------|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| беспрекословный | /plain /types   | `беспрекословный: бес:PREF/прекослов:ROOT/н:SUFF/ый:END`                                                                                                                                                                                                    |\n| беспрекословный | /plain /notypes | `беспрекословный: бес/прекослов/н/ый`                                                                                                                                                                                                                       |\n| беспрекословный | /jsonl          | `jsonl{\"word\": \"беспрекословный\", \"morphemes\": [{\"text\": \"бес\", \"type\": \"PREF\", \"prob\": \"99.99\"}, {\"text\": \"прекослов\", \"type\": \"ROOT\", \"prob\": \"94.22\"}, {\"text\": \"н\", \"type\": \"SUFF\", \"prob\": \"90.12\"}, {\"text\": \"ый\", \"type\": \"END\", \"prob\": \"100.0\"}]}` |\n\n## Команды\n\n- /start — Показать приветственное сообщение и список доступных команд;\n- /help — Показать помощь по командам;\n- /plain — Установить формат вывода в plain text;\n- /jsonl — Установить формат вывода в формате JSON Lines;\n- /types — Включить отображение типов морфем;\n- /notypes — Отключить отображение типов морфем;\n\nПримечание: В групповых чатах используйте команды с упоминанием бота, например: `@ruMorphemeBot /jsonl`.\n\n## Переменные окружения\n\nДля настройки бота используются следующие переменные окружения:\n\n- `BOT_TOKEN` — Токен вашего Telegram-бота. Обязательное поле;\n- `ADMINS_ID` — ID администратора бота для получения уведомлений. Обязательное поле;\n- `DATABASE_URL` — URL базы данных. По умолчанию: `sqlite+aiosqlite:///data/rumorpheme.db`;\n- `MODEL_PATH` — Путь к обученной модели или имя репозитория на Hugging Face. По умолчанию:\n  `evilfreelancer/ruMorpheme-v0.1`.\n\n## Запуск с помощью Docker\n\nПо умолчанию используется Dockerfile на базе `nvidia/cuda:12.6.1-cudnn-runtime-ubuntu24.04` для использования GPU.\nТакже доступен Dockerfile.cpu на базе `python:3.12` для запуска на CPU.\n\nПример файла `docker-compose.yml`:\n\n```yml\nversion: \"3.9\"\nservices:\n  rumorpheme-bot:\n    restart: \"unless-stopped\"\n    build: .\n    environment:\n      BOT_TOKEN: 123456:xxx\n      ADMINS_ID: 123\n    volumes:\n      - ./rumorpheme_data:/app/data\n    logging:\n      driver: \"json-file\"\n      options:\n        max-size: \"10k\"\n```\n\nКопируем из примера, cобираем, запускаем:\n\n```shell\ncp docker-compose.dist.yml docker-compose.yml\ndocker-compose build\ndocker-compose up -d\n```\n\n## Структура базы данных\n\nБот использует базу данных для хранения настроек пользователей и логирования сообщений.\n\nТаблица `user_settings`:\n\n- `user_id` — ID пользователя Telegram;\n- `format` — Формат вывода (`plain` или `jsonl`). По умолчанию `plain`;\n- `use_morpheme_types` — Отображать типы морфем (`yes` или `no`). По умолчанию `yes`.\n\nТаблица `message_log`:\n\n- `id` — Уникальный идентификатор записи;\n- `user_id` — ID пользователя Telegram;\n- `message_id` — ID сообщения в Telegram;\n- `message_text` — Текст сообщения пользователя;\n- `response_text` — Текст ответа бота;\n- `debug` — Полная информация о разборе в формате JSONL;\n- `feedback` — Оценка пользователя (`-1` — дизлайк, `0` — нет оценки, `1` — лайк);\n- `timestamp` — Время создания записи.\n\n## Ссылки\n\n- https://github.com/EvilFreelancer/ruMorpheme\n- https://huggingface.co/evilfreelancer/ruMorpheme-v0.1\n- https://github.com/EvilFreelancer/docker-rumorpheme-bot\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevilfreelancer%2Fdocker-rumorpheme-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevilfreelancer%2Fdocker-rumorpheme-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevilfreelancer%2Fdocker-rumorpheme-bot/lists"}