82571

Веб-система управления проектами с элементами социальной сети «Freetask»

Дипломная

Информатика, кибернетика и программирование

В рамках данной работы разрабатывается программный комплекс сбора и интеллектуального анализа проектов фрилансбирж состоящий из следующих компонентов: Агрегатор проектов с наиболее популярных русскоязычных бирж Нормализатор задачей которого является определение ключевых слов проекта Кластеризатор...

Русский

2015-02-28

182.69 KB

1 чел.

Кафедра «Информационно-коммуникационные технологии»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к дипломному проекту (работе)

На тему «Веб-система управления проектами с элементами социальной сети «Freetask»

Студент Савин Иван Ильич                                                          _____________          /

Руководитель проекта Игнатьев Иван Сергеевич                                                           /

Допущен к защите_________________2011 г.

КОНСУЛЬТАНТЫ ПРОЕКТА:

Специальная часть  ______________________________________  И. С. Игнатьев

Конструкторско-технологическая часть  ____________________  Ю. В. Куприянов

Техника безопасности  ___________________________________  Е. Б. Михайлов

Зав. Кафедрой  __________________________________________  В. Н. Азаров



Аннотация

В рамках данной работы разрабатывается программный комплекс сбора и интеллектуального анализа проектов фриланс-бирж, состоящий из следующих компонентов:

  1. Агрегатор проектов с наиболее популярных русскоязычных бирж
  2. Нормализатор, задачей которого является определение ключевых слов проекта
  3. Кластеризатор, задачей которого является прогнозирование бюджета проекта
  4. Веб-интерфейс, с возможностью быстрого ответа на проект на бирже, фильтрацией проектов и предоставления различных статистик.

В ходе работы рассмотрены форматы импорта проектов с бирж и методы их разбора, методы и средства нормализации текстовых документов на русском языке. Рассмотрены особенности кластеризации коллекций текстовых документов. Подобраны средства и методы для реализации комплекса. Реализован программный комплекс на ЯВУ Python с использованием фреймворка Django при реализации веб-интерфейса. Составлено руководство пользователя комплекса.


Содержание

Аннотация  2

Введение 6

Актуальность 6

Новизна 6

Апробация 6

Завершенность 7

Структура и объем работы 7

Техническое задание 9

Введение  9

Основания для разработки  9

Назначение разработки  10

Функциональное назначение  10

Эксплуатационное назначение  10

Требования к программе  10

Требования к функциональным характеристикам  10

Требования к составу и параметрам технических средств  11

Требования к программной документации  11

Стадии и этапы разработки  12

Порядок контроля и приемки  12

Обзорно-анализитческачая часть 13

Обзор аналогов 13

Flance.ru 13

All Lance 13

My Notifier 13

webfreelance.ru 13

Writing Bids 13

freelance-fm 14

Анализ существующих инструментов фриланс-бирж и их агрегаторов 15

Методы и средства сбора информации с веб-ресурсов  17

Особенности форматов RSS-каналов фриланс-бирж 17

Оперативность агрегации для различных источников 18

Методы и средства нормализации текстовых документов 19

Метрика взвешивания термов tf-idf 19

Зоны документа 20

Леммизация и стемминг 21

Влияние части речи и языка на значимость терма 21

Стоп-слова 23

Векторная модель документа 23

Методы интеллектуального анализа текстовых документов  25

Кластеризация и классификация текстовых документов 25

Особенности текстовых данных 26

Метрики близости двух документов 26

Алгоритм ROCK  28

Технологическая часть 30

Обзор инструментов разработки 30

IDE gedit 30

Интерактивная оболочка IPython 30

Обзор используемых компонентов 31

Модуль парсинга XML-документов BeautifulStoneSoup 31

Фреймворк Django 31

Эмулятор браузера Mechanize 31

Разработка  33

Общая структура разработанного комплекса  33

Структура и алгоритм работы агрегатора  36

Стурктура агрегатора 36

Алгоритм работы агрегатора 36

Классы правил обработки биржи 37

Структура и алгоритм работы нормализатора  38

Структура нормализатора 38

Алгоритм работы нормализатора 39

Структура и алгоритм работы кластеризатора  42

Структура кластеризатора 42

Общий алгоритм работы кластеризатора 42

Выборка данных и предварительная подготовка средствами MySQL 43

Вычисление метрики соседства двух проектов 45

Вычисление количества общих соседей 45

Цикл кластеризации 46

Прогноз бюджета и составление отчета 47

Разработка веб-интерфейса 48

Лента проектов 48

Системы фильтрации 49

Список кластеров 49

Разработка системы оперативной реакции на проект 50

Структура системы оперативной реакции 50

Алгоритм работы системы оперативной реакции 50

Охрана труда 52

Исследование возможных опасных и вредных факторов при эксплуатации ЭВМ и их влияния на пользователей 52

Введение 52

Анализ влияния опасных и вредных факторов на пользователя 54

Влияние электрического тока 54

Влияние статического электричества 55

Влияние электромагнитных излучений НЧ 55

Влияние ультрафиолетового излучения 56

Выводы 56

Методы и средства защиты пользователей от воздействия на них опасных и вредных факторов 56

Методы и средства защиты от поражения электрическим током 56

Вывод 58

Методы и средства защиты от ультрафиолетового излучения 58

Методы и средства защиты от электромагнитных полей низкой частоты 59

Методы и средства защиты от статического электричества 59

Общие рекомендации при работе с вычислительной техникой 59

Требования к помещениям и организации рабочих мест 60

Требования к организации работы 62

Выводы 63

Выбранные методы и способы защиты от опасных и вредных факторов обеспечивают защиту пользователей, работающих с вычислительной техникой. 63

Заключение 64

Список литературы 65


Введение

Актуальность

Одной из острых проблем для современного молодого специалиста является наличие опыта работы. Фриланс - это небольшая работа с подрядчиком. Используется для выполнения ИТ-проектов: программирование, веб-дизайн. В интернете существуют биржи, где заказчики публикуют свои объявления и нанимают фрилансеров (то есть исполнителей). Фрилансерами становятся для получения дополнительной прибыли и опыта, совмещая фриланс с основной деятельностью.

Новизна

В настоящее время существует ряд фриланс-бирж, на которых заказчики могут предложить проект и подобрать исполнителя, однако биржи имеют ряд существенных недостатков:

  1. Крупных бирж более двух десятков. Обход всех бирж занимает много времени.
  2. Недостаточная фильтрация проектов (только выбор широкой тематики работ).
  3. Высокая конкуренция. Для взятия хорошего заказа требуется умение быстро проанализировать реальную стоимость, сложность и риски мошенничества.

Существует несколько сервисов агрегации бирж. Эти сервисы производят сбор проектов с крупных бирж. Однако фильтрация агрегированных проектов по-прежнему остается актуальной проблемой. Анализа текста, не производит ни один из подобных сервисов.

Разработанный проект Lancery объединяет в себе задачи агрегатора и имеет мощные инструменты фильтрации. Сервис анализирует тексты заказов и выявляет ключевые слова: вид и объект работ, требования к технологиям и навыкам. Кроме того производится глубокий анализ всех собранных проектов, благодаря чему можно прогнозировать бюджет.

Апробация

Проект является победителем конкурса «У.М.Н.И.К.» в 2011 году.

Работа отмечена на следующих конференциях и конкурсах:

  1. Научно-техническая конференция студентов, аспирантов и молодых специалистов МИЭМ 2011,
  2. Программа «СТАЖЕР» - Кадровый резерв молодых ученых и специалистов Фонда «Сколково»,
  3. XIX Международная студенческая школа-семинар «Новые информационные технологии»,
  4. IV Международная научная конференция «Актуальные вопросы современной техники и технологии».

Приемы, применяемые в данной работе, также отмечены на конференциях:

  1. Научно-техническая конференция студентов, аспирантов и молодых специалистов МИЭМ 2010,
  2. XVII Всероссийская научно-методическая конференция «Телематика'2010».

Завершенность

На данный момент весь программный комплекс реализован и введен в эксплуатацию.

Структура и объем работы

Обзорно-аналитическая часть содержит анализ и обоснование выбора средств реализации.  Раздел “Методы и средства сбора информации с веб-ресурсов” содержит информацию о технологиях агрегации новой поступающей информации веб-ресурса, проблемы, которые появляются при обработке RSS-каналов фриланс-бирж, и методы их устранения.  Раздел “Методы и средства нормализации текстовых документов” описывает процесс получения векторной модели документа, используемой для определения ключевых слов и последующего кластерного анализа. Раздел “Методы интеллектуального анализа текстовых документов” описывает особенности текстовых документов на естественном языке, которые следует учитывать при анализе, обзор методом кластеризации и применяемых в ней средств. Также в этом разделе дается обоснование выбора алгоритма ROCK для решения поставленной задачи.

В технологической части описаны основные возможности использованных при разработке инструментов и модулей, а также обоснования их выбора.

В части “Разработка” содержится описание конкретных решений, использованных в данной работе, включая структуры и алгоритмы компонентов системы. Раздел «Обращая структура комплекса» содержит иллюстрацию всех компонентов системы и их взаимодействие. Также в этом разделе описаны режимы работы системы и особенности запуска компонентов. В остальных разделах этой части работы изложены особенности реализации компонентов.

В части «Охрана труда» описаны опасные и вредные факторы, влияющие на пользователя ЭВМ, методы и средства защиты от них.


Техническое задание

На дипломный проект «Разработка веб-сервиса агрегации и интеллектуального анализа проектов фриланс-бирж».

Введение

Основные задачи, решаемые сервисом:

  1. Сбор заказов с большинства русскоязычных фриланс-бирж и представление их на одном сайте;
  2. Классификация типа работ, требуемых в заказе, более точно, чем это представлено на бирже;
  3. Прогноз бюджета заказа на основании ключевых слов в заказе и истории определения бюджета других заказов.
  4. Представление наглядной статистики по обработанным системой заказам с целью выявления востребованных типов работ и средних цен на различные типы работ.

Основания для разработки

В настоящее время на фоне частой экономической нестабильности и потребности небольших компаний и индивидуальных предпринимателей в разовых работах и заработках фриланс набирает популярность. Несмотря на кажущуюся доступность фриланса, многие новички с трудом осваиваются на биржах, уступая выгодные заказы более профессиональным конкурентам. Профессиональные фрилансеры быстро оценить объем и сложность заказа, что не силам новичкам, для которых опрометчивое согласие взяться за работу может вылиться в долгое сложное и неприбыльное взаимодействие с заказчиком. Также в связи с децентрализацией заказов многие фрилансеры вынуждены тратить время на обход нескольких бирж в поисках подходящих заказов. Некоторые биржи содержат фильтры заказов по общим категориям и бюджетам, однако, многим фрилансеры владеют более узким спектром навыков и им приходится вручную фильтровать неподходящие им заказы.

Назначение разработки

Функциональное назначение

Функциональные назначения программы:

  1. Предоставление пользователю списка агрегированных с фриланс-бирж заказов с возможностью применения различных фильтров по параметрам заказов;
  2. Предоставление пользователю расширенных атрибутов заказа: типа работ, сложности, используемых технологий - выявленных при анализе текста заказа и других агрегированных атрибутов.

Эксплуатационное назначение

Программа ориентирована на фрилансеров, людей, желающих заняться фрилансом и работодателей, нуждающихся в оценке затрат на различные типы работ с фрилансерами. Программа эксплуатируется на веб-сервере разработчика и поддерживается администратором. Веб-сервер предоставляет свободную регистрацию пользователей.

Требования к программе

Требования к функциональным характеристикам

Функции сборщика заказов:

  1. Сбор заказов с фриланс-бирж
  2. Предварительный парсинг заказов по указанным правилам

Функции нормализатора:

  1. Выявление значимых слов в заголовке и тексте заказа
  2. Определение типов значимых слов и их влияния на тип работ, технологии и сложность заказа

Функции анализатора заказов:

  1. Кластеризация заказов и прогнозирование бюджета

Функции отображения заказов:

  1. Отображение списка только что агрегированных заказов;
  2. Отображение списка обработанных заказов и полученной о них информации;
  3. Фильтрация заказов по диапазону бюджета, типам работ и ключевым словам.

Функции предоставления статистики:

  1. Отображение рейтинга типов работ
  2. Статистика типов работ, технологий и бюджетов
  3. Прогноз стоимости работ по типу, срокам и ключевым словам

Требования к составу и параметрам технических средств

В состав технических средств должен входить IВМ-совместимый персональный компьютер (ПЭВМ), выполняющий роль сервера, включающий в себя:

  1. Процессор тактовой частотой не ниже 500МГц;
  2. Оперативную память объемом не менее 128МБ;
  3. Жесткий диск объемом не менее 2 ГБ;
  4. Сетевую карту;
  5. Серверную ОС семейства UNIX;
  6. Веб-сервер nginx;
  7. Компилятор Python
  8. Сервер базы данных: MySQL Server;

или VPS с аналогичными характеристиками.

Требования к программной документации

Состав программной документации должен включать в себя:

  1. Техническое задание;
  2. Исходные коды;
  3. Руководство по установке и настройке ПО;
  4. Руководство пользователя.

Стадии и этапы разработки

  1. Стадии разработки:
  2. Разработка технического задания;
  3. Проектирование;
  4. Кодирование;
  5. Тестирование;
  6. Разработка программной документации.

Порядок контроля и приемки

Приемка осуществляется на основании проверки соответствия продукта техническому заданию. Проверка осуществляется путем анализа работы и исходных кодов программы.

Обзорно-анализитческачая часть

Обзор аналогов

Разработанная система не имеет аналогов, однако некоторые компоненты системы аналогичны существующим ресурсам. Одной из основных задач системы является сбор проектов с нескольких фриланс-бирж, что совпадает с задачей агрегаторов. Также целевая аудитория Lancery совпадает с аудиторией агрегаторов фриланс-бирж.

Flance.ru

  1. URL: http://www.flance.ru
  2. Описание: Один из первых агрегаторов русскоязычных бирж
  3. Достоинства: Большое количество бирж, сочетание агрегатора и фриланс-биржи (возможность публикации заказа на сайте)
  4. Недостатки: мало фильтров, не доделан каталог фрилансеров, непопулярный сайт.

All Lance

  1. URL: http://alllance.com/
  2. Описание: Агрегатор с возможностью уведомления о новых проектах. Есть фильтры категорий, бюджета. 18 бирж. Акцент на скорости оповещения о новых проектах.
  3. Недостатки: нет фильтрации закрытых проектов, нет анализа данных - только категории сайтов.

My Notifier

  1. URL: http://mynotifier.ru/
  2. Аналог All Lance, но категории бирж не связаны друг с другом.
  3. Недостатки: примитивная программа оповещения о новых проектов доступная только для ОС Windows.

webfreelance.ru

  1. URL: http://webfreelance.ru/
  2. Описание: попытка соединить систему проектирования и фриланс биржу (http://habrahabr.ru/blogs/personal/53253/ http://webfreelance.ru/why.html)
  3. Недостатки: не имел успеха, проект не завершен.

Writing Bids

  1.  URL: http://www.writingbids.com/
  2. Описание: поисковик по 30+ англоязычным фриланс биржам для копирайтеров и рерайтеров.
  3. Недостатки: Фильтры только по категориям, хотя агрегируется и бюджет, и много других параметров. Ограниченная тематика.

freelance-fm

  1. URL: http://www.freelance-fm.ru/our-services/freelance-projects/russian-projects/freelance-ru и прочие
  2. Описание: простой RSS-агрегатор без фильтров и других функций
  3. Недостатки: нет списка всех проектов всех бирж.


Анализ существующих инструментов фриланс-бирж и их агрегаторов

В настоящее время наиболее популярными источниками заказов для фрилансера являются непосредственно фриланс-биржи и агрегаторы нескольких фриланс-бирж. Основными критериями выбора источников заказов являются:

  1. Частота появления новых заказов;
  2. Актуальность новых заказов.

Говоря об актуальности новых заказов, имеются ввиду уже опубликованные заказы, доступные для ответа от фрилансеров, но имеющие еще менее 1-3 ответов от фрилансеров, то есть не имеющие потенциальных исполнителей. Именно благодаря развитию этих двух направлений, на российском рынке имеется две явно фриланс-биржи: Free-lance.ru и Weblance.net.

Однако как было ранее отмечено, существует еще порядка двух десятков небольших, локальных и смежных с фрилансом ресурсов, на которых появляются интересующие фрилансера предложения. За счет сбора информации со всех наиболее релевантных источников приобрели популярность агрегаторы. Одним из первых агрегаторов является Flance.ru, на данный момент постепенно перерастающий в фриланс-биржу благодаря возможности опубликовать проект непосредственно на данном веб-сервисе. Ключевое преимущество агрегаторов над фриланс-биржами обеспечивается за счет увеличения частоты появления новых заказов, которое в свою очередь обеспечивается увеличением количества источников информации. Актуальность новых заказов на агрегаторах обеспечивается частотой мониторинга фриланс-бирж.

Говоря об агрегаторах фриланс-бирж, стоит также стоит заметить, что в понятие актуальности новых заказов входит и возможность быстрой реакции на проект. Все существующие агрегаторы ограничиваются ссылкой на проект на бирже. При этом для публикации предложения на проект пользователю необходимо будет авторизоваться на бирже. Хотя многие биржи имеют функцию запоминания авторизации, они привязаны к конкретному компьютеру или браузеру. Это обстоятельство делает затруднительным публикацию ответа, например с мобильного телефона. Кроме того большинство бирж не имеют мобильной версии, что также увеличивает столь критичное время публикации ответа на проект.

Также важным инструментом является система поиска заказов определенной тематики. Большинство бирж снабжены системой категорий, позволяющих в большинстве случаем удовлетворить фрилансера, занимающегося определенной областью задач. Однако фриласнер-новичок обычно владеет лишь несколькими технологиями, что затрудняет поиск интересующих его заказов внутри общей категории. Ни один из крупных фриланс-бирж и агрегаторов не оснащен поисковой системой, благодаря чему, поиск интересующих проектов и составление статистики или тенденций затруднены, либо возможны только с помощью сторонних ресурсов (поисковых систем, проиндексировавших большую часть проектов).

Одной из проблем, которые отпугивают значительную часть фрилансеров-новичков, является ценообразование для фриланс-проектов. Большинство заказчиков и исполнителей не могут точно определить стоимость работ по проекту, что затем пагубно сказывается на качестве работы и ее итоговой стоимости. Большинство бирж не требует четкого указания бюджета проекта, оставляя его расчет на усмотрение исполнителя. Неопытный фрилансер часто не в силах назвать даже примерную цену за данный тип работ. Такая тенденция способствует демпингу или искусственному завышению цен. Ни один из фриланс-бирж и агрегаторов не предоставляет инструментов прогнозирования бюджета, хотя имеет крупную базу проектов, где бюджет был определен заказчиком. Использование истории проектов, отслеживание тенденций роста спроса на различные типы услуг и применяемые технологии можно использовать для прогнозирования бюджета проекта. Таким образом, обеспечивается, если не точная сумма, то хотя бы цена, основанная на бюджетах максимально схожих проектов, от которой заказчик и исполнитель могут отталкиваться.

Таким образом, для создания конкурентоспособной системы достаточно решить следующие задачи, не решенные на данный момент аналогами:

  1. Индексация проектов на самом ресурсе с выделением ключевых слов для обеспечения узкоспециализированного поиска;
  2. Возможность отправлять ответ на биржу, используя один и тот же интерфейс (как правило, рассчитанный на мобильные устройства);
  3. Инструмент прогнозирования бюджета, который дает хотя бы примерную оценку на основании имеющихся в системе проектов.

Методы и средства сбора информации с веб-ресурсов

Большинство веб-сайтов имеют различную структуру и свои особенности верстки. Получение данных из определенных информационных блоков часто подразумевает написание индивидуальных правил синтаксического анализатора (парсера) или сложного анализа множества страниц веб-сайта для определения зон информационных блоков.

Однако существует семейство XML-форматов, использующихся большинством сайтов для сообщения о новом содержимом. RSS (Really Simple Syndication или RSS 2.x) является наиболее популярным имеющим спецификацию форматом передачи информации о новом контенте. Таким образом, нет необходимости индивидуального подхода к семантическому анализатору каждого сайта, достаточно анализировать текст по правилам RSS.

Особенности форматов RSS-каналов фриланс-бирж

Основным элементом RSS-канала являются блоки <item>, использующиеся для хранения последней поступившей на сайт объектов информации. Данные блок содержит следующие подблоки:

  1. title - заголовок объекта
  2. link - ссылка на объект на сайте
  3. description - тизер или полный текст содержимого объекта
  4. pubDate - дата публикации на сайте

Говоря о проектах, агрегируемых через RSS с фриланс-бирж, стоит заметить, что спецификация не содержит важного для проекта поля задания бюджета. Хотя использование RSS-каналов для получения новых проектов существенно упрощает семантический анализ, требуется дополнительный индивидуальный анализ для выявления бюджета проекта. Большинство бирж передают бюджет в RSS-элементах разными способами и в разных подблоках item. Например, Free-lance.ru передает бюджет проекта в скобках подблока title, Weblance.net передает бюджет в подблоке description.

На сегодняшний день существуют XML-парсеры для большинства ЯВУ. Одним из наиболее эффективных и простых в использовании для Python является BeautifulStoneSoup.

Оперативность агрегации для различных источников

Одним из ключевых моментов агрегации проектов является своевременный сбор новой информации. На сегодняшний день существует две крупные русскоязычные фриланс-биржи, скорость появления новых проектов, на которых составляет более 20 проектов в час. Однако существует еще около 15 менее популярных фриланс-бирж. Для своевременной агрегации проектов популярных бирж достаточно обращаться к их RSS-каналам раз в минуту. Нет смысла делать это же для других менее популярных бирж. Бесполезные обращения к каналам увеличивают исходящий трафик сервера. Поэтому при агрегации нескольких источников различной частоты обновляемости следует использовать систему таймеров, которая обращалась бы к каждому источнику с частотой прямо пропорциональной частоте его обновления.

Методы и средства нормализации текстовых документов

Основным методом нормализации текстового документа является составление векторной модели документа. То есть определение термов (значимых частей слов) как атрибутов объекта (документа) и сопоставление каждому атрибуту значения веса терма, полученному в результате определения значимости данного терма. Основными факторами, влияющими на значимость терма в документе, являются:

  1. положение слова в документе,
  2. частота употребления всех различных форм терма в документе,
  3. процент документов во всей коллекции, где встречается данный терм,
  4. часть речи терма,
  5. регистр терма (аббревиатуры).

Наиболее популярным методом комплексного определения веса терма является составление коэффициентов влияния каждого фактора на конечный вес. Коэффициенты влияния умножаются на соответствующие значения для каждого уникального терма в каждом документе, и затем полученные значения умножаются, образуя окончательный вес данного терма в данном документе.

Метрика взвешивания термов tf-idf

Традиционной метрикой для определения веса терма в документе является метрика tf-idf. При определении веса эта метрика учитывает следующие факторы:

  1. частота употребления всех различных форм терма в документе,
  2. процент документов во всей коллекции, где встречается данный терм.

Формула определения веса слова по данной метрике выглядит следующим образом:

(1)

где tf (term frequency) – частота терма в документе, а idf (inverse document frequency) – обратная документная частота, вычисляемая по формуле:

(2)

где N – количество всех документов в коллекции, а df – количество документов, в которых встречается терм t.

Свойства данной метрики наиболее хорошо подходят для определения важности слов в документах на естественных языках. Эта метрика обладает следующими свойствами:

  1. Максимальное значение получается, если терм встречается часто всего в нескольких документах большой коллекции.
  2. Минимальное значение получается, если терм встречается практически в каждом документе (по сути является стоп-словом, см. ниже).
  3. Значение уменьшается, если терм встречается немного раз в большом количестве документов.

Данная метрика широко применяется в поисковых системах для ранжирования документов. Благодаря тому, что при вычислении данной метрики каждый уникальный терм каждого проекта имеет числовую оценку значимости. Это делает доступным такую функцию, как определение максимальной общей значимости определенного терма двух документов, что в свою очередь дает возможность модифицировать метрику Жаккара, сравнивающую близость двух проектов.

Зоны документа

Большинство текстовых документов имеют зоны, важность термов в которых различается между собой. Прежде всего, речь идет о заголовках. Говоря о проектах, агрегированных с фриланс-бирж, эмпирически можно заметить, что в заголовке обычно содержится информация о типе и объекте работ.

Исследование собранных с бирж проектов также выявило, что списки являются важной зоной текстовых сообщений. Наиболее часто в списках содержатся конкретные требования к исполнению проекта и технологии, которые предпочтительно применять.

Также следует заметить, что при определении ключевых слов проектов, нет смысла учитывать контактную информацию заказчика. Контакты можно было бы использовать для группировки проектов от одного автора, но целью последующего анализа является тематическая кластеризация, поэтому контактная информация создает дополнительный шум, мешая четкому разбиению на кластеры. В большинстве случаев, контактная информация располагается в тексте проекта отдельным абзацем или несколькими абзацами, содержащими слова, позволяющие  заявить с большой вероятностью, что абзац полностью состоит из контактной информации. Примерами таких слов могут служить “ICQ”, “мейл”, “skype”.  Следует также заметить, что в большинстве случаев контактная информация располагается в последних абзацах. Учет этого факта повышает вероятность верного определения данного типа зоны документа. Зонам документа, содержащим только контакты, проставляется значимость 0 и в дальнейшем термы этих зон не рассматриваются.

Леммизация и стемминг

Русский язык, как и большинство других естественных, содержит много аффиксов, то есть изменяемых частей слова, не оказывающих большого влияния на смысл. К аффиксам относятся окончания, некоторые приставки и суффиксы. Так как для машины два однокоренных слова с разными окончаниями являются разными, а для определения частоты терма в документе их следует учитывать как одно, требуется дополнительный анализ аффиксов слова.

Существует две методики приведения слов схожих по смыслу к единому виду: стемминг и леммизация. Стремминг последовательно отрезает от слова, не меняющие смысл части (окончание, некоторые суффиксы и приставки). Леммизация на основе базы правил приводит слово в нормальную форму (им. п., ед. ч. м.р. или инф.).

Достоинством стемминга по сравнению с леммизацией является скорость работы. Однако результатом работы стемминга является значимая часть слова, которая воспринимается человеком значительно хуже, чем слово в нормально форме. В данной работе при определении ключевых слов используется леммизация, результаты которой используются для отображения ключевых слов проекта.

На сегодняшний день существует всего один развитый леммизатор русского языка от рабочей группы Aot.ru. Помимо русского языка данный леммизатор имеет библиотеку для работы с английским.

Влияние части речи и языка на значимость терма

Коэффициент значимости слова также зависит и от части речи. Большинство частей речи не несут в себе смысл и лишь связывают другие слова в предложении или дополняют их.

Наиболее значимой частью речи с точки зрения задачи определения ключевых слов является имя существительное. В текстах проектов оно может содержать наиболее значимую информацию, характеризующую проект:

  1. название объекта работ (примеры: “логотип”, “игра”);
  2. наименование технологий, которым отдается предпочтение (примеры: “битрикс”, “делфи”);
  3. тип работ (примеры: “доработка”, “продвижение [сайта]”).

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

Глаголы также часто схожи по значимости именам существительных. Наиболее явно это выражается в том, что тип работ может быть задан как существительным так и глаголом (примеры: “доработать”, “напрограммировать”). Тип работ является практически единственной характеристикой, которую задают глаголы в тексте. Глаголами в тексте также являются слова, связанные с контактной информацией (примеры: “писать”, “звонить”), однако, большая их часть отсекается на этапе анализа значимости зон документа. Также глаголы могут быть малоинформативными (примеры: “сделать”, “пользоваться”), но таких слов значительно меньше, чем в аналогичной ситуации с именами существительных, поэтому их несложно добавить в список стоп-слов. Учитывая эти факты, можно сделать вывод, что при определении коэффициента значимости глагола следует учитывать малый шум и поэтому коэффициент значимости глагола должен быть примерно равным или чуть выше, чем у имени существительного.

Имена прилагательные являются третьими по значимости, как в поисковой оптимизации, так и при анализе смыслового содержания текста. В случае фриланс-бирж, имена прилагательные часто являются значимыми дополнениями. Наиболее ярко это выражено в проектах, связанных с переводом текстов (например, “англо-русский” или просто “английский” и “русский”). Наиболее часто встречаемая роль  прилагательных – уточнение малоинформативных существительных. В качестве примера можно привести словосочетание “фирменный стиль”. Хотя слово “стиль” часто употребляется с данным прилагательным, далеко не всегда встреченное слово говорит о дизайне фирменного стиля (стиль может относиться, например, к таблицам каскадных стилей или стилем текста). Таким образом, если у двух проектов ключевым словом будет “стиль”, то велика вероятность ошибочного определения их близости. Если же ключевыми словами проектов станут слова устойчивого выражения, более четко характеризующие эти проекты, то и мера их близости будет определяться корректнее. Следует также заметить, что информационный шум среди прилагательных крайне высок. Достаточно часто употребляются слова схожие по смыслу с “красивый” и “профессиональный”. Так как количество подобных слов велико, решить проблему добавлением их в список стоп-слов трудно.  На основании этого коэффициент значимости выставляемый прилагательным не является таким же высоким, как у глаголов и имен существительных, однако учитывать эту часть речи также важно.

Изложенный выше анализ рассматривает только слова русского языка, а так как тексты проектов часто содержат англоязычные термины, следует рассматривать их отдельно. Практически всегда они являются названиями технологий (пример: “Python”, “nginx”).  Исключением может является текст проекта полностью составленный на английском, но такие случае единичны на русских фриланс-биржах, поэтому специальные средства их анализа в данной работе не используются. Так как названия технологий достаточно четко характеризуют проект для фрилансера, коэффициент англоязычным словам выставляется больше чем существительным.

Стоп-слова

Стоп-слова – слова, которые встречаются в текстах достаточно часто, но никак не характеризуют его. Стоп-слова создают шум, мешающий дифференциации документов. Рассмотренные выше методы частично очищают текст от подобных слов. Однако в случае фриланс-бирж такими слова могут быть существительные и глаголы, встречающиеся в небольшом количестве документов. Примерами таких слов могут служить: “сделать”, “требование”, “красивый”.

Наиболее простым и эффективным способов избавления от стоп-слов является составление списка. Благодаря тому, что отсечение стоп-слов проводится последним этапом, список обычно содержит менее сотни элементов и может быть ориентирован под конкретные задачи последующего анализа.

Векторная модель документа

Итогом нормализации является представление текстового документа (в данном случае проекта) в виде векторной модели. В векторной модели объект обладает атрибутами соответствующими уникальным термам документа, а значения этих атрибутов соответствуют значимости слова для данного документа. Векторной данная модель называется так как термы рассматриваются как векторы в пространстве, размерность которого равна количеству уникальных термов, а длины этих векторов равны соответствующему значению значимости терма.


Методы интеллектуального анализа текстовых документов

Для прогнозирования значений таких атрибутов проекта как бюджет необходимо рассмотрение всей коллекции документов. При анализе текстовых документов, как правило, используются полученные в ходе предварительной подготовки векторные модели документов. В качестве представления проекта в виде векторной модели в данной работе используется результат работы нормализатора, то есть список ключевых слов со значениями их важности в качестве длины вектора.

Кластеризация и классификация текстовых документов

Для определения некоторых неизвестных свойств объектов в некоторой коллекции чаще всего применяются такие методы интеллектуального анализа как классификация и кластеризация. Классификация распределяет объекты по заранее заданным классам на основании результатов работы кластеризатора. Кластеризатор в свою очередь строится на основе обучающей выборки, из которой возможно построить некоторые правила отнесения объекта к тому или иному классу. Процесс создания классификатора называется обучением с учителем. Задачей кластеризации является получение групп объектов, где объекты в каждой группе максимально схожи друг с другом, а также объекты разных групп максимально различны между собой. Для кластеризации не требуется заранее описывать характеристики возможных групп. Такой вид интеллектуального анализа данных относится к категории обучение без учителя.

В данной работе в задачу анализатора сходит прогнозирование бюджета проекта, поскольку не во всех проектах он изначально задан. Бюджет является числовой характеристикой, поэтому трудно заранее описать все возможные значения как классы и построить классификатор, основываясь на проектах, где эти значения встречаются. В случае использования кластеризации для группировки схожих проектов есть возможность проанализировать бюджеты проектов находящиеся в одном кластере и прогнозировать бюджеты проектов этого же кластера, если они не заданы. Такой подход избавит от необходимости:

  1. определять возможные все классы объектов,
  2. обучать алгоритм.

Недостатком кластеризации является слабая по сравнению с классификацией масштабируемость, обеспеченная рассмотрением множества попарных значений метрик сравнения объектов или кластеров.

Для построения кластеризатора требуются:

  1. Метрика сравнения близости двух объектов;
  2. Алгоритм распределения или перераспределения объектов по кластерам.

Наиболее простыми с точки зрения вычислительной сложности алгоритмами кластеризации являются иерархические, в процессе которых строится иерархия распределения объектов по кластерам. Подклассом иерархических алгоритмов являются агломеративные. В алгоритмах данного класса изначально каждый объект представляет собой кластер, а на каждом шаге происходит объединение двух наиболее близких кластеров в один. Цикла продолжается пока в наборе кластеров есть те, чья близость достаточна для слияния в один кластер.

Особенности текстовых данных

Говоря о кластеризации текстовых документов, следует учитывать особенности объектов, получаемых при преобразовании документов в векторную модель. Основными проблемами моделей построенных из текстов на естественных языках являются:

  1. Неоднородность: так как количество различных слов в разных документах варьируется, часто трудно сравнить два документа, если в них мало общих слов;
  2. Множество атрибутов: количество слов в документе может быть достаточно велико, из-за чего объект будет иметь множество атрибутов, для многих метрик большое количество атрибутов увеличивает время вычислений и точность.
  3. Сленг: естественные языки имеют множество слов схожих по смыслу, но имеющих различную основу, что затрудняет ассоциацию между такими словами при интеллектуальном анализе.

Решение данных проблем возложено в большей части на метрику близости двух объектов. Однако решение проблемы сленга возможно только при рассмотрении нескольких документов, что происходит при кластеризации, поэтому последнюю проблему решает алгоритм кластеризации.

Метрики близости двух документов

Для корректного определения соседства между двумя объектами, представленными векторными моделями документов необходимо учитывать первые две особенности, рассмотренные в предыдущем разделе.

В модели документа все атрибуты являются числовыми, то есть с их значениями, возможно, проводить те же операции, что и с рациональными числами. Традиционным подходом к определению близости двух объектов определенных числовыми атрибутами является Евклидово расстояние. Это расстояние вычисляется по формуле:

(3)

где и - координаты точек a и b по признаку i. В данном случае значимость терма i в документах a и b. Однако эта метрика некорректно работает с объектами, содержащими различные наборы атрибутов, что характерно для текстовых документов. Например, есть три объекта данных представленных в виде следующих векторов:

A = (1,0,0,0,0) B = (0,0,0,0,1) C = (1,1,1,1,0)

Вычислив Эвклидово расстояние, получаем:

|A-B|= |A-C|= |B-C|=

Хотя объекты А и В не имеют общих атрибутов, по данной метрике они ближе чем объекты А и С.

Более правдоподобный результат сравнения двух объектов получается при использовании метрики Жаккара. Эта метрика применяется в биологии для определения степени сходства видового состава двух растительных сообществ или зооценозов. Следует отметить некоторое сходство в описании зооценоза и представлении текстового документа в виде векторной модели. Метрика схожести двух объектов по Жаккарду вычисляется следующим образом:

(4)

где A и B – множества атрибутов объектов a и b соответственно. При таком подходе учитывается различие атрибутов двух объектов, что существенно повышает верность определения близости. Для подтверждения этого достаточно посчитать коэффициенты близости для рассмотренного выше примера:

sim(A,B)=0 sim(A,C)=1/5 sim(B,C)=0

Однако при вычислении коэффициента Жаккара числовые атрибуты рассматриваются как булевые. Становится важным лишь наличие или отсутствие определенного атрибута у объекта. При этом не учитывается значимость этого атрибута. В случае сравнения текстовых документов это приводит к тому, что менее значимые атрибуты создают большой информационный шум и близость двух любых объектов практически минимальна.

Для решения этой проблемы была модифицирована метрика Жаккара так, чтобы она учитывала и значимость атрибута в документе. Для этого при подсчете пересечения множеств атрибутов двух объектов вычисляется максимальная общая сумма значений общих атрибутов, а в качестве объединения сумма всех значений всех атрибутов двух объектов. При таком подходе атрибуты, встречающиеся в обоих документах, но чья значимость невелика не создают такого большого шума как в случае булевых атрибутов.

Алгоритм ROCK

Одним из наиболее эффективных алгоритмов кластеризации, ориентированных на неоднородные данные с большим количеством атрибутов является ROCK (Robust Clustering using Links). Алгоритм ROCK является агломеративным, иерархическим. Это означает, что изначально каждый объект образует единичный кластер, а в цикле кластеризации сливаются наиболее близкие, пока не будут выполнены заданные условия остановки цикла или не останется кластеров достаточно близких, чтобы быть объединенными. Основная идея алгоритма в рассмотрении не меру, основанную не на степени соседства двух объектов, а на количестве общих соседей двух объектов. Таким образом, алгоритм решает сразу две важнейшие проблемы, выявленные при анализе коллекций текстовых документов:

  1. Выявление одинаковой информации изложенной разными способами (заданной разными атрибутами)
  2. Борьба с выбросами, то есть объектами, имеющими слишком много атрибутов не встречающихся в других объектах, либо наоборот встречающимися практически в каждом.

Хотя при подготовке к кластеризации тратится в 1.5 раза больше времени, чем при подготовке к более популярному алгоритму ближайшего соседа, ROCK выигрывает время в процессе кластеризации. Благодаря тому, что в основе метрики близости двух кластеров используется количество общих соседей, при слиянии двух кластеров достаточно сложить соответствующие значения ссылок с с другими кластерами, что происходит значительно быстрее, чем пересчет матрицы близости в случае алгоритма ближайшего соседа.

Хотя в основе сравнения близости двух объектов лежит количество общих соседей, метрика также требует нормализации. В работе, в которой описан алгоритм ROCK, предлагается использовать функцию прогнозирования количества ссылок (общих соседей). Однако в случае текстовых документов, эту функцию сложно описать достаточно точно. Функция прогнозирования будет зависеть от среднего количества уникальных слов в документе. Однако количество уникальных слов от текста к тексту сильно варьируется. В качестве нормализации в итоговой метрике возможно использование функции Жаккара. Это позволяет сохранить простоту вычисления ссылок новых кластеров с остальными и избавит от трудностей подбора функции прогнозирования и ее предполагаемых сложных вычислений.


Технологическая часть

В данной работе использовались некоторые готовые инструменты для разработки и выполнения базовых функций. Следует отметить, что в обоих случаях предпочтение было отдано свободному программному обеспечению, что позволило избежать дополнительных затрат на ПО.

Обзор инструментов разработки

IDE gedit

В качестве основного инструмента разработки использовался свободный текстовый редактор gedit предоставляющий все необходимые средства для программирования на языке Python. В совокупности с имеющимися к gedit плагинами функционал редактора сравним с IDE. Основные преимущества gedit обеспечившие комфортную работу над проектом:

  1. Подсветка синтаксиса языка Python
  2. Инструменты для работы с отступами (крайне важно в Python, так как позволяет быстро формировать блоки нужного уровня вложения)
  3. Интеграция с системой контроля версий svn

Интерактивная оболочка IPython

Для тестирования и отладки различных компонентов системы применялась интерактивная оболочка IPython. Она позволяет в реальном времени вводить и сразу же исполнять команды Python, тем самым проверяя работоспособность модулей и отдельных функций вне общего комплекса. Также фреймворк Django оснащен встроенным интерпретатором Python, позволяющим также тестировать код, написанный с помощью фреймворка не запуская для этого веб-сервер.


Обзор используемых компонентов

Модуль парсинга XML-документов BeautifulStoneSoup

Модуль BeautifulStoneSoup разработанный Леонардом Ричардсоном является наиболее популярным инструментом для обработки XML и HTML документов. Модуль написан для использование на языке Python, что позволило его легко интегрировать в разработанный комплекс и использовать для разбора RSS-каналов.

Основными функциями модуля, которые используются в данной работе, являются:

  1. Представление документа в виде иерархического списка объектов на основании правил XML-разметки;
  2. Получение содержимого определенного элемента документа в удобном для дальнейшей работы виде.

Фреймворк Django

Django – самый популярный фреймворк для создания веб-приложений на Python. Так как в данной работе общение пользователя с системой происходит через веб-интерфейс, Django был выбран как имеющий полный функционал для написания и последующей легкой модификации представлений и элементов контроля сервиса пользователем.

Основными достоинствами фреймворка являются:

  1. Стандартная архитектура MVC;
  2. ORM и API для работы с базой, позволяющие легко создавать сложные запросы к реляционной БД;
  3. Диспетчер URL на основе регулярных выражений, позволяющий создавать так называемые человекпонятный URL;
  4. Встроенная система защиты от XSS-атак и SQL-инъекций.

Эмулятор браузера Mechanize

При разработке системы быстрого реагирования на проект был использован эмулятор браузера Mechanize. Основными достоинствами этого эмулятора является:

  1. самостоятельное составление заголовков HTTP сообщений,
  2. разбор HTML страниц,
  3. поиск и заполнение форм на странице.

Благодаря функционалу данного эмулятора, модуль быстрой реакции легко справляется со своими обязанностями и в случае изменения структуры сайта фриланс-биржи потребует минимум времени для адаптации под новую.

Разработка

Общая структура разработанного комплекса

Схема разрабатываемого комплекса представлена на Рисунке 1.

Рисунок 1: Структура комплекса Lancery

Основными компонентами комплекса являются:

  1. Агрегатор
  2. Нормализатор
  3. Кластеризатор
  4. Веб-интерфейс, включающий:
  5. Инструменты фильтрации проектов
  6. Систему оперативной реакции

Первые три компонента реализованы на языке Python, что позволяет экономно использовать системные ресурсы. Веб-интерфейс реализован на фреймворке Python Django, что позволяет быстро дописать новый функционал, не тратя много времени на освоение структуры движка.

Основной задачей агрегатора является обход RSS-каналов бирж, парсинг новых проектов и занесение их в базу данных. Агрегатор запускается каждую минуту с помощью планировщика Cron. После запуска на основании данных о биржах, заданных администратором, определяется список бирж, которые нужно обойти в этот раз. Агрегированные проекты записываются в БД и помечаются как новые.

После завершения работы аргегатора планировщик Cron запускает нормализатор, основной задачей которого является перевод новых проектов векторную модель документа. Нормализатор производит выборку содержимого из текстовых полей таблицы проектов (описание, заголовок, категории на бирже), выявляет из текстовых блоков ключевые слова и их значимость для каждого конкретного проекта и записывает результат в БД при этом пометка «новый» снимается.

Кластеризатор запускается раз в час и анализирует нормализованные проекты за последние 24 часа. Основной задачей кластеризатора является прогнозирование бюджета проекта на основании проектов, максимально близких по ключевым словам с данным (находящимися в одном кластере), в которых бюджет уже задан. Результаты кластеризации и прогнозирования записываются в БД в таблицу проектов.

Основной задачей веб-интерфейса является предоставление пользователю инструментов работы с агрегированными проектами, выявленными свойствами этих проектов (ключевые слова и бюджет), а также оперативной реакции на проект. В веб-интерфейсе предусмотрены следующие виды фильтрации:

  1. список проектов с бюджетом в заданном диапазоне,
  2. список проектов содержащих определенное ключевое слово,
  3. список кластеров, сформированных при последней кластеризации.

Также предусмотрена возможность быстрого вызова формы ответа на проект. Данная система, эмулируя веб-браузер, пытается авторизоваться на бирже, с которой взят проект под авторизационными данными, оставленными пользователем заранее или указанными непосредственно в форме системы оперативной реакции. В случае успеха авторизации система пытается отправить ответ на выбранный пользователем проект на бирже.

В качестве front-end сервера выбран nginx как наиболее быстрый проксирующий сервер. В задачу nginx также входит типичная для него обработка запросов на статические файлы. В качестве back-end сервера выбран FastCGI-сервер Django, предоставляемый одноименным фреймворком. Выбор обусловлен скоростью работы интерфейса в сочетании с простотой разработки приложений с помощью фремйорка Django.


Структура и алгоритм работы агрегатора

Структура агрегатора

Агрегатор состоит из двух компонентов: сборщик проектов с бирж и модуль,  содержащий классы с индивидуальными для каждой биржи правилами разбора элементов RSS-канала. В качестве разборщика XML-документа используется библиотека  BeautifulStoneSoup, что обеспечивает простой доступ к любым полям элемента RSS-канала. Агрегатор добавляет информацию о новых проектах в таблицу БД project_project, имеющую следующие поля: идентификатор источника (фриланс-биржи), заголовок, описание, список категорий проекта на бирже, ссылка на проект на бирже, дата публикации на бирже, бюджет, валюта бюджета. Поле ссылка содержит только уникальные значения для того чтобы избежать повторной обработки уже добавленных проектов.

Алгоритм работы агрегатора

При запуске агрегатор выполняет следующие действия:

  1. Программа загружает необходимые для работы модули, в том числе модуль, содержащий индивидуальные правила разбора.
  2. Программа загружает из таблицы БД информацию о биржах. Следующая информация о бирже используется в агрегаторе:
  3. URL RSS-канала биржи,
  4. название класса, отвечающего за индивидуальные правила разбора,
  5. коэффициент частоты обновления биржи.
  6. Программа на основании коэффициентов частоты обновления бирж составляет список бирж, которые нужно обойти в данный момент.
  7. Для каждой из бирж, которые нужно обойти, выполняется следующая последовательность действий:
  8. Программа пытается загрузить RSS-канал биржи. В случае недоступности сервера биржи программа переходит к обработке следующей биржи.
  9. Загруженную с RSS-канала информацию программа обрабатывает с помощью библиотеки BeautifulStoneSoup. Главной задачей этого этапа является составление списка объектов класса BeautifulStoneSoup на основе item, что позволит в дальнейшем проще обращаться к атрибутам элементов item.
  10. Программа последовательно передает элементы item классу, отвечающему за индивидуальные правила разбора биржи, к которой он относится. Класс возвращает объект, содержащий помимо стандартных атрибутов, составленных на основе атрибутов item, бюджет, валюту и категорию проекта на бирже. Также, если требуется, производится удаление лишней информации (бюджет, категория) из блоков описания и заголовков.
  11. Программа последовательно записывает полученные объекты в БД.

Классы правил обработки биржи

Модуль, содержащий правила индивидуального разбора элементов бирж содержит классы, имена которых совпадают со значениями соответствующего поля в таблице, содержащей информацию о биржах. Каждый класс независим от других, что позволяет добавлять и изменять правила разбора определенной биржи без необходимости менять что-то в других классах. Каждый класс содержит функцию  parseitem, которая принимает элемент класса  BeautifulStoneSoup в качестве аргумента. Задачей этой функции является выделение бюджета и валюты проекта, а также в случае необходимости, категорий проекта, заданных на бирже. Результаты работы функции записываются в атрибуты класса биржи и соответствуют полям в таблице БД, хранящей агрегированные проекты.

Индивидуальные правила разбора в функции  parseitem выполнены с помощью задания регулярных выражений. Для их построения и использования используется стандартный модуль Python re. Пример регулярного выражения:

ur'Категория\:(?P<cat>(.*))Бюджет\: \<b class\=\"[a-z0-9_\-]+\">(?P<price>[^<]+)(?P<cont>(.*))'

Данное выражение применяется для выделения категории (cat) и бюджета (price) проекта из его описания. Также в примере выделяется отдельно и описание (cont), таким образом, атрибут очищается от лишней информации, которая содержится в других атрибутах.

Благодаря такой дополнительной обработке в системе есть возможность производить выборку по диапазону бюджета проектов разных бирж, чего не предоставляет ни один из существующих агрегаторов фриланс-бирж.

Структура и алгоритм работы нормализатора

Структура нормализатора

Нормализатор служит для последовательной обработки проектов с целью преобразования проекта в векторную модель документа. Нормализатор содержит классы Project и Term отвечающие за работу с проектом и словами (термами), выделенными из текстовых атрибутов проекта, соответственно. Нормализатор использует модуль pymorphy для леммизации термов с помощью правил леммизации Aot.ru.

Класс Project содержит идентификатор проекта и список объектов класса Term, которые выделяются из текстовых атрибутов проекта. Также этот класс содержит функцию getTerms, которая занимается непосредственно выделением блоков важности из текстовых атрибутов проекта и затем преобразование этих блоков в список термов. Также в задачу этой функции входит определение базового значения важности для термов в блоке определенной важности. Программа разделяет следующие зоны важности: заголовок, список категорий проекта, абзац текста в описании проекта, список в описании проекта, блок контактной информации.

Класс Term содержит терм и значение его важности. Основной задачей данного класса является определение важности слова вне контекста. Класс содержит функции wordType и wordNorm служащие для определения типа слова и его нормализации соответственно. Функция  wordType различает следующие типы слов: слово, составленное из русского алфавита, слово из латинского алфавита, число, аббревиатура. В зависимости от типа слова данному объекту класса Term присваивается различный счет.  Функция wordNorm используя леммизатор Aot.ru пытается определить для слов, составленных и русского или латинского алфавитов, часть речи и нормальную форму. В зависимости от части речи также меняется значение важности данного объекта терма. К частям речи, имеющим ненулевой коэффициент счета, относятся имена существительные, имена прилагательные и глаголы.

Нормазиатор взаимодействует с таблицами БД:

  1. Таблица проектов project_project, из которой производится выборка текстовых атрибутов для последующей нормализации.
  2. Таблица уникальных термов системы project_term с указанием идентификатора терма и количества проектов, в которых он встречается хотя бы один раз (популярность).
  3. Таблица векторной модели проекта project_termstat, содержащая идентификатор проекта, идентификатор терма и значение важности данного терма в проекте.

Алгоритм работы нормализатора

При запуске нормализатор выполняет следующие шаги:

  1. Производится выборка идентификаторов ненормализованных проектов из БД. Ненормазиованными проектами считаются проекты, для которых векторная модель документа не содержит ни одного вектора. Запрос к БД выглядит следующим образом:

SELECT `id` FROM `%(pref)sproject` where not exists (select `id` from `%(pref)stermstat` where `project_id`=`%(pref)sproject`.`id`)

Таким образом программа получает список идентификаторов проектов, требующих нормазиацию.

  1. Затем поочередно производится выборка текстовых атрибутов проектов.
  2. Программа создает объект класса Project принимающий для инициализации текстовые атрибуты проекта: заголовок, список категорий и описание.
  3. Описание проекта разделяется на блоки. Разделителем является символ переноса строки.
  4. Для каждого блока производится попытка определить его тип и соотнести каждому блоку базовое значение важности для его термов. Программа распознает три типа:
  5. элемент списка,
  6. контактная информация,
  7. обычный текст.

Так как контактная информация скорее всего не содержит потенциальных ключевых слов, в дальнейшем такие блоки не рассматриваются и их базовое значение важности равно нулю.

Как было отмечено ранее, списки зачастую содержат потенциальные ключевые слова, поэтому базовое значение важности элементов списка выше, чем у простого блока текста. Для определения элемента списка используется регулярное выражение:

ur"(\*|\-|[0-9]+(\.|\)))(.*)"

  1. К списку выявленных из описания проекта блоков текста и базовых  значений их важности добавляются заголовок с и категории.
  2. Каждый блок текста разделяется последовательности символов русского и латинского алфавитов, а также цифр. Для каждой выявленной последовательности от 2 до 20 символов создается объект класса Term. При инициализации каждого объекта программа выполняет следующие действия:
  3. Запускается функция wordType, которая составляет статистику символов в слове, распределяя их по классам: заглавная русская или латинская буква, строчная русская буква, строчная латинская буква, цифра. Исходя из этой статистики определяется тип слова по следующим правилам:

Если количество цифр в слове равно 100%, то тип данного слова — число. Если количество заглавных букв латинского алфавита более чем в 2 раза превосходит количество строчных латинских букв или количество заглавных букв русского алфавита более чем в 2 раза превосходит количество строчных букв русского алфавита, то тип данного слова — аббревиатура. Если количество заглавных букв латинского алфавита меньше чем количество строчных латинских букв, то тип слова — англоязычное слово. Если количество заглавных букв русского алфавита меньше чем количество строчных русского букв, то тип слова — русскоязычное слово.

  1. Исходя из выявленного на предыдущем шаге типа производятся различные действия. В случае, если тип слова — число, то его важность равна нулю и данный терм более не рассматривается. Если тип слова — аббревиатура, то в список термов проекта записывается данное слово без изменений, а его значимость умножается на соответствующий коэффициент значимости аббревиатур, заданный администратором. Если тип слова русское или английское слово, то проводится леммизация данного слова.
  2. На этапе леммизации загружаются словари словообразовательных правил русского или английского языка Aot.ru. После этого программа пытается найти нормальную форму слова и определить часть речи. В случае неудачи дальнейшая работа с термом не проводится и он не рассматривается. В случае если часть речи является: именем существительным, именем прилагательным или глаголом, терму приписываются соответствующие значения коэффициентов важности, заданные администратором, а сам объект терм добавляется в список термов проекта.
  3. На следующем этапе вычисляется метрика tf (частота употребления) для каждого терма в документе.
  4. Итоговым значением важности является произведение базового значения блока текста, значения выявленного функциями класса  Term, а также значения  tf.
  5. После этого список термов данного проекта заносится в БД. При этом выполняется следующая последовательность действий:
  6. Программой выполняется попытка записать терм в таблицу уникальных термов со значением популярности равным одному. В случае неудачи происходит обновление популярности (увеличение на единицу) у соответствующей записи в таблице. Выполнение этого помимо учета популярности терма также дает гарантию его существования в БД, что позволяет избежать проверки на следующем шаге.
  7. Программа записывает терм и значение его важности для данного документа в таблицу векторных моделей проектов. При этом терм записывается идентификатором из таблицы уникальных термов.
  8. Запрос в БД выглядит следующим образом:

INSERT INTO `%(pref)stermstat` (`term_id`,`project_id`,`score`) VALUES((SELECT `id` FROM %(pref)sterm WHERE term='%(term)s' LIMIT 1),'%(project)s','%(score)s')


Структура и алгоритм работы кластеризатора

Структура кластеризатора

Основными задачами кластеризатора являются: группировка наиболее схожих по типу работ и  требованиям к используемым технологиям проектов, прогнозирование бюджета проекта на основании полученного распределения проектов по группам.

Нормализатор содержит классы Term, Item и Cluster, которые используются для представления и работы с термами, проектами и кластерами соответственно. Класс Term содержит функцию compIdf, используемую для вычисления метрики idf-tf. Класс Item хранит идентификатор проекта и его векторную модель. Класс Cluster содержит идентификатор кластера, список объектов класса Point, содержащихся в этом кластере. Класс Cluster также содержит функцию size, использующуюся для определения размера кластера, основанного на количестве и важности различных тегов, входящих в него проектов и функцию слияния двух кластеров.

Так как кластеризация наиболее долгий процесс кластеризатор имеет функцию установки текущего статуса, которая позволяет следить за прохождением программой этапов кластеризации.

Общий алгоритм работы кластеризатора

Кластеризатор во время своей работы выполняет следующие шаги:

  1. Загрузка векторных представлений проектов добавленных в БД за последние сутки и создание объектов класса Item для каждого загруженного проекта.
  2. Создание одиночных кластеров загруженных проектов, то есть создание объектов класса Cluster, содержащих по одному объекту класса Item.
  3. Попарное вычисление метрики соседства между кластерами.
  4. Попарное вычисление количества общих соседей кластеров.
  5. Вычисление итоговой меры близости кластеров.
  6. Далее программа итеративно сливает два наиболее близких кластера, если это возможно. В случае невозможности или других условий заданных администратором происходит выход из цикла. На каждой итерации программа производит следующие действия:
  7. Программа находит кластеры, значение близости между которыми наиболее велико.
  8. Создается новый кластер, в который входят проекты из двух выбранных на предыдущем шаге кластеров.
  9. Для всех имеющихся кластеров вычисляется метрика близости с новым кластером.
  10. Удаление информации о слитых кластерах из остальных и добавление информации о новом.
  11. Удаление слитых кластеров из списка рассматриваемых.

Выборка данных и предварительная подготовка средствами MySQL

Основной целью данного этапа является получение векторных представлений проектов из БД для последующего анализа. Для ее достижения требуется запрос выполняющий следующие условия:

  1. выборка содержит только информацию о проектах, добавленных за последние сутки,
  2. выборка содержит векторные модели документов,
  3. из выборки исключены записи, содержащие стоп-слова из списка.

Итоговый запрос выглядит следующим образом:

SELECT %(pref)stermstat.project_id, %(pref)stermstat.term_id, %(pref)stermstat.score, %(pref)sterm.normal, %(pref)sproject.price, %(pref)sproject.currency

FROM project_termstat JOIN %(pref)sterm ON %(pref)stermstat.term_id=%(pref)sterm.id

JOIN %(pref)sproject ON %(pref)stermstat.project_id=%(pref)sproject.id

WHERE NOT EXISTS(SELECT * FROM %(pref)sstoplist_term WHERE %(pref)sstoplist_term.term_id=%(pref)stermstat.term_id)

AND %(pref)sproject.pubtime>%(time)s AND %(pref)stermstat.score>1 ORDER BY term_id

Также в запросе средствами MySQL выборка сортируется для последующего более быстрого разбора. Сортировка с помощью СУБД позволяет сэкономить время предварительной подготовки проектов.

Дальнейшая подготовка состоит в создании объектов классов Term, Item и Cluster. Благодаря предварительной сортировке по идентификатору терма, нет необходимости при получении рассмотрении каждой новой записи из выборки проверять есть ли терм из этой записи в других проектах или он является новым.

Перед разбором записей выборки программа создает 3 словаря: термы, проекты и кластеры, ключами которых являются идентификаторы соответствующих элементов, а значениями — объекты соответствующих классов.  Также создается список nbrs использующийся для определения попарного соседства проекта в цикле разбора запроса. Также создается переменная oldterm для хранения идентификатора предыдущего терма.

Для каждой записи из выборки выполняется следующая последовательность действий:

  1. Программа пытается обратиться к кластеру в словаре с идентификатором проекта из записи выборки. Если элемент не существует, значит проект еще не преобразован в объект и не создан единичный кластер, содержащий этот проект. В этом случае программа создает объекты классов Item и Cluster.
  2. После этого программа добавляет в словарь термов кластера по идентификатору проекта идентификатор терма и значение важности из текущей записи выборки.
  3. Программа пытается обратиться к словарю термов по идентификатору из выборки. Если элемент существует, значит, продолжается рассмотрение записей из выборки связанных с этим термом. В этом случае идентификатор проекта добавляется в список nbrs. В случае, если элемент не существует, значит, в выборке начались записи с новым термом. Программа выполняет следующие действия:
  4. Устанавливается значение популярности предыдущего терма (oldterm), оно равно текущему количеству элементов в списке nbrs.
  5. Для каждого идентификатора из списка соседей заполняется список соседей кластера с этим идентификатором. После чего из списка удаляется идентификатор самого себя.
  6. После этого создается новый объект класса Term для текущего идентификатора терма из выборки.
  7. Затем программа сохраняет предыдущий идентификатор терма в oldtrem и переходит к следующей записи в выборке.

После обработки всей выборки из памяти удаляются временные переменные.

Вычисление метрики соседства двух проектов

К данному этапу в программе каждый кластер уже содержит список соседей, полученный из предыдущего этапа. Задачей данного этапа является определение попарной меры соседства и удаление слабых связей. Слабыми являются связи, сила которых меньше коэффициента th заданного администратором.

Мера попарного соседства вычисляется в цикле для каждого из словаря соседей для каждого кластера. Функция представляет собой реализацию метрики Жаккара и выглядит следующим образом:

def getNbr(i,j):

 inter = len(set(clusters[i].terms.keys()) & set(clusters[j].terms.keys()))

 union = len(set(clusters[i].terms.keys()) | set(clusters[j].terms.keys()))

 return float(inter) / float(union)

Данная функция вычисляет объединение и пересечение множеств ключей термов, содержащихся в кластерах.

В случае если результат меньше th соответствующие ключи из словаря соседей кластера удаляются. Если же результат больше, то по соответствующим ключам словаря соседей кластера выставляются значения меры близости.

Результатом выполнения этого этапа программой является словарь соседей и мер соседства для каждого кластера.

Вычисление количества общих соседей

Для вычисления количества общих соседей используются те же приемы работы с множествами, что и при подсчете меры соседства. В данном случае кластеры рассматриваются попарно при этом в словарь ссылок (общих соседей) кластера заносится отношение пересечения к объединению списков соседей кластеров.

Результатом выполнения этого этапа программой являются словарь общих соседей и их количества для каждого кластера и словарь различных соседей также с их количеством.

Цикл кластеризации

Каждая итерация цикла кластеризации включает в себя следующие этапы:

  1. Программа проверяет, не выполняется ли какое-либо условие выхода из цикла. Параметры данных условий задаются администратором. Среди возможных условий реализованы следующие:
  2. количество кластеров достигло максимального значения,
  3. прошло заданное количество итераций.

В случае, если какое-либо условие достигнуто, программа выходит из цикла и переходит к следующему этапу. Если ни одно из условий не выполнено программа продолжает цикл кластеризации.

  1. Программа выбирает два кластера, отношение количества общих соседей к различным максимально. В случае, если не осталось кластеров, у которых количество общих соседей отлично от нуля, программа выходит из цикла кластеризации. Также администратор может дополнительно задать минимальный размер отношения (minth), при которой цикл продолжается, и в случае, если не осталось пар кластеров со значением отношения больше заданного, программа также выходит из цикла. Регулировка параметра minth позволяет снизить влияние помех при кластеризации.
  2. Выбрав кластеры для слияния, программа создает новый кластер в словаре clusters с идентификатором на 1 больше максимального идентификатора кластеров в clusters. Список идентификаторов проектов нового кластера составляется путем слияния аналогичных списков из сливаемых кластеров.
  3. После этого программа обновляет списки соседей набора кластеров. Для каждого кластера происходит проверка, имеет ли он общих соседей со сливаемыми. Если да, то связи удаляются, и добавляется связь с новым кластером.
  4. Сливаемые кластеры удаляются программой из системы. Счетчик итераций цикла кластеризации увеличивается на 1.

Прогноз бюджета и составление отчета

Прогнозирование бюджета происходит на основе результатов кластеризации. Если в кластере хотя бы 50% проектов имеют определенный бюджет, то для проектов, имеющих неопределенный бюджет, устанавливается бюджет равный среднеарифметическому определенных бюджетов проектов в этом кластере. Прогноз бюджета записывается в БД в таблицу проектов и помечается как спрогнозированный.

Также в БД в таблицу проектов заносится идентификатор кластера, к которому он относится после последней проведенной кластеризации.


Разработка веб-интерфейса

Основными задачами веб-интерфейса разработанного комплекса являются:

  1. представление ленты агрегированных проектов,
  2. система фильтрации проектов на ленте по ключевым словам и бюджету,
  3. просмотр результатов последней кластеризации,
  4. форма оперативной реакции на проект.

В разработанной системе данные задачи решены реализацией следующих веб-страниц:

  1. Лента проектов, содержащая проекты отсортированные по дате добавления на биржи. Представление каждого проекта на ленте содержит информацию, облегчающую анализ проекта человеком и форму оперативной реакции на проект.
  2. Список кластеров из результатов последней кластеризации. На этой странице пользователь может найти проекты похожие на интересные ему.

Также задача фильтрации решена реализацией человекопонятного URL, позволяющего задавать параметры фильтрации непосредственно в URL.

Лента проектов

Лента проектов является главной страницей веб-сервиса. Каждый проект на ленте представлен следующими своими атрибутами:

  1. Заголовок проекта, содержащий ссылку на проект на бирже. Рядом с заголовком также имеется пиктограмма биржи, с которой он агрегирован.
  2. Бюджет проекта. По аналогии с популярными фриланс-биржами бюджет расположен справа на уровне заголовка.
  3. Список 5 ключевых слов, имеющих наибольшее значение важности, выявленных нормализатором. Каждое слово также является ссылок на фильтр ленты, предоставляющий список проектов, также имеющих данное ключевое слово.
  4. Текст проекта с биржи. Блок текста изначально скрыт и отображается с помощью AJAX при нажатии ссылки «Подробнее».
  5. Форма оперативного ответа на проект. Блок также изначально и отображается с помощью AJAX при нажатии ссылки «Оперативный ответ».

Системы фильтрации

Возможность отфильтровать имеющиеся в системе проекты предоставляется следующими инструментами:

  1. форма фильтрации по ключевым словам и бюджету на главной странице,
  2. ссылки на фильтры по ключевым словам в блоках проектов на ленте,
  3. фильтрация методом задания бюджета и ключевых слов в URL,
  4. список кластеров из результатов последней кластеризации.

Формат URL фильтра определен следующим регулярным выражением:

r'(p(?P<page>\d+)(\/|$))?(tag\/(?P<tag>[\w\-\+]+)(\/|$))?(price(?P<price>[0-9\.\-]+)(?P<curr>\w+)(\/|$))?$'

Примерами URL использующими такой фильтр являются:

  1.  http://lancery.ru/tag/php+mysql/price1000-5000RUR — отображение списка проектов с бюджетом 1000-5000 рублей содержащих ключевые слова PHP и MySQL. Регистр букв в названиях тегов не учитывается.
  2.  http://lancery.ru/tag/python — список проектов, где требуется знание языка Python.
  3.  http://lancery.ru/price10.5-50USD — список проектов с бюджетом от 10.5 до 50 долларов.

Ссылки на фильтры по ключевым словам и фильтрация с помощью формы реализованы на основе составления нужного URL и перенаправления по нему.

Список кластеров

Результаты кластеризации реализованы для альтернативного представления списка проектов. На этой странице каждый заголовки и ссылки на проекты сгруппированы в блоки, где каждый блок является кластером. На странице отображаются только проекты, участвовавшие в последней кластеризации (то есть добавленные за последние 24 часа), входящие в неодиночные кластеры.


Разработка системы оперативной реакции на проект

Структура системы оперативной реакции

Система оперативной реакции состоит из следующих компонентов:

  1. форма оперативной реакции в блоке проекта,
  2. страница автозаполнения авторизационных данных бирж,
  3. контроллер Django отправки ответа на биржу,
  4. модуль классов для индивидуальных правил авторизации и отправки ответа на биржах,
  5. таблица хранения авторизационных данных и ответа на бирже и соответствующая модель Django.

Модуль классов индивидуальных правил в реализации схож с модулем правил индивидуального разбора агрегатора. Имя каждого класса совпадает с идентификатором биржи в таблице project_feed. Каждый класс содержит функцию post, которая производит авторизацию, проверку успеха авторизации и отправку ответа на проект.

Страница автозаполнения авторизационных данных бирж доступна в разделе «Настройки» авторизоанного в системе пользователя. На странице пользователь может указать логин и пароль для доступных в системе бирж. После этого в форме оперативной реакции соответствующие поля заполняются автоматически.

В системе используется эмулятор браузера mechanize, позволяющий писать простые сценарии действий на странице, имитирующих деятельность пользователя.

Алгоритм работы системы оперативной реакции

Система оперативной реакции активируется при отправке данных через форму оперативной реакции на проект. В запросе передаются следующие данные: логин и пароль для авторизации на бирже, текст ответа на проект, идентификатор проекта, идентификатор биржи. При этом выполняются следующие действия:

  1. Программа пытается выбрать объекты проекта и биржи с идентификаторами из запроса. В случае неудачи программа сообщает об ошибке.
  2. Программа создает объект класса с именем соответствующим бирже, на которой находится проекта.
  3. Затем вызывается функция post этого объекта, которой передаются: логин, пароль, текст и ссылка на проект. Функция возвращает True, если отправка ответа прошла удачно и False если неудачно. В случае неудачи программа сообщает об ошибке.
  4. В этой функции создается объект эмулятора браузера mechanize.
  5. С помощью этого объекта программа посылает HTTP-запрос страницы авторизации на бирже.
  6. Эмулятор браузера выбирает форму авторизации и заполняет ее данными переданными функции post. Затем эмулятор выполняет отправку заполненной формы.
  7. Эмулятор браузера загружает страницу проекта и пытается выбрать форму ответа. В случае если форму выбрать не удалось, считается, что авторизация прошла неудачно и функция возвращает False.
  8. Программа производит перевод текста в кодировку биржи, если это необходимо.
  9. Эмулятор браузера заполняет форму ответа на проект и отправляет ее. Получив ответ, программа пытается найти текст ответа. В случае, если он не найден, функция возвращает False. В случае, если найден — True.

На данный момент все биржи имеющиеся в системе содержат схожий сценарий отправки ответа, однако, структура программы предусматривает изменение сценария поведения функции post для класса любой биржи.


Охрана труда

Исследование возможных опасных и вредных факторов при эксплуатации ЭВМ и их влияния на пользователей

Введение

Охрана труда - это система законодательных актов, социально-экономических, организационных, технических, гигиенических и лечебно-профилактических мероприятий и средств, обеспечивающих безопасность, сохранение здоровья и работоспособности человека в процессе труда. Полностью безопасных и безвредных производственных процессов не существует. Задача охраны труда - свести к минимуму вероятность поражения или заболевания работающего с одновременным обеспечением комфорта при максимальной производительности труда. В процессе использования ПЭВМ здоровью, а иногда и жизни оператора угрожают различные вредные факторы, связанные с работой на персональном компьютере. Типичными ощущениями, которые испытывают к концу дня люди, работающие за компьютером, являются: головная боль, резь в глазах, тянущие боли в мышцах шеи, рук и спины, зуд кожи на лице и т.п. Испытываемые каждый день, они могут привести к мигреням, частичной потере зрения, сколиозу, тремору, кожным воспалениям и другим нежелательным явлениям. Была выявлена связь между работой на компьютере и такими недомоганиями, как астенопия (быстрая утомляемость глаза), боли в спине и шее, запястный синдром (болезненное поражение срединного нерва запястья), тендениты (воспалительные процессы в тканях сухожилий), стенокардия и различные стрессовые состояния, сыпь на коже лица, хронические головные боли, головокружения, повышенная возбудимость и депрессивные состояния, снижение концентрации внимания, нарушение сна и немало других, которые не только ведут к снижению трудоспособности, но и подрывают здоровье людей. Основным источником проблем, связанных с охраной здоровья людей, использующих в своей работе автоматизированные информационные системы на основе персональных компьютеров, являются дисплеи (мониторы), особенно дисплеи с электронно-лучевыми трубками. Они представляют собой источники наиболее вредных излучений, неблагоприятно влияющих на здоровье операторов и пользователей. Любой производственный процесс, в том числе работа с ЭВМ, сопряжен с появлением опасных и вредных факторов. Опасный фактор - это производственный фактор, воздействие которого на работающего в определенных условиях приводит к травме или другому резкому внезапному ухудшению здоровья. Вредный фактор - производственный фактор, приводящий к заболеванию, снижению работоспособности или летальному исходу. В зависимости от уровня и продолжительности воздействия вредный производственный фактор может стать опасным.

Типовая конфигурация компьютеризированного рабочего места:

  1. ПК на основе процессора любого современного процессора, c необходимым набором устройств ввода-вывода и хранения информации, такими как жесткие диски и устройсива чтения и записи оптических дисков;
  2. лазерный принтер HP Color LaserJet 2600N (A4);
  3. цветной монитор Samsung 795DF SBB 17”: частота кадровой развертки при максимальном разрешении 85 Гц; частота строчной развертки при максимальном разрешении 42 кГц;

В дисплее ПЭВМ высоковольтный блок строчной развертки и выходного строчного трансформатора вырабатывает высокое напряжение до 25кВ для второго анода электронно - лучевой трубки. А при напряжении от 5 до 300 кВ возникает рентгеновское излучение различной жесткости, которое является вредным фактором при работе с ПЭВМ (при 15 - 25 кВ возникает мягкое рентгеновское излучение). Изображение на ЭЛТ создается благодаря кадрово-частотной развертке с частотой:

  1. 85 Гц (кадровая развертка);
  2. 42 кГц (строчная развертка).

Следовательно, пользователь попадает в зону электромагнитного излучения низкой частоты, которое является вредным фактором. Во время работы компьютера дисплей создает ультрафиолетовое излучение, при повышении плотности которого > 10 Вт/м2, оно становиться для человека вредным фактором. Его воздействие особенно сказывается при длительной работе с компьютером. Любые электронно-лучевые устройства, в том числе и электронно-вычислительные машины во время работы компьютера вследствие явления статического электричества происходит электризация пыли и мелких частиц, которые притягивается к экрану. Собравшаяся на экране электризованная пыль ухудшает видимость, а при повышении подвижности воздуха, попадает на лицо и в легкие человека, вызывает заболевания кожи и дыхательных путей. Выводы: Исходя из анализа вредных факторов видна необходимость защиты от них. При эксплуатации перечисленных элементов вычислительной техники могут возникнуть следующие опасные и вредные факторы:

  1. Поражение электрическим током;
  2. Ультрафиолетовое излучение;
  3. Электромагнитное излучение;
  4. Статическое электричество.

Анализ влияния опасных и вредных факторов на пользователя

Влияние электрического тока

Электрический ток, воздействуя на человека, приводит к травмам:

Проходя через тело человека, электрический ток оказывает следующие воздействия:

  1.  Термическое — нагрев тканей и биологической среды.
  2.  Электролитическое — разложение крови и плазмы.
  3.  Биологическое — способность тока возбуждать и раздражать живые ткани организма.
  4.  Механическое — возникает опасность механического травмирования в результате судорожного сокращения мышц.

Тяжесть поражения электрическим током зависит от:

  1. Величины тока.
  2. Времени протекания.
  3. Пути протекания.
  4. Рода и частоты тока.
  5. Сопротивления человека.
  6. Окружающей среды.
  7. Состояния человека.
  8. Пола и возраста человека.

Общие травмы:

  1. Судорожное сокращение мышц, без потери сознания.
  2. Судорожное сокращение мышц, с потерей сознания.
  3. Потеря сознания с нарушением работы органов дыхания и кровообращения.
  4. Состояние клинической смерти.
  5. Местные травмы.
  6. Электрические ожоги.

Наиболее опасным переменным током является ток 20 - 100Гц. Так как компьютер питается от сети переменного тока частотой 50Гц, то этот ток является опасным для человека.

Влияние статического электричества

Результаты медицинских исследований показывают, что электризованная пыль может вызвать воспаление кожи, привести к появлению угрей и даже испортить контактные линзы. Кожные заболевания лица связаны с тем, что наэлектризованный экран дисплея притягивает частицы из взвешенной в воздухе пыли, так, что вблизи него «качество» воздуха ухудшается и оператор вынужден работать в более запыленной атмосфере. Таким же воздухом он и дышит.

Особенно стабильно электростатический эффект наблюдается у компьютеров, которые находятся в помещении с полами, покрытыми синтетическими коврами.

При повышении напряженности поля Е>15 кВ/м, статическое электричество может вывести из строя компьютер.

Влияние электромагнитных излучений НЧ

Электромагнитные поля с частотой 60Гц и выше могут инициировать изменения в клетках животных (вплоть до нарушения синтеза ДНК). В отличие от рентгеновского излучения, электромагнитные волны обладают необычным свойством: опасность их воздействия при снижении интенсивности не уменьшается, мало того, некоторые поля действуют на клетки тела только при малых интенсивностях или на конкретных частотах. Оказывается переменное электромагнитное поле, совершающее колебания с частотой порядка 60Гц, вовлекает в аналогичные колебания молекулы любого типа, независимо от того, находятся они в мозге человека или в его теле. Результатом этого является изменение активности ферментов и клеточного иммунитета, причем сходные процессы наблюдаются в организмах при возникновении опухолей.

Влияние ультрафиолетового излучения

Ультрафиолетовое излучение электромагнитное излучение в области, которая примыкает к коротким волнам и лежит в диапазоне длин волн ~ 200 - 400 нм. Различают следующие спектральные области:

  1. 200 - 280 нм -- Бактерицидная область спектра
  2. 280 - 315 нм -- Зрительная область спектра (самая вредная)
  3. 315 - 400 нм -- Оздоровительная область спектра

При длительном воздействии и больших дозах могут быть следующие последствия:

  1. Серьезные повреждения глаз (катаракта)
  2. Меломанный рак кожи
  3. Кожно-биологический эффект (гибель клеток, мутация, канцерогенные накопления)
  4. Фототоксичные реакции.

Выводы

Из анализа воздействий опасных и вредных факторов на организм человека следует необходимость защиты от них.

Методы и средства защиты пользователей от воздействия на них опасных и вредных факторов

Методы и средства защиты от поражения электрическим током

Для защиты от поражающего электрическим током используется технический метод - зануление.

Зануление - это преднамеренное электрическое соединение с нулевым защитным проводником металлических нетоковедущих частей ЭЛУ, которые могут оказаться под напряжением. Применяется в трёхфазных четырехпроходных сетях с заземленной нейтралью при напряжении менее 1000В.

Основа принципа защиты занулением: защита человека осуществляется тем, что при замыкании одной из фаз на заземляющий корпус, в цепи появляется ток замыкания, который отключает от потребителя сеть. Ток короткого замыкания еще до срабатывания защиты вызывает перераспределение в сети, приводящее к снижению напряжения на корпусе относительно земли (см. Рис. 2).

Рис. 1 Схема зануления

По заданным параметрам определим возможный Jк.з.

(формула  1), где:

Jк.з. - ток короткого замыкания [А];

Uф - фазовое напряжение [B];

rm - сопротивление катушек трансформатора [Ом];

rнзп - сопротивление нулевого защитного проводника [Ом].

Uф = 220 В

Ом

(формула  2), где:

- удельное сопротивление материала проводника [Ом*м];

l - длина проводника [м];

s – площадь поперечного сечения проводника [мм2].

По величине определим с каким необходимо включить в цепь питания ПЭВМ автомат.

рмедь= 0,0175 Ом*м

=400 м ; =150 м ; =50 м

; 9,1 (Ом)

(А)

, где:

K – качество автомата.

Вывод

Для отключения ПЭВМ от сети в случае короткого замыкания или других неисправностей в цепь питания ПЭВМ необходимо ставить автомат со значением Jном = 8 А.

Методы и средства защиты от ультрафиолетового излучения

Энергетической характеристикой является плотность потока мощности [Вт/м2] Биологический эффект воздействия определяется внесистемной единицей эр. 1 эр - это поток (280 - 315 нм), который соответствует потоку мощностью 1 Вт. Воздействие ультрафиолетового излучения сказывается при длительной работе за компьютером. Максимальная доза облучения:

  1. 7,5 мэр*ч/ м2 за рабочую смену
  2. 60 мэр*ч/м2 в сутки
  3. Для защиты от ультрафиолетового излучения:
  4. защитный фильтр или специальные очки (толщина стекол 2мм, насыщенных свинцом)
  5. одежда из фланели и поплина
  6. побелка стен и потолка (ослабляет на 45-50%).

Методы и средства защиты от электромагнитных полей низкой частоты

Защита от электромагнитных излучений осуществляется следующими способами:

  1. Время работы - не более 4 часов
  2. Расстояние - не менее 50 см от источника
  3. Экранирование
  4. Расстояние между мониторами - не менее 1,5 м
  5. Не находиться  слева от монитора ближе 1.2 м, и сзади не ближе 1м.

Методы и средства защиты от статического электричества

Защита от статического электричества и вызванных им явлений осуществляется следующими способами:

  1. Иметь контурное заземление.
  2. Нейтрализаторы статического электричества.
  3. Отсутствие синтетических покрытий.
  4. Использование экранов.
  5. Влажная уборка.
  6. Подвижность воздуха в помещении не более 0.2 м/с.

Для уменьшения влияния статического электричества необходимо пользоваться рабочей одеждой из малоэлектризующихся материалов, например халатами из хлопчатобумажной ткани, обувью на кожаной подошве. Не рекомендуется применять одежду из шелка, капрона, лавсана.

Общие рекомендации при работе с вычислительной техникой

Для защиты от вредных факторов имеющих место при эксплуатации ЭВМ необходимо придерживаться следующих рекомендаций:

  1. правильно организовывать рабочие места
  2. правильно организовать рабочее время оператора, соблюдая ограничения при работе с вычислительной техникой.

Требования к помещениям и организации рабочих мест

Особые требования к помещениям, в которых эксплуатируются компьютеры:

Не допускается расположение рабочих мест в подвальных помещениях.

Площадь на одно рабочее место должна быть не меньше 6 м2, а объем - не менее 20м3.

Для повышения влажности воздуха в помещениях с компьютерами следует применять увлажнители воздуха, ежедневно заправляемые дистиллированной или прокипяченной питьевой водой. Перед началом и после каждого часа работы помещения должны быть проветрены.

Рекомендуемый микроклимат в помещениях при работе с ПЭВМ:

- температура 19- 21°С;

- относительная влажность воздуха 55-62%.

В помещениях, где размещены шумные агрегаты вычислительных машин (матричные принтеры и тому подобное), уровень звука не должен превышать 75дБА, в обычных же помещениях, где стоят персональные машины, допускается максимум 65 дБА.

Помещения должны иметь естественное и искусственное освещение. Желательна ориентация оконных проемов на север или северо-восток. Оконные проемы должны иметь регулируемые жалюзи или занавеси, позволяющие полностью закрывать оконные проемы. Занавеси следует выбирать одноцветные, гармонирующие с цветом стен, выполненные из плотной ткани и шириной в два раза больше ширины оконного проема. Для дополнительного звукопоглощения занавеси следует подвешивать в складку на расстоянии 15-20 см от стены с оконными проемами.

Рабочие места по отношению к световым проемам должны располагаться так, чтобы естественный свет падал сбоку, преимущественно - слева.

Для устранения бликов на экране, также как чрезмерного перепада освещенности в поле зрения, необходимо удалять экраны от яркого дневного света.

Рабочие места должны располагаться от стен с оконными проемами на расстоянии не менее 1,5 м, от стен без оконных проемов на расстоянии не менее 1,0 м.

Поверхность пола в помещениях должна быть ровной, без выбоин, нескользкой, удобной для чистки и влажной уборки, обладать антистатическими свойствами.

Освещенность на рабочем месте с ПЭВМ должна быть не менее:

  1. экрана - 200 лк;
  2. клавиатуры, документов и стола - 400 лк.

Для подсветки документов допускается установка светильников местного освещения, которые не должны создавать бликов на поверхности экрана и увеличивать его освещенность до уровня более 300 лк. Следует ограничивать прямые блики от источников освещения.

Освещенность дисплейных классов, рекомендуемая отраслевыми нормами лежит в пределах 400-700 лк и мощностью ламп до 40Вт.

В качестве источников света при искусственном освещении необходимо применять преимущественно люминесцентные лампы типа ЛБ цветовая температура (Тцв) излучения которых находится в диапазоне 3500-4200°K.

Допускается применение ламп накаливания в светильниках местного освещения. Для того чтобы избегать ослепления, необходимо устранять из поля зрения оператора источники света (лампы, естественный солнечный свет), а также отражающие поверхности (например, поверхность блестящих полированных столов, светлые панели мебели). При электрическом освещении упомянутые требования могут быть удовлетворены при выполнении следующих условий: освещение должно быть не прямым, для чего необходимо избегать на потолке зон чрезмерной освещенности. При этом освещенность должна быть равномерной, потолок должен быть плоским, матовым и однородным. Необходима также достаточная высота потолка для возможности регулировать высоту подвеса светильников.

При установке рабочих мест нужно учитывать, что мониторы должны располагаться на расстоянии не менее 2 метров друг от друга, если брать длины от задней поверхности одного до экрана другого, и 1,2 метра между их боковыми поверхностями. При выполнении творческой работы, требующей «значительного умственного напряжения или высокой концентрации внимания», между компьютерами должны быть установлены перегородки высотой 1,5-2,0 метра.

Дисплей должен поворачиваться по горизонтали и по вертикали в пределах 30 градусов и фиксироваться в заданном направлении. Дизайн должен предусматривать окраску корпуса в мягкие, спокойные тона с диффузным рассеиванием света. Корпус дисплея, клавиатура и другие блоки и устройства должны иметь матовую поверхность одного цвета с коэффициентом отражения 0.4-0.6 и не иметь блестящих деталей, способных создавать блики.

Рабочий стул должен быть подъемно-поворотным и регулируемым по высоте и углам наклона сиденья и спинки, а также расстоянию спинки от переднего края сиденья.

Экран монитора должен находиться от глаз пользователя на расстоянии 600-700 мм, но не ближе 500 мм. В помещениях ежедневно должна проводиться влажная уборка.

Рабочее место должно быть оборудовано подставкой для ног, шириной не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах 150 мм и по углу наклона опорной поверхности до 20 градусов. Клавиатуру следует располагать на поверхности стола на расстоянии 100-300 мм от края, обращенного к пользователю, или на специальной, регулируемой по высоте рабочей поверхности.

Требования к организации работы

Для преподавателей вузов и учителей средних учебных заведений длительность работы в дисплейных классах устанавливается не более 4 часов в день. Для инженеров, обслуживающих компьютерную технику длительность работы в дисплейных классах устанавливается не более 6 часов в день. Для обычного пользователя продолжительность непрерывной работы за компьютером без перерыва не должна превышать 2 часов.

Необходимо делать 15-минутные перерывы каждые 2 часа, менять время от времени позу.

Для тех, у кого смена работы за компьютером 12 часов, установлено - в течение последних четырех часов каждый час должен прерываться 15-минутным перерывом.

При работе с ПЭВМ в ночную смену, независимо от вида и категории работ, продолжительность регламентированных перерывов увеличивается на 60 минут. В случаях возникновения у работающих с ПЭВМ зрительного дискомфорта и других неблагоприятных субъективных ощущений, несмотря на соблюдение санитарно-гигиенических, эргономических требований, режимов труда и отдыха следует применять индивидуальный подход в ограничении времени работ с ПЭВМ и коррекцию длительности перерывов для отдыха или проводить смену деятельности на другую, не связанную с использованием ПЭВМ.

Профессиональные пользователи обязаны проходить периодические медицинские осмотры. Женщины во время беременности и в период кормления ребенка грудью к работе за компьютером не допускаются.

Необходимо строго регламентировать время и условия работы с компьютером для сотрудников, страдающих заболеваниями опорно-двигательного аппарата, глаз и т. д.

Выводы

Выбранные методы и способы защиты от опасных и вредных факторов обеспечивают защиту пользователей, работающих с вычислительной техникой.

Заключение

В ходе преддипломной практики были проведены следующие работы:

  1. Составление и анализ технического задания;
  2. Произведен обзор аналогов;
  3. Составлена обзорная часть и выбраны компоненты для построения некоторых частей комплекса и инструменты разработки;
  4. Спроектированы и закодированы все модули комплекса;
  5. Составлена специальная часть дипломной записки.
  6. Настроен сервер и зарегистрирован домен для доступа к веб-интерфейсу комплекса.


Список литературы

  1. Агрегация и интеллектуальный анализ проектов фрилас-бирж / И.И.Савин //МИЭМ-2011: Сборник научи.трудов -М.,2011.
  2.  G. Salton, A. Wong, and C. S. Yang, "A Vector Space Model for Automatic Indexing," Communications of the ACM, — 1975 — T. 18. — № 11. —  C. 613–620.
  3.  Sudipto G., Rajeev R., Kyuseok S. "ROCK: A Robust Clustering Algorithm for Categorical Attributes", KAIST, 2000
  4.  Paul Jaccard "Étude comparative de la distribution florale dans une portion des Alpes et des Jura" Bulletin de la Société Vaudoise des Sciences Naturelles. - 1901 - C.547–579
  5. Кластеризация алгоритмом ROCK / И.И.Савин //Телематика-2010: Сборник научи.трудов ИПМ.-СПб.,2010. С.111-115.
  6. ГОСТ 12.0.003-86 Опасные и вредные производственные факторы. Классификация
  7. Сибаров Ю.Г. и др. Охрана труда на ВЦ. М. 1989.
  8. ГОСТ  12.1.030-81 Электробезопасность. Защитные заземления, зануления.
  9. САНПиН 1340-03 Гигиенические требования к персональным ЭВМ и организация работы
  10. ГОСТ CCБТ 12.1.045-84 Электростатические поля. Допустимые условия на  рабочем месте
  11. ГОСТ CCБТ  12.1.124-84 Средства защиты от статического электричества
  12. ФЗ РФ №181 1999г. «Об основах охраны труда в РФ»
  13. Трудовой кодекс РФ

Москва 2011


 

А также другие работы, которые могут Вас заинтересовать

14897. Дін және мәдениет 74 KB
  Мұртаза БҰЛҰТАЙФилософия ғылымдарының кандидатыДінтанушы мәдениеттанушыДІН ЖӘНЕ МӘДЕНИЕТ[1]Дін және мәдениеттің арақатынасы жөнінде қыруар пікірлер айтылуда. Соңғы кездері діни экспансия алаңына айналған елімізде дініміз өзгерсе өзгерсін мәдениетіміз өзгермесін...
14898. Діни экстремизм мен терроризм 90.5 KB
  ДІНИ ЭКСТРЕМИЗМ МЕН ТЕРРОРИЗМ Мұртаза Жүнісұлы БҰЛҰТАЙ Философия ғылымдарының кандидаты дінтанушы ДІНИ ЭКСТРЕМИЗМ МЕН ТЕРРОРИЗМ Ғылым және технология дамудың шырқау шегіне шыққанына және адамзат бірінбірін оңайлықпен тани алатын мүмкіншіліктерге ие б...
14899. Заманауи тұлғалардың ислам дінін қабылдау себептері 50.5 KB
  Мұртаза БҰЛҰТАЙФилософия ғылымдарының кандидатыДінтанушы мәдениеттанушыЗАМАНАУИ ТҰЛҒАЛАРДЫҢ ИСЛАМДIНIН ҚАБЫЛДАУ СЕБЕПТЕРI [1]Ғылым және информация ғасыры деп аталған өткен жүз жылда дамыған мемлекеттердiң азаматтарынан бек көп адам ислам дiнiн өз еркiмен қабылдаған. Ол...
14900. Ислам - әлемдегі бейбітшіліктің кепілі 103.5 KB
  Мұртаза БҰЛҰТАЙФилософия ғылымдарының кандидатыДінтанушы мәдениеттанушыИСЛАМ ӘЛЕМДЕГІ БЕЙБIТШIЛIКТIҢ КЕПIЛI[1]Өткен жолғы Ислам және өркениет газеті №4 Сәуір 2001 ж. Дiни экстремизм мен терроризм деп аталатын мақаламда хақ дін исламның Батыс елдерінде пайда болған әл...
14901. Ислам дініндегі хош көрушілік 79.5 KB
  Мұртаза БҰЛҰТАЙ ҚР Білім қайраткерлері одағының мүшесі ИСЛАМ ДIНIНДЕГI ХОШКӨРУШIЛIК Дін деген ұғымның негізінде зорлықзомбылық болмауы керек бұл хақ діннің ғайрихақ хақ емес діндерден ажырасатын айқын парқы. Дін дегеніміз негізінде иман яғни сенім жататын рух...
14902. Ислам 68 KB
  Мұртаза БҰЛҰТАЙФилософия ғылымдарының кандидатыДінтанушы мәдениеттанушыИСЛАМ [1]Жаратушы ұлық тәңiр Аллаһ Тағалаға иманды және мойынсұнуды бiлдiретiн нағыз бiртәңiрлi монотеист тәухид нанымы негiзiнде пайғамбарымыз Мұхаммед Абдұллаһұлы с.а.у. 569632 тарапынан 609632 жылда
14903. Исламтану және ислам философиясы 95 KB
  Мұртаза БҰЛҰТАЙ Философия ғылымдарының кандидатыДінтанушы мәдениеттанушы ИСЛАМТАНУ Тәухид нанымы негiзiндегi ислам дiнi уә мәдениетiн әдебиетi уә өркениетiн зерттейтiн ғылымдардың жыйынтық аты. Аллаһ Тағалаға тәсiлiм болу берiлу мойынсұну; сәлеметтiлiкте һәм бейбiтшiлiк
14904. ҚАЗАҚСТАНДАҒЫ ДІН ЖӘНЕ МЕМЛЕКЕТ ҚАТЫНАСТАРЫ 68.5 KB
  ҚАЗАҚСТАНДАҒЫ ДІН ЖӘНЕ МЕМЛЕКЕТ ҚАТЫНАСТАРЫ[1]Тәуелсіздік жылдарында елімізде орын алған күрделі саясиэкономикалық жаңарулар мен өзгерулер ағымында мемлекет билігінің қайнар көзі болып табылатын халқымыздың рухани өмірі мен діни көзқарастары да бір жағынан толығып
14905. ҚҰРАНДЫ ТҮСІНУ 69.5 KB
  ҚҰРАНДЫ ТҮСІНУ Құран Кәрім Жаратушы тарапынан күллі адамзатқа және өзінен кейінгі замана атаулыға жіберілген ұқсасы жоқ қасиетті кітап. Құран – ислам дінінің бастауы бірегей бұлағы. Исламды түсіну үшін Құранды түсіну шарт. Құранды түсінбеген адам исламды да толықтай түс...