/news_processing

Web-based application for automatic news processing

Primary LanguagePython

Суходольская Евгения Дмитриевна, 151-2, Веб-приложение для автоматической обработки новостей.

Актуальность решаемой задачи. Как известно, в пост-индустриальном обществе самым ценным ресурсом является информация. В связи с развитием сети интернет, количество информационных ресурсов и потоков сведений настолько огромно, что для анализа и переработки текста, а также для мониторинга связей уже не хватает ресурсов человеческого мозга. Таким образом, приложение, способное решить проблему нехватки времени и сил, которое поможет избежать ошибок, к которым приводит персонализированное восприятие, способно принести немалую ценность в различных областях, начиная от развлекательных целей и заканчивая выявлением схем, способных привести практически любого человека к успеху(маркетинг, финансовые операции, и т.д.). В данном проекте рассматривается приложение, отвечающее за автоматическую обработку новостей, что ценно по крайней мере тем, что позволяет выявить настроения людей относительно происходящих событий, что может существенно прояснить дальнейшее его развитие. Так, в моем случае, я начинаю разработку приложения с анализа новостей о выборах в США, точнее, об ассоциациях, возникающих у читателя, с Дональдом Трампом и Хилари Клинтон. Среди наиболее популярных решений, которые используются для анализа и мониторинга информации, в том числе в СМИ, стоит отметить программу "Доктор Ватсон", использующуюся, в основном, аналитиками, работающими с текстовыми данными, специалистами служб безопасности и конкурентной разведки и маркетологами. Решение позволяет структурировать большой объем информации, распознать сущности и связи и сгенерировать отчет, отражающий особенности, интересующие пользователя.Также, довольно известным решением является программа "Сайт Спутник", предназначенная для организации профессионального поиска, сбора информации, размещенной в интернете и ее мониторинга. Она интересна тем, что в приложении, использующем программу, разработаны средства получения как новой, так и старой информации на актуальные темы. Проект выполняется на языке python, наиболее простом и удобном для веб программирования. Используемые библиотеки, например, urllib (для поиска необходимых новостей в сети), beautifulsoup4 (для парсинга текста статей) и pymorphy2(для непосредственного анализа текста), позволяют написать программу в несколько строчек, создающую матрицы связей и ассоциаций слов в исследуемых новостях. Также в проекте используется NLPub — каталог лингвистических ресурсов для обработки русского языка, состоящий из нескольких разделов: инструменты, ресурсы, методы, обзор рынка, мероприятия, персоналии, литература. Цель NLPub — содействовать развитию исследований и разработок в области автоматической обработки русского языка. План работы по реализации функциональности проекта: ТЗ - конец декабря 2016 года + моими задачами к данной контрольной точке были: 1)Определение новостного источника - газета Коммерсантъ. 2)Создание документа с 300-400 url адресами, отвечающими статьям, в которых встречаются фамилии Трамп и Хиллари. 3)Установка beautifulsoup4 + pymorphy2. 4)Создание кода на python, который с помощью парсера создает для каждой статьи отдельаный документ и перемещает в него лишь текст статьи. 5)Ознакомление с документацией pymorphy2. 6)Создание кода на python, который с помощью pymorphy2 проводит анализ статей, изменяя все слова на начальную форму. Текущим заданием является создание матрицы встречаемости различных слов в статьях с помощью кода на python. Прототип - К концу января 2017 года. Сбор обратной связи и уточнение ТЗ - около середины февраля 2017 года. Итоговая версия - середина марта 2017 года. Подготовка отчета 20-25 марта 2017 года. Затем реализация дополнительного функционала + выбор и реализация анализа темы, интересной студенту - апрель - май 2017 года.

1)Приложение, которые будет создано на основе данной скриптовой модели, будет иметь следующую архитектуру: Пользователи приложения - аналитики, журналисты, политики, компьютерные лингвисты. Взаимодействие с помощью web-интерфейса, обращаться к нему можно через web-сервисы. Сервиса будет 2: предоставляющий графики зависимостей(анализатор-граф) и таблицы зависимостей (анализатор-таблица(Excel)). Система будет экспортировать/импортировать данные из файлов с адресами новостей/новостями. 2)Скрипт на питоне запускается через любую среду разработки python 3, предварительно необходимо проверить наличие библиотеки beautifulsoup4 (при отсутствии загрузить), для запуска скрипта необходимо иметь 402 адреса статей(прикреплены в репозитории), и задать в скрипте путь к ним (так как модель на компьютере не переносима) Затем необходимо снимать комментирование с кода по кускам (для сокращения времени работы скрипта) и запускать его. 3)В коде наличествуют комментарии построчно, детально описывающие процесс создания косинусной зависимости между словами, найденными в статьях. Если кратко, скрипт перерабатывает адреса страниц со статьями, открывая каждую, копируя весь текст html-страницы, парсером избавляется от всех деталей, кроме непосредственно текста статьи, текст, с помощью библиотеки pymorphy, переводится пословно в начальную форму, находится частота встречаемости слов в каждой статье и в общем корпусе текстов, строится матрица частот, на ее основе, с помощью восприятия слов, как векторы, строится косинусная зависимость между каждой парой слов, с помощью которой и будет проведен анализ статей. Работа, выполняемая этим скриптом, является моделью процесса, который будет выполнять приложение, выполняющее автоматический анализ новостей.

В итоге, результатом моего проекта является веб-страница с формой, в которой на выбор предложены временные промежутки, каждый из которых показывает словесную выборку из статей этого времени, между которой найдена определенная зависимость. Эта зависимость презентована в виде графов. Из незавершенных частей проекта остается дизайн формы и обработка запроса, отправляемого на сервер cgi-скриптом handler.py, который в зависимость от выбранного промежутка времени подгружает определенный json файл с определенным графом на веб-страницу, эта часть остается на летнюю практику.

Код располагается на сервере, взаимодействие происходит с помощью программы winscp, testing.py - на основе адресов статей находит tf-idf слов в статьях и относительно него и их частоты распределяет по временным промежуткам самые важные, а затем считает связь между ними с помощью косинусной зависимости, по силе этих связей строится граф - сильная связь - наличие ребра. Ребра записываются в json файл. Файл подгружается в код html страницы, где с помощью библиотеки d3.js строится svg-граф зависимостей. Все коды и прможетучоные файлы приложены.