Чат-бот для хакатона Банка «Открытие»
- Преобразовали "База знаний.xlsx" в удобный JSON
type Database = Array<{
type: string;
subType?: string;
question: string;
linkVideo?: string;
linkFAQ?: string;
linkSite?: string;
steps: Array<string>;
}>
- Составили базу синонимов на основе API https://synonymonline.ru/assets/json/synonyms.json для замены слов и словосочетаний в запросах пользователя на слова, знакомые нашему боту https://github.com/MrCheater/OpenSpaceHack_kube-kubelet/blob/main/src/cache.ts#L1404 (код генерации базы синонимов https://github.com/MrCheater/OpenSpaceHack_kube-kubelet/blob/main/src/ml.ts#L54)
- Составили список малозначимых слов https://github.com/MrCheater/OpenSpaceHack_kube-kubelet/blob/main/src/cache.ts#L1 , чтобы присваивать им меньший вес
- Преобразовали вопросы из базы данных в начальную форму для лучшего поиска https://github.com/MrCheater/OpenSpaceHack_kube-kubelet/blob/main/src/cache.ts#L37
- Написали алгоритм ранжирования результатов поиска с весами, который в наших тестах показывает 84.4% правильных ответов
- Настроили запуск в Docker-контейнере
Node.js
- Node.js 12+
git clone https://github.com/MrCheater/OpenSpaceHack_kube-kubelet.git
cd OpenSpaceHack_kube-kubelet
npm install
npm start
Результат:
Example app listening at http://localhost:8080/api/chat/v1/bot?question=
docker-compose up
Attaching to kube-kublet
kube-kublet | Example app listening at http://localhost:8080/api/chat/v1/bot?question=
npm run test
Результат:
QUALITY = 84.4%
Test Suites: 1 failed, 1 total
Tests: 45 failed, 245 passed, 290 total
Snapshots: 0 total
Time: 2.675 s, estimated 3 s