Методы анализа больших данных (Syllabus) 2025/Lesson ML: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) |
Patarakin (обсуждение | вклад) |
||
| Строка 53: | Строка 53: | ||
@enduml | @enduml | ||
</uml> | </uml> | ||
== Процесс получения данных == | |||
<syntaxhighlight lang="R" line> | |||
library(httr) | |||
library(jsonlite) | |||
library(xml2) | |||
library(tidyverse) | |||
library(quanteda) | |||
# Установка дополнительных пакетов | |||
library(stopwords) | |||
library(stringr) | |||
########### | |||
get_wikipedia_category_members <- function(category_name, language = "ru") { | |||
# Базовый URL API | |||
base_url <- paste0("https://", language, ".wikipedia.org/w/api.php") | |||
all_members <- data.frame() | |||
continue_token <- NULL | |||
repeat { | |||
# Формируем параметры запроса | |||
params <- list( | |||
action = "query", | |||
list = "categorymembers", | |||
cmtitle = paste0("Category:", category_name), | |||
cmlimit = 500, # Максимум результатов за раз | |||
format = "json", | |||
cmtype = "page", # Только статьи, не категории | |||
cmcontinue = continue_token | |||
) | |||
# Выполняем запрос | |||
response <- GET(base_url, query = params) | |||
# Проверяем статус ответа | |||
if (status_code(response) != 200) { | |||
warning("Ошибка при запросе к API: статус ", status_code(response)) | |||
break | |||
} | |||
# Парсим JSON | |||
data <- fromJSON(content(response, as = "text", encoding = "UTF-8")) | |||
# Извлекаем члены категории | |||
if (!is.null(data$query$categorymembers)) { | |||
members <- data$query$categorymembers %>% | |||
as_tibble() %>% | |||
select(pageid, title) | |||
all_members <- bind_rows(all_members, members) | |||
} | |||
# Проверяем, есть ли продолжение запроса | |||
if (is.null(data$`query-continue`$categorymembers$cmcontinue)) { | |||
break | |||
} | |||
continue_token <- data$`query-continue`$categorymembers$cmcontinue | |||
} | |||
return(all_members) | |||
} | |||
iot_articles <- get_wikipedia_category_members("Интернет вещей") | |||
cat("Найдено статей:", nrow(iot_articles), "\n") | |||
head(iot_articles) | |||
</syntaxhighlight> | |||
Версия от 12:28, 14 ноября 2025
Урок по анализу данных с использованием методов машинного обучения
D1

D 2

Диаграмма процесса очистки текста

Процесс получения данных
library(httr)
library(jsonlite)
library(xml2)
library(tidyverse)
library(quanteda)
# Установка дополнительных пакетов
library(stopwords)
library(stringr)
###########
get_wikipedia_category_members <- function(category_name, language = "ru") {
# Базовый URL API
base_url <- paste0("https://", language, ".wikipedia.org/w/api.php")
all_members <- data.frame()
continue_token <- NULL
repeat {
# Формируем параметры запроса
params <- list(
action = "query",
list = "categorymembers",
cmtitle = paste0("Category:", category_name),
cmlimit = 500, # Максимум результатов за раз
format = "json",
cmtype = "page", # Только статьи, не категории
cmcontinue = continue_token
)
# Выполняем запрос
response <- GET(base_url, query = params)
# Проверяем статус ответа
if (status_code(response) != 200) {
warning("Ошибка при запросе к API: статус ", status_code(response))
break
}
# Парсим JSON
data <- fromJSON(content(response, as = "text", encoding = "UTF-8"))
# Извлекаем члены категории
if (!is.null(data$query$categorymembers)) {
members <- data$query$categorymembers %>%
as_tibble() %>%
select(pageid, title)
all_members <- bind_rows(all_members, members)
}
# Проверяем, есть ли продолжение запроса
if (is.null(data$`query-continue`$categorymembers$cmcontinue)) {
break
}
continue_token <- data$`query-continue`$categorymembers$cmcontinue
}
return(all_members)
}
iot_articles <- get_wikipedia_category_members("Интернет вещей")
cat("Найдено статей:", nrow(iot_articles), "\n")
head(iot_articles)
