disease


Namedisease JSON
Version 0.1.9 PyPI version JSON
download
home_pagehttps://github.com/nirma-patient-intake/disease/
SummaryDisease processing tool kit in Russian
upload_time2023-07-30 14:24:03
maintainer
docs_urlNone
authorNIRMA Team of ITMO University
requires_python
licenseMIT
keywords nlp disease health condition
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Классификатор заболеваний

**Patient-intake** - модуль, обеспечивающий дистанционное взаимодействие пациента и медицинского учреждения с помощью диалоговых агентов. Реализован на языке Python.

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

Модуль поддерживает анализ текстов на русском языке.

## Применение

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

## Установка модуля

    pip install distool

## Пример использования

```python
from distool.feature_extraction import SmartSymptomExtractor
from distool.interpretation.explainer import SymptomBasedExplainer
from distool.estimators import DiseaseClassifier

texts = [
    "У меня болит живот, но нет температуры",
    "У меня температура, но нет недомогания",
    "Я завтра иду домой",
]
diseases = ["гастрит", "отит", "-1"]

symptom_vectorizer = SmartSymptomExtractor()
features = symptom_vectorizer.transform(texts)

classifier = DiseaseClassifier()
classifier.fit(features, diseases)
predicted_diseases = classifier.predict(features)
print("Predicted diseases:", predicted_diseases)
# Predicted diseases: ['гастрит' 'отит' '-1']

explainer = SymptomBasedExplainer(symptom_vectorizer, classifier)

print(explainer.explain(features[1]))
# Наблюдается отит с вероятностью 59%.
# Это потому что у вас наблюдаются следующие симптомы: температура
# И отрицаются следующие: недомогание
```

## Разработка

Нужно установить зависимости и подключить pre-commit.g

    pip install -r requirements.py
    pre-commit install
    bash init.sh

### Контрибьютинг

Каждый новый функционал должен покрываться документацией и тестом.

### Тестирование

Чтобы запустить тесты нужно ввести:

    pytest

### Pull request

Каждый PR должен быть отревьювен.

## История проекта

Работа над **Patient-intake** проводится в рамках НИР Университета ИТМО №622275 "Разработка модуля для предварительного диагноза: поддержание логистики потоков пациентов и концепции второго мнения при взаимодействии с пациентом через диалоговые системы" (2022-2023)

## Участники проекта

[<img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/53980712?v=4&h=200&w=200&fit=cover&mask=circle&maxage=7d" width="30" /> Анна Чижик](https://github.com/Frantsuzova) </br> руководитель проекта

[<img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/23355371?v=4&h=200&w=200&fit=cover&mask=circle&maxage=7d" width="30" /> Мичил Егоров](https://github.com/EgorovM) </br> тимлид

[<img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/39134692?v=4&h=200&w=200&fit=cover&mask=circle&maxage=7d" width="30" /> Дмитрий погребной](https://github.com/DmitryPogrebnoy) </br> разработчик

[<img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/56276056?v=4&h=200&w=200&fit=cover&mask=circle&maxage=7d" width="30" /> Айталина Кривошапкина](https://github.com/aytakr) </br> разработчик

[<img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/109297759?v=4&h=200&w=200&fit=cover&mask=circle&maxage=7d" width="30" /> Мария Якубова](https://github.com/Shentorin) </br> аналитик

## Обратная связь

Если у Вас есть какие-то вопросы, можете обращаться к нам по адресу: patientintake@yandex.ru

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/nirma-patient-intake/disease/",
    "name": "disease",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "NLP,Disease,Health Condition",
    "author": "NIRMA Team of ITMO University",
    "author_email": "egorovmichil9@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/4c/b2/6ad692ea1817669a25d57a2b1858e46f49a1e360f2244e26b410314515ad/disease-0.1.9.tar.gz",
    "platform": null,
    "description": "# \u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u0430\u0431\u043e\u043b\u0435\u0432\u0430\u043d\u0438\u0439\n\n**Patient-intake** - \u043c\u043e\u0434\u0443\u043b\u044c, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0430\u0446\u0438\u0435\u043d\u0442\u0430 \u0438 \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0443\u0447\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432. \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python.\n\n\u041c\u043e\u0434\u0443\u043b\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0437\u0430\u0431\u043e\u043b\u0435\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0446\u0438\u0435\u043d\u0442\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u0438\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0437\u0443 \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0441\u0440\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u0435\u043c\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0435\u043b\u0438. \u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0431\u043e\u043b\u0435\u0437\u043d\u044f\u0445 \u0438 \u0438\u0445 \u0441\u0438\u043c\u043f\u0442\u043e\u043c\u0430\u0445.\n\n\u041c\u043e\u0434\u0443\u043b\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435.\n\n## \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\n\n\u041c\u043e\u0434\u0443\u043b\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u0438\u0445 \u0447\u0430\u0442-\u0431\u043e\u0442\u043e\u0432. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 \u043f\u0430\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u0438\u0445 \u0443\u0447\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u0430\u0446\u0438\u0435\u043d\u0442\u043e\u043c.\n\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u044f\n\n    pip install distool\n\n## \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n\n```python\nfrom distool.feature_extraction import SmartSymptomExtractor\nfrom distool.interpretation.explainer import SymptomBasedExplainer\nfrom distool.estimators import DiseaseClassifier\n\ntexts = [\n    \"\u0423 \u043c\u0435\u043d\u044f \u0431\u043e\u043b\u0438\u0442 \u0436\u0438\u0432\u043e\u0442, \u043d\u043e \u043d\u0435\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b\",\n    \"\u0423 \u043c\u0435\u043d\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430, \u043d\u043e \u043d\u0435\u0442 \u043d\u0435\u0434\u043e\u043c\u043e\u0433\u0430\u043d\u0438\u044f\",\n    \"\u042f \u0437\u0430\u0432\u0442\u0440\u0430 \u0438\u0434\u0443 \u0434\u043e\u043c\u043e\u0439\",\n]\ndiseases = [\"\u0433\u0430\u0441\u0442\u0440\u0438\u0442\", \"\u043e\u0442\u0438\u0442\", \"-1\"]\n\nsymptom_vectorizer = SmartSymptomExtractor()\nfeatures = symptom_vectorizer.transform(texts)\n\nclassifier = DiseaseClassifier()\nclassifier.fit(features, diseases)\npredicted_diseases = classifier.predict(features)\nprint(\"Predicted diseases:\", predicted_diseases)\n# Predicted diseases: ['\u0433\u0430\u0441\u0442\u0440\u0438\u0442' '\u043e\u0442\u0438\u0442' '-1']\n\nexplainer = SymptomBasedExplainer(symptom_vectorizer, classifier)\n\nprint(explainer.explain(features[1]))\n# \u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0438\u0442 \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e 59%.\n# \u042d\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0438\u043c\u043f\u0442\u043e\u043c\u044b: \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430\n# \u0418 \u043e\u0442\u0440\u0438\u0446\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435: \u043d\u0435\u0434\u043e\u043c\u043e\u0433\u0430\u043d\u0438\u0435\n```\n\n## \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430\n\n\u041d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c pre-commit.g\n\n    pip install -r requirements.py\n    pre-commit install\n    bash init.sh\n\n### \u041a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0438\u043d\u0433\n\n\u041a\u0430\u0436\u0434\u044b\u0439 \u043d\u043e\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u0438 \u0442\u0435\u0441\u0442\u043e\u043c.\n\n### \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\n\n\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u044b \u043d\u0443\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438:\n\n    pytest\n\n### Pull request\n\n\u041a\u0430\u0436\u0434\u044b\u0439 PR \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0442\u0440\u0435\u0432\u044c\u044e\u0432\u0435\u043d.\n\n## \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430\n\n\u0420\u0430\u0431\u043e\u0442\u0430 \u043d\u0430\u0434 **Patient-intake** \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u041d\u0418\u0420 \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0430 \u0418\u0422\u041c\u041e \u2116622275 \"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u0433\u043d\u043e\u0437\u0430: \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043f\u0430\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u0430\u0446\u0438\u0435\u043d\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b\" (2022-2023)\n\n## \u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\n\n[<img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/53980712?v=4&h=200&w=200&fit=cover&mask=circle&maxage=7d\" width=\"30\" /> \u0410\u043d\u043d\u0430 \u0427\u0438\u0436\u0438\u043a](https://github.com/Frantsuzova) </br> \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\n\n[<img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/23355371?v=4&h=200&w=200&fit=cover&mask=circle&maxage=7d\" width=\"30\" /> \u041c\u0438\u0447\u0438\u043b \u0415\u0433\u043e\u0440\u043e\u0432](https://github.com/EgorovM) </br> \u0442\u0438\u043c\u043b\u0438\u0434\n\n[<img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/39134692?v=4&h=200&w=200&fit=cover&mask=circle&maxage=7d\" width=\"30\" /> \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u043f\u043e\u0433\u0440\u0435\u0431\u043d\u043e\u0439](https://github.com/DmitryPogrebnoy) </br> \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\n\n[<img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/56276056?v=4&h=200&w=200&fit=cover&mask=circle&maxage=7d\" width=\"30\" /> \u0410\u0439\u0442\u0430\u043b\u0438\u043d\u0430 \u041a\u0440\u0438\u0432\u043e\u0448\u0430\u043f\u043a\u0438\u043d\u0430](https://github.com/aytakr) </br> \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\n\n[<img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/109297759?v=4&h=200&w=200&fit=cover&mask=circle&maxage=7d\" width=\"30\" /> \u041c\u0430\u0440\u0438\u044f \u042f\u043a\u0443\u0431\u043e\u0432\u0430](https://github.com/Shentorin) </br> \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\n\n## \u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c\n\n\u0415\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0430\u043c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: patientintake@yandex.ru\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Disease processing tool kit in Russian",
    "version": "0.1.9",
    "project_urls": {
        "Download": "https://github.com/NIRMA-PATIENT-INTAKE/disease/archive/refs/tags/distool.tar.gz",
        "Homepage": "https://github.com/nirma-patient-intake/disease/"
    },
    "split_keywords": [
        "nlp",
        "disease",
        "health condition"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4cb26ad692ea1817669a25d57a2b1858e46f49a1e360f2244e26b410314515ad",
                "md5": "bf508634cf1bcdb8081c4a15d0a2b1a5",
                "sha256": "0898fabb5098fcb1af627ce4ce4714c4ea7f9fdd208903ca42e2c90947607598"
            },
            "downloads": -1,
            "filename": "disease-0.1.9.tar.gz",
            "has_sig": false,
            "md5_digest": "bf508634cf1bcdb8081c4a15d0a2b1a5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 32021,
            "upload_time": "2023-07-30T14:24:03",
            "upload_time_iso_8601": "2023-07-30T14:24:03.973237Z",
            "url": "https://files.pythonhosted.org/packages/4c/b2/6ad692ea1817669a25d57a2b1858e46f49a1e360f2244e26b410314515ad/disease-0.1.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-07-30 14:24:03",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "nirma-patient-intake",
    "github_project": "disease",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "disease"
}
        
Elapsed time: 0.09339s