Репозиторий для разработки и апробации различных моделей и подходов к обработке текста. Здесь собраны различные ноутбуки, которые можно использовать как примеры.
- Бекенд, запуск проекта
- Фронтенд, мобильный интерфейс
- nlp-workbench, место, где собраны ноутбуки <-- Вы тут
scripts- папка с классами и скриптами, готовыми к использованию в продеnotebooks- папка с ноутбуками, в которых производилась разработка скриптов и где продемонстрирован их функционалmodels- файлы моделей и векторайзеровartifacts- срезы данных, которые можно использовать для тестирования скриптов
- Проект Natasha - набор Python-библиотек для обработки текстов на естественном русском языке
- pandas и pandarallel
- matplotlib
- beautifulsoup4 - парсинг HTML
- requests - отправка запросов
- Скрипт для NER-парсинга (Named Entity Recognition) заголовков. Модифицирован, чтобы так же выделять и простые существительные от других слов. Используется в проде. Используется в get_trends.py.
- Скрипт-попытка определения семантической близости заголовков с помощью нейронных моделей. Не используется в проде.
- Скрипт для парсинга RSS-лент с помощью
feedparser. Немного адаптирован, чтобы автоматически добавлять тег категории для некоторых источников. Разработан так, чтобы было просто добавить новые источники. Почему RSS? Потому что это самый простой способ получить новости с сайтов, которые не предоставляют API. Используется в get_trends.py.
- Скрипт для получения топов тем по входящему датафрейму с новостями. При использовании на датафрейме ограниченном за последнее время, получаем тренды. Также реализована функция для получения трендов в рамках набора тегов. Это позволяет делать персональные тренды для пользователей. В прототипе - используется при персонализации трендов для ролей, а в перспективе можно использовать для персонализации трендов для пользователей на основе их предпочтений по тегам.
- то же самое, что и scripts/get_trends.py, однако здесь так же используется TF-IDF. Это замедляет работу скрипта в несколько раз, однако тренды получаются значительно точнее. (см. пример ниже)
- Если хотим получить тренды по тегам, то фильтруем датафрейм по тегам, то же касатеся временных периодов
- Для каждой новости парсим заголовок и получаем список сущностей (NER-парсинг), и список существительных (NER-парсинг + регулярки), по обученной TF-IDF на заголовках новостей за последний период определяем самые важные слова, так же добавляем их.
- Производим лемматизацию, чтобы различные формы слов при подсчете считались одинаковыми.
- Считаем количество слов и возвращаем в качестве словаря список трендов. По словарю можно построить красивые графики. Стоит так же отметить, что список сущностей включает в себя классификацию сущностей на организации, людей и места, а так же общие темы по TF-IDF. См. более подробные прмеры работы в README_whys.md
- Дополнительная информация по нашим архитектурным и алгоритмическим решениям представлена в Почемучках, а если что-то не работает, то обращайтесь к нам! Мы всегда рады помочь и объяснить.
- Лебедева Татьяна - мобильный разработчик
- Голубев Егор - бекенд разработчик
- Тампио Илья - ML разработчик
- Денис Лахтионов - дизайнер
- Егор Смурыгин - менеджер
