Skip to content

Vikkingsk8/Chat_bot_InfoCompas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ИнфоКомпас: Виртуальный помощник на основе TF-IDF

Описание проекта

ИнфоКомпас — это виртуальный помощник, разработанный для помощи пользователям в поиске информации из различных источников, таких как PDF-документы и Excel-таблицы, с использованием метода TF-IDF (Term Frequency-Inverse Document Frequency) для анализа текста и поиска наиболее релевантных ответов.

Основные компоненты и функциональность

1. Загрузка и обработка данных

1.1. Загрузка данных из Excel

Функция load_excel_data(excel_path) загружает данные из Excel-файла, который содержит вопросы и ответы. Эти данные используются для поиска ответов на основе введенных пользователем вопросов.

1.2. Загрузка данных из файла links.xlsx

Функция load_links_data(links_path) загружает данные из файла links.xlsx, который содержит вопросы и связанные с ними ссылки. Эти данные используются для предоставления пользователю дополнительных ресурсов, связанных с их запросом.

1.3. Извлечение текста и страниц из PDF

Функция extract_text_and_pages_from_pdf(pdf_path) извлекает текст и номера страниц из PDF-документа. Этот текст используется для поиска ответов на основе введенных пользователем вопросов.

2. Обработка текста

2.1. Разделение текста на абзацы

Функция split_text_into_paragraphs(text_and_pages) разделяет текст на абзацы и сохраняет номера страниц, с которых эти абзацы были извлечены.

2.2. Создание TF-IDF матрицы

Функция create_tfidf_matrix(paragraphs) создает TF-IDF матрицу на основе абзацев текста. Эта матрица используется для вычисления сходства между введенными пользователем вопросами и текстом в документах.

3. Поиск ответов

3.1. Поиск наилучшего ответа

Функция find_best_answer(user_question, vectorizer, tfidf_matrix, paragraphs, pages, threshold) находит наиболее релевантный ответ на основе введенного пользователем вопроса, используя TF-IDF матрицу и пороговое значение сходства.

3.2. Предварительная обработка и форматирование ответа

Функция preprocess_answer(answer) предварительно обрабатывает ответ, удаляя ненужные части текста. Функция format_answer(answer) форматирует ответ для отображения в интерфейсе.

4. Обработка вопросов и ссылок

4.1. Предварительная обработка текста

Функция preprocess_text(text) обрабатывает текст, приводя его к нижнему регистру, удаляя специальные символы и выполняя стемминг.

4.2. Поиск релевантных ссылок

Функция find_relevant_links(user_question, threshold) находит релевантные ссылки на основе введенного пользователем вопроса и порогового значения сходства.

5. Функциональность кнопок ссылок

5.1. Отправка вопроса и открытие ссылки

При нажатии на кнопку ссылки, вопрос, связанный с этой ссылкой, отправляется на сервер для поиска ответа, и ссылка открывается в новом окне. Это позволяет пользователю получить дополнительную информацию, связанную с их запросом.

6. Автоматическое переобучение модели

6.1. Проверка количества лайков

Функция check_like_count() проверяет количество лайков в базе данных. Если количество лайков превышает определенный порог, модель автоматически переобучается.

6.2. Переобучение модели

Функция retrain_model() загружает данные обратной связи из базы данных, обрабатывает их и создает новую TF-IDF матрицу на основе этих данных.

7. Планировщик задач

Планировщик задач настроен на автоматическую проверку количества лайков и переобучение модели каждые 30 минут.

Установка

Для установки и запуска ИнфоКомпас, следуйте этим простым шагам:

  1. Клонируйте репозиторий: git clone https://github.com/Vikkingsk8/Chat_bot_InfoCompas.git cd Chat_bot_InfoCompas

  2. Установите зависимости: pip install -r requirements.txt

  3. Запустите приложение: python app.py

Использование

Откройте ваш любимый браузер и перейдите по адресу http://127.0.0.1:5000/.

Введите ваш вопрос в поле ввода и нажмите кнопку "Отправить".

Примечание к использованию

Если вы обновили данные в файлах Excel или PDF, не забудьте перезапустить приложение, так как ИнфоКомпас использует механизм кэширования для улучшения производительности.

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

Для запуска тестов используйте следующую команду:

python tests.py

Тесты для маршрутов

test_index_route: Проверяет, что главная страница возвращает статус-код 200.

test_chat_endpoint: Проверяет корректность обработки запроса к чат-боту.

test_chat_endpoint_invalid_question: Проверяет обработку некорректного ввода пользователя.

test_chat_endpoint_unknown_question: Проверяет обработку случая, когда ответ на вопрос не найден.

test_download_pdf_endpoint: Проверяет корректность работы маршрута для скачивания PDF-файла.

Тесты для функций загрузки данных

test_load_excel_data: Проверяет корректность загрузки данных из Excel-файла.

test_load_excel_data_nonexistent_file: Проверяет обработку случая, когда файл не найден.

test_load_excel_data_invalid_file: Проверяет обработку случая, когда файл имеет неправильный формат.

Тесты для функций обработки текста

test_preprocess_text: Проверяет корректность предварительной обработки текста.

test_preprocess_text_empty: Проверяет обработку пустого ввода.

test_preprocess_text_with_extra_chars: Проверяет обработку текста с неалфавитными символами.

Тесты для функций поиска ответов

test_find_answer_in_excel: Проверяет корректность поиска ответа в Excel-файле.

test_find_answer_in_pdf: Проверяет корректность поиска ответа в PDF-файле.

Тесты для функций форматирования ответов

test_format_answer: Проверяет корректность форматирования ответа для отображения в HTML.

Тесты для функций извлечения текста из PDF

test_extract_text_and_pages_from_pdf: Проверяет корректность извлечения текста и номеров страниц из PDF-файла.

Структура проекта

app.py: Основной файл приложения.

requirements.txt: Файл с зависимостями.

README.md: Документация проекта.

tests.py: Файл с тестами.

data/: Папка с данными, содержит instruction.pdf и ответы.xlsx и cache.pkl

static/: Папка для статических CSS файлов и изображений.

styles.css: Основной CSS файл.

templates/: Папка для HTML шаблонов.

index.html: Основной HTML файл.

Infokompas/
├── app.py
├── requirements.txt
├── README.md
├── tests.py
├── data/
│ ├── instruction.pdf
│ ├── ответы.xlsx
│ ├── links.xlsx
│ └── cache.pkl
├── static/
│ └── styles.css
│ ├── background.jpg
│ ├── bot_icon.png
│ ├── image.png
│ └── user_icon.png
└── templates/
└── index.html

Заключение

ИнфоКомпас — это мощный инструмент для поиска информации, который использует современные методы обработки текста и машинного обучения для предоставления пользователям наиболее релевантных ответов и ссылок. Благодаря автоматическому переобучению и интеграции с различными источниками данных, ИнфоКомпас обеспечивает высокую точность и эффективность в работе.

Авторы

  • Ермилов В.В. (разработчик)
  • Файбисович В.А. (аналитик)

About

Чат бот для Банка России 1.0

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors