Анализ новостей Волгограда с сайта novostivolgograda.ru
Можно посмотреть на работу Тестовый страничка Обновление происходит каждые 6 часов.
Проект разделен на три части:
- Парсинг данных с новостного сайта с занесением их в БД MongoDB.
- Выделение с помощью Томита-парсера упоминание в тексте значимых персон Волгоградской области и достопримечательностей. Занесение в БД предложения с их упоминанием для дальнейшего анализа тональности. Создать программный модуль для проведения с помощью Spark MlLib анализ модели word2vec на всем объеме новостных статей из БД. Для персон Волгоградской области и достопримечательностей определить контектные синонимы и слова, с которыми они упоминались в тексте.
- Создать программный модуль для выявления тональности высказываний по отношению к персонам Волгоградской области и достопримечательностям.
Парсер новостного сайта (parser/scrapper.py) — проходит по новостям сайта novostivolgograda.ru и собирает ссылки на статьи. Затем заходит по всем собранным ссылкам и получает дату новости, её текст и название. Все данные записываются в коллекцию data.
Выделение персон и достопримечательностей и помещение их в таблицу analysis выполняет скрипт tomita.py. Перед запуском необходимо его поместить в папку с файлами persons.cxx, attractions.cxx, mydic.gzt и facttypes.proto.
Модель word2vec была обучена на новостных статьях из базы данных, объем которой составлял примерно 45000 статей. Модель находится в папке ./word2vec/model/kurs_model/. Запуск модуля осуществляется запуском программы ./word2vec/main.py. Модуль записывает контекстные синонимы в БД и осуществляет следующий вывод:
'Контекстные синонимы слов, полученные из модели, обученной на статьях:'
'--------------------'
'алимов'
Row(word='зампредседателя', similarity=0.816402792930603)
Row(word='облздрава', similarity=0.781923234462738)
Row(word='себелев', similarity=0.7760810852050781)
Row(word='лукьяненко', similarity=0.7573933601379395)
Row(word='семисотов', similarity=0.7363854050636292)
'--------------------'
'бочаров'
Row(word='губернатор', similarity=0.9528191685676575)
Row(word='андрей', similarity=0.9124425649642944)
Row(word='бочаровглава', similarity=0.910007655620575)
Row(word='поручил', similarity=0.8725244402885437)
Row(word='проинспектировал', similarity=0.8666603565216064)
Тональность определяется у предложений, выявленных томита-парсером на втором этапе работы. Для анализа была использована библиотека Dostoevsky
- https://github.com/bureaucratic-labs/dostoevsky. Запуск модуля осуществляется запуском программы tonality/dos.py. В результате работы модуль записывает в БД id предложений и их тональность, также.