Статья опубликована в рамках: Научного журнала «Студенческий» № 11(31)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6, скачать журнал часть 7
КАТЕГОРИЗАЦИЯ НОВОСТНОЙ ЛЕНТЫ ВЕБ-САЙТА
АННОТАЦИЯ
В данной статье предлагается решение задачи семантической кластеризации (категоризации) новостной ленты сайта. В качестве метода используется алгоритм кластеризации k-meansи частотный словарный анализ. Для новостной ленты сайта sstu.ru были проведены эксперименты с разным значением параметра k. Для полученных кластеров проведён частотный анализ ключевых слов, на основе чего предложены рекомендации по категоризации файлов новостной ленты сайта.
Ключевые слова: веб-сайт, новостная лента, семантическая кластеризация, ключевые слова.
Введение
Основная цель разработчика сайта – спроектировать такую его структуру, которая наиболее удобна для поиска необходимой пользователю информации. Данная задача решается путем реинжиниринга сайта как на основе анализа его гипертекстовой структуры (как правило представляемой графовой моделью) [1], так и на основе учета поведения пользователей сайта, результатов веб-аналитики [2].
При данном подходе неохваченной остается новостная лента сайта, составляющие файлы которой не имеют семантической категоризации и снабжаются только меткой даты создания. Сортировка новостей по дате не является удобным способом поиска нужной информации. С увеличением числа новостей поиск подходящей новости может занимать значительное время.
Цель данной статьи – разработать метод и предложить эффективный инструмент для построения новостной ленты. Для достижения данной цели мы предлагаем естественный подход, заключающийся в распределении новостей по тематическим рубрикам. Для этого мы выполняем программным способом кластеризацию файлов новостной ленты на основе их текстового анализа, а затем строим семантическое описание кластеров. В результате мы получаем разделение новостей по тематическим категориям, что позволит упростить поиск нужной информации. Кроме того, выполненная категоризация позволит сразу помещать поступающие новости в подходящие кластеры.
Результаты кластеризации новостной ленты веб-сайта
Задача семантической характеризации новостей реализована с помощью программы на языке python, на вход которой подаётся выборка из базы данных новостной ленты, и на выходе которой мы получаем новости с присвоенными им кластерами.

Рисунок 1. Распределение выборки из 2000 файлов новостной ленты сайта www.sstu.ru по кластерам по результатам кластеризации методом K-средних с разным значением параметра k: a) k=6, б) k=8, в) k=10, г) k=12.
Нумерация кластеров ведется с нуля, количество файлов в кластере обозначаются над столбиками гистограмм.
В качестве объекта исследования была рассмотрена новостная лента образовательного сайта www.sstu.ru. В качестве эксперимента была взята выборка из 2000 записей базы данных новостей сайта, которая была кластеризована алгоритмом k-means (k-средних). В результате мы получили совокупность новостных файлов, разделённую на кластеры, характеризующие рубрики новостей.
Всего было проведено 4 эксперимента с разным числом задаваемых алгоритму кластеров. Распределение новостей по кластерам, изображенным в виде подписанных столбцов, с указанием их количества, показано на рисунке 1. При числе кластеров равном шести самое большое количество новостей попадает в кластер с номером 0, а самое малое количество новостей – в кластер с номером 2.
Для восьми кластеров самое большое количество новостей попадает в кластер с номером 0, а самое малое количество новостей – в кластер с номером 7. Значительное количество новостей мы видим также в кластерах с номерами 3 и 4.
При разбиении на десять кластеров самое большое количество новостей попадает в кластер с номером 8, а самое малое количество новостей – в кластер с номером 0. При этом лишь в двух кластерах количество новостей превышает 300 записей – в кластере 6 и кластере 8.
Наконец, при числе k=12 самое большое количество новостей попадает в кластер с номером 6, а самое малое количество новостей – в кластер с номером 5. В двух кластерах с номерами 4 и 5 количество новостей превышает 300 записей. Стоит отметить также, что в данном эксперименте оказалось больше всего кластеров, число записей новостей в которых не превышает 100 записей.
Для того чтобы понять, по какому семантическому принципу новостные файлы объединились в кластеры, для каждого кластера мы на основе частотного анализа произвели отбор ключевых слов. Для этого была использована программа Statistica, с помощью которой мы для совокупности новостных файлов каждого кластера подсчитываем частоту слов. При этом были исключены наиболее часто встречающиеся слова, встречающиеся во всех кластерах, и самые редко встречающиеся слова, по которым невозможно отнести новости к определённому кластеру. Набор ключевых слов, приписываемых кластеру можно охарактеризовать в общих терминах, то есть отнести кластер к некоторой категории. Полученные результаты для разбиений новостных файлов по кластерам во всех проведенных экспериментах представлены в таблицe 1-4.
Таблица 1.
Семантическое описание в виде набора ключевых слов и категоризация кластеров при разбиении новостной ленты сайта sstu.ru. на 6 кластеров
| Номер кластера | Описание кластера | Ключевые слова | 
| 0 | торжественные мероприятия | Мероприятие, концерт, праздник, торжественный | 
| 1 | спорт | Состязания, команды, соревнования | 
| 2 | конференции в области науки | Конференция, наука, инновации, проект | 
| 3 | общественные конференции | Конференция, бизнес, общество | 
| 4 | экзамены и информация абитуриентам | Экзамен, абитуриент, экзамен, заявление, срок, подача | 
| 5 | награждения в конкурсах | Награждается | 
Таблица 2.
Семантическое описание в виде набора ключевых слов и категоризация кластеров при разбиении новостной ленты сайта sstu.ru. на 8 кластеров
| Номер кластера | Описание кластера | Ключевые слова | 
| 0 | торжественные мероприятия | Мероприятие, концерт, праздник, торжественный | 
| 1 | спорт | Состязания, команды, соревнования | 
| 2 | конференции в области науки | Конференция, наука, инновации, проект | 
| 3 | общественные конференции | Конференция, бизнес, общество | 
| 4 | конкурсы молодых учёных | Конкурсы, проекты, молодые, ученые | 
| 5 | информация абитуриентам | Абитуриент, экзамен, заявление, срок, подача | 
| 6 | научно-техническая библиотека | Библиотека, НТБ, абонемент | 
| 7 | олимпиады и конференции | Олимпиада, конференция | 
Таблица 3.
Семантическое описание в виде набора ключевых слов и категоризация кластеров при разбиении новостной ленты сайта sstu.ru. на 10 кластеров
| Номер кластера | Описание кластера | Ключевые слова | 
| 0 | Конкурсы и конференции на кафедре | Конкурс, конференция, кафедра | 
| 1 | Конференции по проблемам и технологиям | Конференция, проблема, технология | 
| 2 | олимпиады | Олимпиада | 
| 3 | спорт | Состязания, команды, соревнования, летние | 
| 4 | Конкурсы по информационным технологиям в рамках ВУЗа | Конкурс, номинации, информационные, технология, рамки, ВУЗ | 
| 5 | библиотека | Библиотека, НТБ, абонемент | 
| 6 | конкурсы и мероприятия, связанные с развитием науки | Конкурс, мероприятие, развитие, наука | 
| 7 | телевидение | Выпуск, корреспондент, передача, телеканал, Вести | 
| 8 | конкурсы для ВУЗов и школ | Конкурс, школа, ВУЗ, учащиеся | 
| 9 | Конкурсы, концерты и студенческая самодеятельность | Конкурс, мероприятие, концерт | 
Таблица 4.
Семантическое описание в виде набора ключевых слов и категоризация кластеров при разбиении новостной ленты сайта sstu.ru. на 12 кластеров
| Номер кластера | Описание кластера | Ключевые слова | 
| 0 | конференции | Конференция | 
| 1 | конкурсы и мероприятия в студенческом клубе | Студенческий, клуб, концерт, мероприятие | 
| 2 | конкурсы и проекты - инновации | Конкурс, инновация, проект, научный | 
| 3 | информация абитуриентам | Абитуриент, экзамен, заявление, срок, подача | 
| 4 | праздники | Отмечается, праздник, торжество | 
| 5 | дополнительное образование | Набор, дополнительное, образование, группы, центр | 
| 6 | день открытых дверей | Открытые, двери, приглашаются, желающие | 
| 7 | олимпиады | Олимпиада | 
| 8 | конкурсы | Конкурс, программа, номинации | 
| 9 | информация аспирантам | Экзамен, аспирант | 
| 10 | библиотека | Библиотека, НТБ, абонемент | 
| 11 | спорт | Состязания, команды, соревнования | 
На основе проведенных экспериментов можно рекомендовать разработчику сайта набор тематических категорий для новостной ленты, покрывающих большинство новостей выборки. В качестве таких кластеров целесообразно выбрать те, которые либо встречаются наиболее часто, либо имеют средние размеры по отношению к общему числу новостей. В нашем модельном примере в качестве категорий на основе данных критериев можно выбрать следующие тематические рубрики: «торжественные мероприятия», «конференции в области науки», «спорт», «информация абитуриентам», библиотека, «общественные конференции», «олимпиады», «дополнительное образование», «студенческая жизнь». Совокупность соответствующих кластеров представляет собой покрытие исходной выборки новостных файлов, что согласуется с возможной нечеткой категоризацией новостей.
Методы и используемые инструменты для решения задачи
Для программной реализации кластеризации мы использовали алгоритм кластеризации k-means [3], реализованный средствами библиотеки Scikit-learn [4] языка Python.
В качестве данных для эксперимента мы использовали выборку новостей из сайта в размере двух тысяч записей в формате SQlite, которые подавались на вход программе для дальнейшей кластеризации.
Для выполнения стеминга (выделения основы слов) использовался инструмент Snowballstemmer, который имеет поддержку русского языка.
Программа работает с базой данных в формате SQLite, поддерживаемой Python путем импорта модуля SQLite3. Текстовые файлы базы данных подвергаются частотному анализу [5], суть которого состоит в следующем:
- построить словарь V из всех слов, используемых в исходных текстах T,
- для каждого текста ti∊T и для каждого слова из словаря vj∊V, посчитать число вхождений xij слова vj в текст ti.
Таким образом, для каждого текста ti∊T мы получаем вектор целых неотрицательных чисел xi, длина которого равна количеству слов в словаре V.
Для текстов разного размера величина значений частоты x может сильно отличаться, т.е. чем больше текст, тем больше может быть повторов слов. Для уменьшения этого эффекта применяется метод нормализованного частотного анализа или TF (term frequency), значения частоты x делятся на общее число слов в тексте t:
 .
 .
Для выполнения частотного анализа применялся инструмент TfidfVectorizer библиотеки Scikit-learn, по причине удобства использования, а также в виду совмещения в себе функций хеширования слов в тексте и использования частотного анализатора.
Для удобства статистической обработки результатов кластеризации данные из БД SQLite были экспортированы в формат *.csv для использования в Microsoft Office Excel. Фрагмент результата операции представлен на рисунке 2.

Рисунок 2. Фрагмент таблицы с корректным разделением столбцов при просмотре в Microsoft Office Excel
Семантическая характеризация кластеров была выполнена на основе статистики частного распределения слов текстов соответствующего кластера. Для частотного словарного анализа текстов была использована программа Statistica, в которую загружаются новости с присвоенными им номерами кластеров, и которая подсчитывает частоту слов в тексте. При этом были исключены наиболее часто встречающиеся слова, присутствующие во всех кластерах, и самые редкие слова, по которым невозможно определить принадлежность новости к определённому кластеру.
Перед выполнением частотного мы провели предварительную очистку текста. В сложных естественных языках (таких как русский язык) одно и то же слово может принимать разные формы (падежи), и в словарь частотного анализа могут попадать все словоформы, отличающиеся предлогами и/или окончаниями. Из-за этого может сильно увеличиваться размер словаря и соответственно размер набора данных для обучения, что может вызывать падение производительности системы и ухудшать обобщающие способности классификатора (переобучение).
Для решения этой задачи используются два метода: лематизация - приведение слов в тексте к нормальной форме (единственное число, именительного падежа) и стеминг - выделение основы слов путём отбрасывания приставок и окончаний [6,7]. Последний способ нормализации текста работает гораздо быстрее чем лематизация. Он менее качественный, но для частотного анализа его вполне достаточно, и поэтому именно он был использован при написании программы.
Заключение
Таким образом, в результате работы была предложен механизм кластеризации новостной ленты сайта www.sstu.ru и дальнейшее описание полученных кластеров, посредством частотного анализа ключевых слов. На основе проведенных экспериментов предложена методика отбора тематических категорий новостной ленты, покрывающих большинство новостей. В качестве таких кластеров предлагается выбрать те, тематические категории которых возникают наиболее часто, либо имеют средние размеры по отношению к общему числу новостей.
Для решения задачи на основе этого метода, реализован программный комплекс для выполнения кластеризации и получения ключевых слов описывающих каждый из кластеров.
Результаты работы могут быть использованы для разделения поступающего новостного потока по рубрикам, что облегчает поиск необходимой информации и упрощает работу с новостной лентой. Разработанная методика кластеризации может быть использована как гибкий инструмент для решения широкого круга задач реинжиниринга сайта.
Список литературы:
- А.А. Сытник, С.В. Папшев, И.В. Курчанова. Сравнительный анализ некоторых методов семантической кластеризации гипертекста // Материалы XII Всероссийской научно-технической конференции «Теоретические и прикладные вопросы современных информационных технологий» (ТиПВСИТ 2015). Улан-Удэ, 11-18 августа 2015 г. – Улан-Удэ, Изд-во ВСГТУ, 2015. С. 51-56.
- Vladimir Salin, Maria Slastihina, Ivan Ermilov, René Speck, Sören Auer, and Sergey Papshev. Semantic Clustering of Website Based on its Hypertext Structure // Communications in Computer and Information Science. 6th International Conference, KESW 2015 Moscow, Russia, September 30 – October 2, 2015. Proceedings. Pp. 182-194.
- Introduction to K-means [Электронный ресурс] / Introduction to K-means Режим доступа: http://www.cs.cmu.edu/~dpelleg/kmeans.html (дата обращения 18.04.2018)
- Scikit-learn Machine Learning in Python [Электронный ресурс] / scikit-learn - Режим доступа: http://scikit-learn.org/stable/modules/clustering.html (дата обращения 18.04.2018)
- Е. Борисов. Автоматизированная обработка текстов на естественном языке, с использованием инструментов языка Python [Электронный ресурс]/ Е. Борисов – режим доступа: http://mechanoid.kiev.ua/ml-text-proc.html (дата обращения 8.05.2018)
- С.А. Айвазян. Прикладная статистика: Классификации и снижение размерности : справ. изд. / С.А. Айвазян, В.М. Бухштабер, И.С. Енюков, Л.Д. Мешалкин; под ред. С.А.Айвазяна. – М. : Финансы и статистика, 1989. – 607 с. : ил.
- Г. Ингерсолл. Обработка неструктурированных текстов / Г. Ингерсолл, Т. Мортон, Э. Фэррис пер. с англ. «ДМК Пресс» - 2015 г.. – стр. 213-220.


Оставить комментарий