Шаблон заявления об авторских правах на программное обеспечение: как составить план разработки программного обеспечения
Шаблон заявления об авторских правах на программное обеспечение: как составить план разработки программного обеспечения

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

1. Введение

1.1 Цель написания

1.2 Предыстория проекта

1.2 Обзор проекта

  1. Общие требования

2.1 Обзор функций системы

2.2 Функциональные требования к системе

  1. разработка программного обеспечения

3.1 Анализ требований к программному обеспечению

3.2 软件的概要дизайн

3.2.1 Описание конструкции программного обеспечения

3.2.3 Основные концепции проектирования и процесс обработки

3.3 Детальный проект программного обеспечения

3.3.1 Структура системы

3.3.2 Описание конструкции модуля

3.3.3 Гусеничный модуль

3.3.4 Модуль журнала

3.3.5 Обработка данных

3.3.6 Моделирование данных

3.3.7 Изображения происшествий

3.3.8 Визуальный дисплей

3.4 Проектирование базы данных

3.4.1 Описание базы данных

3.4.2 Операции с базой данных

3.4.3 Структура базы данных

3.4.4 Структура таблицы

1. Введение

1.1 Цель написания

Название проекта: Интеллектуальная система сбора и профилирования событий на основе больших данных Интернета Участники проекта: Юй Цзинцзин, Лю Кеке, Лю Сяньхуэй

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

1.2 Предыстория проекта

Предыстория проект: С Интернетом большой Разработка данных, различных больших Анализ данных оказал разное влияние на различные отрасли. Данные веб-сайтов, данные социальных сетей и т. д. – это огромный Интернет. Важная часть данных. Для гражданской авиации,возникновение социальных событий,Сильно повлияет на изменения спроса пассажиров на поездки,Это повлияет на размещение воздушных судов авиакомпании, организацию рейсов, корректировку тарифной стратегии и т. д.,Точный сбор и анализ интернет-событий может помочь авиакомпаниям лучше обслуживать рынок.、Обслуживать путешественников、Увеличить доход.

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

1.3 Обзор проекта

Команда разработчиков: Уханьский профессионально-технический колледж Команда Zhumengyun Studio demo01

Описание платформы разработки проекта:

Операционная система: Windows7 и выше

Сервер приложений: Ubuntu Server 14.04 LTS, 64-разрядная версия.

Конфигурация сервера: CUP: 1 ядро ​​Память: 1 ГБ Пропускная способность общедоступной сети: 1 Мбит/с Жесткий диск: 20 ГБ

Сервер приложений: Серверы Windows 2008

Конфигурация сервера: CUP: 1 ядро ​​Память: 2 ГБ Пропускная способность общедоступной сети: 1 Мбит/с Жесткий диск: 40 ГБ

Сетевая архитектура: полностью поддерживает протокол TCP/IP.

Инструменты разработки или технологические системы: Язык разработки: Python 3.6, Инструменты разработки: Pycharm 2017.

База данных: MongoDB 3.4.3.

Описание операционной среды программного обеспечения:

оборудование:

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

Компьютер с 1-ядерным процессором, отвечающий следующим требованиям:

Минимум 1 ГБ памяти

Жесткий диск минимум 20 ГБ

Требования к оборудованию веб-сервера:

Компьютер с 1-ядерным процессором, отвечающий следующим требованиям:

Минимум 1 ГБ памяти

Жесткий диск минимум 20 ГБ

Шина ввода-вывода: 8 М/с;

Требования к оборудованию сервера базы данных:

Компьютер с 1-ядерным процессором, отвечающий следующим требованиям:

Минимум 1 ГБ памяти

Жесткий диск минимум 20 ГБ

2. Общие требования

2.1 Обзор функций системы

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

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

2. Реализовать функцию дедупликации событий. Во-первых, дедупликация событий из разных источников данных (сайтов), во-вторых, дедупликация событий, зафиксированных в разные дни.

3. Моделирование портрета событий, то есть автоматическое извлечение атрибутов событий.

4. Используйте DataV для визуального отображения.

2.2 Функциональные требования к системе

1. Модуль веб-сканера осуществляет захват интернет-событий.

2. Модуль журналов осуществляет генерацию журналов между каждым модулем.

3. Модуль обработки данных осуществляет подготовку, очистку, дедупликацию и преобразование данных.

4. Модуль моделирования данных устанавливает модели, расчеты и преобразования данных.

5. Модуль портрета событий сегментирует события и извлекает атрибуты.

6. DataV выполняет визуальное отображение.

3.Разработка программного обеспечения

3.1 Анализ требований к программному обеспечению

Анализ системных требований: предоставление услуг по распределению пропускной способности самолетов авиакомпаний, планированию полетов и стратегии тарифов.

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

3.2 Эскизный проект программного обеспечения

3.2.1 Описание конструкции программного обеспечения

Программная система использует архитектуру B/S, а программа развертывается на облачном сервере.

3.2.2 Основные концепции проектирования и процесс обработки

Учитывая, что сложность данных в Интернете очень высока, а данные о событиях, как правило, представляют собой неструктурированные данные, их обработка и анализ сложны, а также предъявляются высокие требования к стабильности и скорости сканирования сканера. Мы используем технологию Scrapy Crawler. используется для сканирования данных с различных веб-сайтов, их обработки, использования базы данных NoSQL MongoDB для хранения полуструктурированных данных, профилирования, анализа, моделирования данных и развертывания программы в облаке. При доступе к облачной базе данных поток данных сопоставляется с DataV для визуального отображения.

Работа системы показана на рисунке 3-2-2:

Рисунок 3-2-2 Блок-схема системы

Описание дизайна:

1. На каждом компьютере не требуется устанавливать клиентскую программу, но он должен поддерживать IE4.0 или выше;

2. Сервер веб-публикации обращается к серверу базы данных, и сервер базы данных не виден снаружи;

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

4. Многопользовательский одновременный доступ и обработка, блокировка данных и координация транзакций выполняются с помощью базы данных MongoDB. Эта система не предоставляет отдельный сервер обработки транзакций;

5. Фреймворк Scrapy Crawler позволяет обеспечить быстрое, высокопараллельное и высокоуровневое сканирование сети.

3.3 Детальный проект программного обеспечения

3.3.1 Структура системы

Приложение разработано с использованием языка Python, а веб-сканер разработан с использованием платформы Scrapy и развернут на облачном сервере. Учитывая, что данные, собираемые сканером, в основном представляют собой полуструктурированные или неструктурированные данные, мы используем базу данных NoSQL MongoDB. обработка данных. Хранение и развертывание на облачном сервере.

3.3.2 Описание конструкции модуля

Вся система разделена на 6 модулей.

1. Гусеничный модуль

2. Модуль журнала

3. Обработка данных

4. Моделирование данных

5, изображение происшествия

6. Визуальный дисплей

Конструкция системного модуля следующая:

1. Гусеничный модуль разделен на тайминги.

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

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

Модуль сканера показан на рисунке 3-3-2:

Рисунок 3-3-2 Схема модуля обходчика

2. Модуль журнала:Модуль журнал тесно связан с каждым модулем системы. Каждый модуль генерирует журналы при работе, и сгенерированные журналы будут храниться в базе. данных,Удобное управление системой, признание, поиск неисправностей.

Схема конструкции журнала показана на рисунке 3-3-3:

Рисунок 3-3-3 Схема конструкции модуля журнала

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

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

Алгоритм кластеризации: используйте K-средние для обучения без учителя для выполнения кластерного анализа данных.

Количество включений в поисковые системы. Для отсутствующих данных о популярности мы заполнили недостающие данные о популярности, получив количество событий, включенных в поисковую систему Baidu.

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

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

Уровень спонсора

Это международная организация?

Это национальное правительство?

Это правительство провинции?

Это правительство местного уровня?

Тип спонсора

Это отечественная ассоциация гражданского общества?

Это международная ассоциация гражданского общества?

Это отечественная отраслевая ассоциация?

Это международная отраслевая ассоциация?

В основном зависит от возрастной группы

Возрастная группа, которая в основном затрагивается – это дети.

Основная возрастная группа пострадавших – молодежь.

Основная возрастная группа пострадавших – взрослые.

Возрастная группа, в основном затронутая – это пожилые люди.

Есть ли фиксированная группа участников?

Есть ли фиксированная группа участников?

влиять на социальные группы

Влияет ли это на деловых людей?

Влияет ли это на широкую публику?

максимальная сфера влияния

Самое большое глобальное влияние

Наибольшее влияние носит межконтинентальный характер.

Наибольшее влияние по всей стране

Наибольшее влияние на всю провинцию

Наибольшее влияние на город

тип события

Это выставка?

Это концерт?

Это спортивное мероприятие?

Это встреча?

Это местный праздник?

Популярность мероприятия

Популярность мероприятия

История события

История события

Частота событий в течение года

Частота событий в течение года

Основные свойства

Дата начала

дата окончания

Принимающий город

название события

6. Визуальный свет Мы используем инструмент визуализации DataV от Alibaba Cloud для создания изображений на больших цифровых экранах.


3.3.3 Гусеничный модуль

время Гусеничный модульдизайннравиться Рисунок 3.3.3:

Рисунок 3.3.3 время Гусеничный модуль

Скрипт управления синхронизацией программы и сканером TimerAdmins.py

Язык кода:javascript
копировать
import multiprocessing
import time
import pymongo
from SpiderAdmin import CrawlAdmin
from Log import LogUtils
class ProcessingTest(multiprocessing.Process):
host = ''       #targetIP
port = 0        #Номер порта
def __init__(self,sleep):
multiprocessing.Process.__init__(self)
self.sleep=sleep
self.ConfigDB='Config'
self.ConfigTdb='timer'
#уровень операции
def run(self):
log = LogUtils()
client = pymongo.MongoClient(host=self.host, port=self.port)
db = client[self.ConfigDB]
table = db[self.ConfigTdb]
while True:
''' Получить отметку текущего времени'''
times=time.time()
'''Получить текущее время и удалить десятичные дроби'''
tim=int(str(times).split('.')[0])
'''Получить текущую дату'''
date=tim//86400
'''отбаза данных Запросдата'''
info=table.find_one({"config": "timer"})
print('data----------------------->'+str(date ))
dateInfo=-1
'''Если база данных Если записи нет, сохраните ее'''
if info==None:
печать('Нет данных')
log.I('TimerAdmins','Первый запуск базы В данных нет данных')
table.insert({"config": "timer","time":date})
p = CrawlAdmin(1)
p.start()
print("Гусеничный запущен модуль")
log.I('TimerAdmins', 'Уже начал Гусеничный модуль')
time.sleep(self.sleep)
else:
'''
Если база Если в данных есть запись, сравните ее с текущей датой, полученной выше.
'''
print(info)
dateInfo=int(info['time'])
''' Как текущая дата больше базы данныхдата '''
print("------------------------"+str(dateInfo))
if date>dateInfo:
timers=tim%86400
print('timers'+str(timers))
if date-dateInfo==1:
if timers>21600:
info['time']=date
table.save(info)
p=CrawlAdmin(1)
p.start()
print("Гусеничный запущен модуль---")
log.I('TimerAdmins', 'Уже начал Гусеничный модуль')
else:
info['time'] = date-1
table.save(info)
p = CrawlAdmin(1)
p.start()
print("Гусеничный запущен модуль---")
log.I('TimerAdmins', 'Уже начал Гусеничный модуль')
time.sleep(self.sleep)
else:
print('Данные уже самые свежие, обновлять не нужно')
log.I('TimerAdmins', 'Данные уже самые свежие, Гусеничного заводить не надо модуль Обновление')
time.sleep(self.sleep)
если __name__ =="__main__":
print('Администратор времени начинает работу')
p=ProcessingTest(900)
p.start()
print(p.pid)

3.3.4 Модуль журнала

Модуль журналадизайннравитьсякартина 3.3.4:

Рисунок 3.3.4 Диаграмма классов интерфейса журнала

Алгоритм и конструкция исходного кода следующие:

Язык кода:javascript
копировать
import pymongo
import time
import traceback
class  LogUtils():
host = ''      #Целевой IP-адрес хоста
port = 0      #Номер порта
def __init__(сам):
self.LogDB='Журнал'
self.Table=''
self.client=pymongo.MongoClient(хост=self.Host,порт=self.port)
self.db=self.client[self.LogDB]
'''
обычно Информация журнала
table  :  название поверхности бревна Пишите имена классов единообразно
LogInfo:  содержимое журнала
'''
def InfoLog(self,Table,LogInfo):
try:
self.Table=Table
table=self.db[self.Table]
times=str(time.time()).split('.')[0]
timeArray=time.localtime(int(times))
OtherStyleTime=time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
table.insert({'logInfo':LogInfo,'Grade':'Info','time':OtherStyleTime})
except:
traceback.print_exc()
'''
обычно Информация журнала перегруженный метод  Простой способ написания
table  :  название поверхности бревна Пишите имена классов единообразно
LogInfo:  содержимое журнала
'''
def I(self,Table,LogInfo):
try:
self.Table=Table
table=self.db[self.Table]
times=str(time.time()).split('.')[0]
timeArray=time.localtime(int(times))
OtherStyleTime=time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
table.insert({'logInfo':LogInfo,'Grade':'Info','time':OtherStyleTime})
кроме:
трассировка.print_exc()
'''
ошибка Информация журнала 
table  :  название поверхности бревна Пишите имена классов единообразно
LogInfo:  содержимое журнала
'''
def ErrorLog(self,Table,LogInfo):
try:
self.Table=Table
table=self.db[self.Table]
times=str(time.time()).split('.')[0]
timeArray=time.localtime(int(times))
OtherStyleTime=time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
table.insert({'logInfo':LogInfo,'Grade':'Error','time':OtherStyleTime})
кроме:
трассировка.print_exc()
'''
ошибка Информация журнала перегруженный метод  Простой способ написания
table  :  название поверхности бревна Пишите имена классов единообразно
LogInfo:  содержимое журнала
'''
def E(self,Table,LogInfo):
try:
self.Table=Table
table=self.db[self.Table]
times=str(time.time()).split('.')[0]
timeArray=time.localtime(int(times))
OtherStyleTime=time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
table.insert({'logInfo':LogInfo,'Grade':'Error','time':OtherStyleTime})
except:
traceback.print_exc()
'''
отладочная информация журнала 
table  :  название поверхности бревна Пишите имена классов единообразно
LogInfo:  содержимое журнала
'''
def DeBugLog(self,Table,LogInfo):
try:
self.Table=Table
table=self.db[self.Table]
times=str(time.time()).split('.')[0]
timeArray=time.localtime(int(times))
OtherStyleTime=time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
table.insert({'logInfo':LogInfo,'Grade':'DeBug','time':OtherStyleTime})
except:
traceback.print_exc()
'''
отладочная информация журнала перегруженный метод  Простой способ написания
table  :  название поверхности бревна Пишите имена классов единообразно
LogInfo:  содержимое журнала
'''
def D(self,Table,LogInfo):
try:
self.Table=Table
table=self.db[self.Table]
times=str(time.time()).split('.')[0]
timeArray=time.localtime(int(times))
OtherStyleTime=time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
table.insert({'logInfo':LogInfo,'Grade':'DeBug','time':OtherStyleTime})
except:
traceback.print_exc()

3.3.5 Обработка данных

Обработка файл данныхscript ToHeavy.py

Схема дедупликации данных показана на рисунке 3.3.5:

Рисунок 3.3.5 Интерфейс дедупликации данных и диаграмма классов

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

Язык кода:javascript
копировать
import jieba
from datetime import *
from pymongo import MongoClient
import time
from OperatingDB import OperatingDB
def connDB(ip, port, tableName, base):
db = OperatingDB(ip, port)
table = db.createTable(tableName, base)
return table
#Получить дату за последние три дня (добавить к поверхности столбца в виде строки)
def past_three_days(time, daynum, pastday_lit):
date_time = datetime.strptime(time, '%Y-%m-%d')
for i in range(daynum):
pastday = date_time - timedelta(i)
strpastday = datetime.strftime(pastday, '%Y-%m-%d')
pastday_lit.append(strpastday)
#Запросить данные за последние три дня
def pastThreeDayData(table, pastday_lit):
past_one_day = {}
past_two_day= {}
past_three_day = {}
key = 'Дата начала'
past_one_day[key] = pastday_lit[0]
past_two_day[key] = pastday_lit[1]
past_three_day[key] = pastday_lit[2]
data = table.find({'$or':[past_one_day, past_two_day, past_three_day]})
title_lit = []
for i in data:
title_lit.append(i['название события'])
return title_lit
#возвращаться отметьте, если flag = 0, тогда поверхность указывает на повторяющиеся данные   
def toheavy(table, title, titles):
#Обработка словесной сегментации заголовков
title_Participle = jieba.lcut(title)
for title in titles:
count = 0
title_tmp = jieba.lcut(title)
for i in title_Participle:
if i in title_tmp:
count += 1
frequency = count/len(title_Participle)*100
if(frequency > 65):
print('Сходство превышает 65%, Удалить дубликаты')
flag = 0
if flag == 1:
print('Нет повторяющихся данных')
return flag

3.3.6 Моделирование данных

3.3.6.1 Алгоритм кластеризации

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

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

Данные выставочного портала Китая показаны на рисунке 3.3.6.1:

Рисунок 3.3.6.1 Диаграмма данных Китайского выставочного портала

K-Means Алгоритм кластеризациииллюстрировать:в конкретном Алгоритм кластеризации Мы используемK-MeansАлгоритм кластеризации,верно Моделирование данных,Воля Популярность мероприятия Разделен на три категории,теперь это Кластеризация популярности级别为 1, 2, 3. Алгоритм K-Means представляет собой неиерархический алгоритм, основанный на расстоянии. кластеризации,существоватьсамый На основе функции ошибок, основанной на небольшом количестве, данные делятся на заранее определенное количество категорий K, а расстояние используется в качестве показателя оценки сходства. Считается, что чем меньше расстояние между двумя объектами, тем больше сходство. Евклидово расстояние используется для измерения сходства между образцами, и формула такая: картина 3.3.6.2:

Рисунок 3.3.6.2 Схема формулы евклидова расстояния

Подробное описание алгоритма показано на рисунке 3.3.6.3:

Рисунок 3.3.6.3 Описание алгоритма

Конструкция программы моделирования и описание алгоритма: файл алгоритма кластеризации KMeans.py.

Исходный код алгоритма кластеризации K-Means выглядит следующим образом:

Язык кода:javascript
копировать
#-*- coding: utf-8 -*-
import pandas as pd
from sklearn.cluster import KMeans
import xlrd
import openpyxl
import matplotlib.pyplot as plt
class Kmeans:
'''Кластеризация данных'''
k = 3                   #Количество категорий кластеризации (встроено)
iteration = 500         #Максимальное количество циклов кластеризации (встроенное)
jobs = 4                #Устанавливаем количество параллелизма (встроенное)
def readData(self, inputfile):
'''Читать данные с диска'''
self.inputfile = inputfile
#Читать данные
data = pd.read_excel(self.inputfile)
# Удалить ненужные поля
data.drop(['название события','начинатьвремя'], 1, inplace=True)
return data
def writeData(self, outputfile, data):
'''Запись в файл'''
self.outputfile = outputfile
data.to_excel(self.outputfile)
def KMeansCompute(self, data):
'''Расчет кластеризации K-средних'''
#нормализация данных
data_zs = 1.0 * (data - data.mean())/data.std()
#Анализируется как категория K, Количество параллелизма 4
model = KMeans(n_clusters = self.k, n_jobs = self.jobs, max_iter = self.iteration)
model.fit(data_zs)  #Начать кластеризацию
r1 = pd.Series(model.labels_).value_counts()
r2 = pd.DataFrame(model.cluster_centers_)   #Находим центр кластера
r = pd.concat([r2, r1], axis = 1)   #горизонтальное соединение
r.columns = list(data.columns) + ['количество категорий']
#Подробный вывод
r = pd.concat([data, pd.Series(model.labels_, index = data.index)], axis = 1)
r.columns = list(data.columns) + ['Категория кластера']   #renameповерхностьголова
return r

После завершения кластеризации по Уровню события спонсора、Тип спонсора и сфера влияния свойств на Кластеризацию Популярность взвешивается для получения атрибута нагревать.

3.3.6.2 Количество включений в поисковые системы

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

Получите файл с номером, включенным в поисковую систему: GetSearchEngineResult.py.

Язык кода:javascript
копировать
import re
import requests
class GetSearchEngineResult:
#Получить количество результатов поисковой системы Baidu
def getHTMLText(self, url):
try:
r = requests.get(url, timeout = 10, headers = {'user-agent' : 'Mozilla/5.0'})
r.raise_for_status()
return r.text
except:
print("Исключение при анализе результатов Baidu")
def getBaiduResult(self, title):
baseURL = 'http://www.baidu.com/'
url = baseURL + 's?' + 'wd=' + title
html = self.getHTMLText(url)
regex = r'Baidu нашел для вас подходящие результаты.*?'
numRegex = r'[0-9]'
data = re.search(regex, html)
heatStr = ''
if data:
num = re.findall(numRegex, data.group())
for i in num:
heatStr += i
heat = self.getBaiduHeat(eval(heatStr))
return heat

3.3.7 Изображения происшествий

3.3.7.1 изображение инцидентасистемадизайн

изображение интегрированное изображение системы аварии сценарий управления инцидентами, инициализация выборки данных, вывод выборки событий, Моделирование данных、изображение инцидентаи другие функции。изображение инцидентасистема调用Моделирование Модуль данных извлекает атрибуты различных событий и генерирует образцы событий. изображение инцидентасистемадизайннравитьсякартина 3.3.7.1:

картина 3.3.7.1изображение инцидентасистемадизайнкартина

3.3.7.2изображение инцидента

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

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

изображение инцидентадизайн и классы интерфейса, такие как картина 3.3.7.2:

картина 3.3.7.2 изображение инцидента模块接口и类картина

3.3.8 Визуальный дисплей

Мы используем DataV от Alibaba для создания визуальных изображений. светильник, построение облачной базы с DataV соединение данных для реализации сопоставления потока данных с DataV. таким образом генерируя Большой экран данных。

Визуальный дисплей Предварительный просмотркартинанравитьсякартина 3.3.8:

картина 3.3.8 Большой экран данных

3.4 Проектирование базы данных

3.4.1 Описание базы данных

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

Программное обеспечение базы данных: MongoDB. Имя созданной базы данных: Spider、Config、DataV、Log Сохраните данные, полученные сканером: Spider База данных конфигурации системы: Config хранилище Визуальный База данных данных об светильниках: DataV Сохранение данных журнала: Log

3.4.2 Операции с базой данных

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

** ** Функция ConnectMongoDB.py: подключение к базе данных mongodb.

Исходный код для подключения к интерфейсу базы данных:

Язык кода:javascript
копировать
from pymongo import MongoClient
class ConnectMongo:
'''Подключить базу данных'''
client = None
# ipaddr: IP-адрес, порт: номер порта
def connect(self, ipaddr, port):    #Установить соединение
self.client = MongoClient(ipaddr, port)
def close(self):                      #Закрыть соединение
return self.client.disconnect()
def getConn(self):                  #возвращатьсясоединять
return self.client

Функция OperatingDB.py: инкапсулирует операции с базой данных, создание таблиц\коллекций, вставку данных, удаление данных, запрос данных и закрытие соединений с базой данных.

Язык кода:javascript
копировать
from ConnectMongoDB import ConnectMongo
class OperatingDB:
'''Операция Монгодббаза данных'''
def __init__(self, ipaddr, port):
conn = ConnectMongo()
conn.connect(ipaddr,port)
self.client = conn.getConn()
#tableName:поверхностьимя, base:база данныхимя
def createTable(self, tableName, base):
'''Создать базу данныхиповерхность'''
self.crawl = self.client[base]
self.table = self.crawl[tableName]
return self.table
#data: вставленные данные
def insertDatas(self, data):
self.table.insert(data)
def deleteData(self, data):
'''Удалить данные'''
self.table.remove(data)
#q: условие запроса, проекция: поле запроса.
def query_one(self, q = {}, projection = {'_id' : 0}):
'''Запросить фрагмент данных'''
return self.table.find_one(q, projection)
def query(self, q = {}, projection = {'_id' : 0}):
'''Данные запроса'''
return self.table.find(q, projection)
def closeConn(self):
'''Тесное соединение'''
self.client.close()

3.4.3 Структура базы данных

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

Структура базы данных следующая.

база данных

поверхность

Spider

CityWeather

DamaiConcert

DamaiSports

JuchengConcert

WaringWeahter

XishiquSports

YongleConcert

YongleSports

cnena

eshow

people

trafficcontrol

xinhuanet

XishiquConcert

Config

timer

Log

CityWeather

ConcertAttr

CrawlAdmin

DaMaiPW

DaMaiWang

EventPortraitAdmin

ExhibitionAttr

JuChenSpider

SportAttr

TimerAdmins

WarningCrawl

XishiquConcert..

XishiquSports

people

xinhuanet

yonglePW

DataV

DataV

3.4.4 Структура таблицы

MongoDB хранит данные в виде документа/поверхности.,Структура данных состоит из ключевых значений(key=>value)верно组成。MongoDB Документ/поверхность похож на JSON объект. база данныхкаждыйповерхность Поледизайннравиться下。

база данных:Spider

поверхностьимя:CityWeather

Имя поля

Китайское описание

тип данных

city

название города

String

high

максимальная температура

String

fengxiang

направление ветра

String

low

самый низкийтемпература

String

fengli

сила ветра

String

type

тип погоды

String

date

дата

String

Wendu

температура

String

Status

состояние

String

поверхностьимя:DamaiConcert、JuchengConcert、YongleConcert

Имя поля

тип данных

название события

String

Принимающий город

String

Место проведения

String

Дата начала

String

дата окончания

String

Стоимость билета

String

тип события

String

поверхностьимя:DamaiSports

Имя поля

тип данных

название события

String

Принимающий город

String

Место проведения

String

Дата начала

String

дата окончания

String

тип события

String

поверхностьимя:Longitudes

Имя поля

тип данных

Город

String

долгота

String

Размеры

String

поверхностьимя:WaringWeather

Имя поля

тип данных

название события

String

Время выпуска

String

Раннее предупреждение

String

Тип предупреждения

String

Подробности предупреждения

String

поверхностьимя:XishiquConcert、XishiquSports

Имя поля

тип данных

тип события

String

название события

String

Дата начала

String

Место проведения

String

Принимающий город

String

дата окончания

String

Совокупные транзакции

String

Количество подписчиков

String

Подробная популярность

String

поверхностьимя:YongleSports

Имя поля

тип данных

название события

String

Место проведения

String

Принимающий город

String

Дата начала

String

дата окончания

String

тип

String

тип события

String

поверхностьимя:cnena

Имя поля

тип данных

тип события

String

название события

String

индекс внимания

String

Дата начала

String

дата окончания

String

Место проведения выставки

String

Организационная структура

String

Обзор выставки

String

Область обзора

String

Принимающий город

String

Кластеризация популярности

String

поверхностьимя:eshow

Имя поля

тип данных

тип события

String

Этикетка

String

название события

String

Дата начала

String

дата окончания

String

Выставочный зал

String

Промышленность

String

Принимающий город

String

Организатор

String

Выставочная площадь

String

Количество проведенных сессий

String

Цикл выдержки

String

Плата за посещение

String

Обзор выставки

String

частота событий

String

поверхностьимя:people

Имя поля

тип данных

тип события

String

название события

String

ключевые слова

String

источник

String

описывать

String

Дата начала

String

Содержание встречи

String

поверхностьимя:trafficcontrol

Имя поля

тип данных

тип события

String

название события

String

содержание

String

Дата начала

String

поверхностьимя:xinhuanet

Имя поля

тип данных

тип события

String

название события

String

ключевые слова

String

Дата начала

String

Содержание встречи

String

база данных:Config

поверхностьимя:timer

Имя поля

Китайское описание

тип данных

_id

идентификационный номер

ObjectId

config

Информация о конфигурации

String

timer

время

Date

база данных:Log

поверхностьимя:CityWeather、ConcertAttr、CrawlAdmin、DaMaiPW、EventPortrait、EventPortraitAdmin、

ExhibitionAttr、JuChenSpider、SportAttr、TimerAdmin、WarngingCrawl、XishiquConcert、XishiquSports、people、xinhuanet、yonglePW。

Имя поля

Китайское описание

тип данных

_id

идентификационный номер

ObjectId

logInfo

Информация журнала

String

Grade

Сообщение об ошибке

String

Time

время

String

база данных:DataV

поверхностьимя:DataV

Имя поля

тип данных

_id

ObjectId

нагревать

int

Характер отрасли

String

Влиять на людей

String

максимальная сфера влияния

String

тип события

String

Влияние на бизнес и общественную долю

String

Организационная природа

String

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

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/190675.html Исходная ссылка: https://javaforall.cn

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose