https://github.com/zabojeb/tinkoff-feedback-analysis
LLM-based feedback collection and analysis system for Tinkoff
https://github.com/zabojeb/tinkoff-feedback-analysis
Last synced: 5 months ago
JSON representation
LLM-based feedback collection and analysis system for Tinkoff
- Host: GitHub
- URL: https://github.com/zabojeb/tinkoff-feedback-analysis
- Owner: zabojeb
- Created: 2024-03-30T10:10:39.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-04T09:05:22.000Z (about 2 years ago)
- Last Synced: 2024-05-06T16:40:49.350Z (about 2 years ago)
- Language: Jupyter Notebook
- Size: 957 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# AFAStt: Automated Feedback Analysis System for Tinkoff
Временно вебсайт доступен по ссылке
Дополнительное задание выполнено в файле .ipynb
> [!NOTE]
> Некоторые функции, которые не были реализованы в прототипе буду описаны здесь.
> Поэтому прочитать README - важно!
## Ход работы
### Парсинг
Мы реализовали парсинг с двух платформ:
-
-
Тем не менее, парсинг с других платформ не представляет из себя сложной задачи.
В прототипе и датасете мы используем парсинг только с banki.ru.
Поэтому код парсинга sravni.ru представим здесь:
```python
def parse_sravniru(num, page):
data = {\"good\": [], \"bad\": []}
r = 0
while True:
if r >= num:
with open(\"output.json\", \"w\") as f:
json.dump(data, f)
return data
req = requests.get(f\"https://www.sravni.ru/proxy-reviews/reviews/?filterBy=withRates&fingerPrint=ea060f38d490a841e5bae143a1505423&isClient=true&locationRoute=&newIds=true&orderBy=byDate&pageIndex={page}&pageSize=10&reviewObjectId=5bb4f769245bc22a520a6353&reviewObjectType=banks&specificProductId=&withVotes=true\")
reviews = req.json()
if reviews[\"items\"] == []:
return data
for item in reviews[\"items\"]:
review = item[\"text\"].replace(\"\\n\", \"\").replace(\"\\r\", \"\").replace(\"\\t\", \"\")
if review != \"\" and review != \" \" and review != \"\\n\" and review != ', ':
if int(item[\"rating\"]) in (1, 2, 3):
data[\"bad\"].append(review)
elif int(item[\"rating\"]) in (4, 5):
data[\"good\"].append(review)
r += 1
print(f\"Получено отзывов с сравни.ру: {r}/{num}\")
page += 1
```
### Почему вебсайт?
В презентации мы говорили, что сделаем приложение или вебсайт на React.
Сейчас вебсайт написан на чистом HTML5+CSS+JS
Мы выбрали такой формат из-за удобства использования. Вебсайтом можно пользоваться на любом устройстве.
Этому способствует адаптивный дизайн.
### Как оно работает?
У нас есть python-скрипт, который парсит отзывы, анализирует их и формирует базу данных.
Парсинг - довольно долгий процесс. Оценка длится еще больше.
Поэтому для начала работы нужно сформировать первоначальный полный датасет,
а затем обновлять его по запросу пользователя.
При обновлении в датасет будут добавляться **только** новые отзывы.
Сейчас наш датасет статический и не может обновляться (хотя мы можем это реализовать),
потому что мы не обладаем достаточными финансовыми ресурсами.
### To-Do List
- Сортировка и фильтрация по времени. Это довольно легко реализовать, ведь с отзывами хранится время публикации в формате timestamp.
- Выявление средней оценки. Этот параметр также есть в датасете, это легко реализовать.
- Выявление "реальной" оценки. Это уже не совсем легко, но достаточно просто. На данный момент мы тестируем различные модели с Hugging Face для выявления эмоциональной окраски отзывов и их анализа.
- Отображение графиков с динамикой изменения среднй оценки. Это реализуемо, но для этого нужен большой датасет и, возможно, реализация предыдущего пункта.
> [!WARNING]
> Project is WIP now.