<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%81%D1%82%D0%B0%D1%82%D0%B5%D0%B9_%D0%B2%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D0%B8_%D0%BE%D0%B1_%D0%98%D0%98</id>
	<title>Анализ статей википедии об ИИ - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%81%D1%82%D0%B0%D1%82%D0%B5%D0%B9_%D0%B2%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D0%B8_%D0%BE%D0%B1_%D0%98%D0%98"/>
	<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%81%D1%82%D0%B0%D1%82%D0%B5%D0%B9_%D0%B2%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D0%B8_%D0%BE%D0%B1_%D0%98%D0%98&amp;action=history"/>
	<updated>2026-06-10T16:32:24Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%81%D1%82%D0%B0%D1%82%D0%B5%D0%B9_%D0%B2%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D0%B8_%D0%BE%D0%B1_%D0%98%D0%98&amp;diff=39331&amp;oldid=prev</id>
		<title>Арина Климова: Новая страница: «&#039;&#039;&#039;Анализатор статей Википедии об искусственном интеллекте&#039;&#039;&#039; — это Python-скрипт для автоматизированного сбора, обработки и сравнительного анализа статей из русскоязычной Википедии по тематике искусственного интеллекта и смежных областей. Программа ре...»</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%81%D1%82%D0%B0%D1%82%D0%B5%D0%B9_%D0%B2%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D0%B8_%D0%BE%D0%B1_%D0%98%D0%98&amp;diff=39331&amp;oldid=prev"/>
		<updated>2025-12-19T12:46:16Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&amp;#039;&amp;#039;&amp;#039;Анализатор статей Википедии об искусственном интеллекте&amp;#039;&amp;#039;&amp;#039; — это Python-скрипт для автоматизированного сбора, обработки и сравнительного анализа статей из русскоязычной Википедии по тематике искусственного интеллекта и смежных областей. Программа ре...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Анализатор статей Википедии об искусственном интеллекте&amp;#039;&amp;#039;&amp;#039; — это Python-скрипт для автоматизированного сбора, обработки и сравнительного анализа статей из русскоязычной Википедии по тематике искусственного интеллекта и смежных областей. Программа реализует простой, но эффективный подход к анализу текстового контента с использованием публичного API Википедии.&lt;br /&gt;
&lt;br /&gt;
==Обзор==&lt;br /&gt;
Скрипт представляет собой консольное приложение, которое последовательно:&lt;br /&gt;
#Собирает статьи из указанных категорий Википедии&lt;br /&gt;
#Извлекает и анализирует текстовое содержимое статей&lt;br /&gt;
#Проводит сравнительный анализ по нескольким метрикам&lt;br /&gt;
#Выявляет общие темы и терминологические паттерны&lt;br /&gt;
#Формирует структурированный отчёт о результатах анализа&lt;br /&gt;
&lt;br /&gt;
==Архитектура и принцип работы==&lt;br /&gt;
===Основные компоненты===&lt;br /&gt;
Класс SimpleWikiAnalyzer&lt;br /&gt;
Центральный класс, содержащий всю логику анализа. Основные методы:&lt;br /&gt;
&lt;br /&gt;
get_articles_in_category() — получает список статей из указанной категории через API Википедии&lt;br /&gt;
&lt;br /&gt;
get_article_content() — загружает полный текст статьи с метаданными (количество слов, размер, URL)&lt;br /&gt;
&lt;br /&gt;
analyze_text() — выполняет лингвистический анализ текста (частотность слов, статистика)&lt;br /&gt;
&lt;br /&gt;
compare_articles() — сравнивает статьи по ключевым метрикам&lt;br /&gt;
&lt;br /&gt;
find_common_themes() — выявляет общие термины и темы&lt;br /&gt;
&lt;br /&gt;
===API взаимодействие===&lt;br /&gt;
Программа использует официальное API Википедии (https://ru.wikipedia.org/w/api.php) с параметрами:&lt;br /&gt;
&lt;br /&gt;
action=query — основной метод запроса&lt;br /&gt;
&lt;br /&gt;
list=categorymembers — получение списка статей категории&lt;br /&gt;
&lt;br /&gt;
prop=extracts|info — получение содержимого и метаданных статей&lt;br /&gt;
&lt;br /&gt;
explaintext=True — получение текста без разметки&lt;br /&gt;
&lt;br /&gt;
===Аналитические функции===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Статистический анализ&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#Подсчёт общего количества слов в статье&lt;br /&gt;
#Подсчёт уникальных слов (лексическое разнообразие)&lt;br /&gt;
#Частотный анализ слов (топ-10 наиболее употребляемых)&lt;br /&gt;
#Исключение стоп-слов (служебных и малозначимых слов)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Сравнительный анализ&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#Ранжирование статей по объёму&lt;br /&gt;
#Выявление самых больших и самых маленьких статей&lt;br /&gt;
#Анализ распределения терминологии между статьями&lt;br /&gt;
#Тематический анализ&lt;br /&gt;
#Поиск и подсчёт ключевых терминов ИИ в текстах&lt;br /&gt;
#Выявление статей с наибольшей концентрацией профильной терминологии&lt;br /&gt;
#Анализ пересекающихся тематик&lt;br /&gt;
&lt;br /&gt;
===Алгоритм работы===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Этап 1: Сбор данных&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Определение целевых категорий:&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
#Искусственный интеллект&lt;br /&gt;
#Машинное обучение&lt;br /&gt;
#Нейронные сети&lt;br /&gt;
#Обработка естественного языка&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Получение списка статей:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#Для каждой категории запрашивается до 8 статей&lt;br /&gt;
#Извлекаются заголовки и идентификаторы статей&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Загрузка контента:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#Для каждой статьи загружается текст (первые 1500 символов)&lt;br /&gt;
#Собираются метаданные: количество слов, размер в KB, URL&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Этап 2: Обработка текста.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Очистка текста:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#Удаление вики-разметки [ссылок]&lt;br /&gt;
#Приведение к нижнему регистру&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Токенизация:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#Разбивка текста на слова с помощью регулярных выражений&lt;br /&gt;
#Фильтрация коротких слов (&amp;lt;3 символов)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Частотный анализ:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#Подсчёт встречаемости каждого слова&lt;br /&gt;
#Исключение предопределённого списка стоп-слов&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Этап 3: Анализ и визуализация&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#Сравнительная статистика:&lt;br /&gt;
#Общее количество проанализированных слов&lt;br /&gt;
#Средний размер статьи&lt;br /&gt;
#Рейтинг статей по объёму&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Терминологический анализ:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#Поиск 18 ключевых терминов ИИ&lt;br /&gt;
#Анализ их распределения по статьям&lt;br /&gt;
#Выявление статей с наибольшей терминологической насыщенностью&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Формирование отчёта:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#Консольный вывод структурированных результатов&lt;br /&gt;
#Сохранение полных данных в JSON-формат&lt;br /&gt;
&lt;br /&gt;
===Особенности реализации===&lt;br /&gt;
#инималистичная архитектура&lt;br /&gt;
#Единственная внешняя зависимость — библиотека requests&lt;br /&gt;
#Локальное хранение промежуточных данных&lt;br /&gt;
#Отсутствие сложных структур данных&lt;br /&gt;
&lt;br /&gt;
===Устойчивость к ошибкам===&lt;br /&gt;
Обработка исключений при сетевых запросах&lt;br /&gt;
#Проверка наличия запрашиваемых статей&lt;br /&gt;
#Задержки между запросами для соблюдения правил API&lt;br /&gt;
&lt;br /&gt;
===Расширяемость===&lt;br /&gt;
#Модульная структура класса&lt;br /&gt;
#Возможность добавления новых категорий для анализа&lt;br /&gt;
#Легко модифицируемые списки ключевых терминов&lt;br /&gt;
&lt;br /&gt;
===Метрики анализа===&lt;br /&gt;
#Количественные метрики&lt;br /&gt;
#Объём текста: количество слов, размер в килобайтах&lt;br /&gt;
#Лексическое разнообразие: отношение уникальных слов к общему количеству&lt;br /&gt;
#Терминологическая плотность: частота ключевых терминов ИИ&lt;br /&gt;
&lt;br /&gt;
===Качественные метрики===&lt;br /&gt;
#Тематическая релевантность: концентрация профильной терминологии&lt;br /&gt;
&lt;br /&gt;
#Информационная насыщенность: соотношение значимых и служебных слов&lt;br /&gt;
&lt;br /&gt;
#Тематическое пересечение: общие термины между статьями разных категорий&lt;br /&gt;
&lt;br /&gt;
===Технические ограничения===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ограничения API Википедии&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#Максимальное количество статей за один запрос — 500&lt;br /&gt;
#Ограничение на частоту запросов&lt;br /&gt;
#Частичное извлечение текста (первые 1500 символов)&lt;br /&gt;
#Лингвистические ограничения&lt;br /&gt;
#Простой алгоритм выделения слов (регулярные выражения)&lt;br /&gt;
#Фиксированный список стоп-слов&lt;br /&gt;
#Отсутствие морфологического анализа&lt;br /&gt;
&lt;br /&gt;
==Код на Python==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Минималистичный анализ статей Википедии об искусственном интеллекте&lt;br /&gt;
Зависимости: только requests (установить: pip install requests)&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
import time&lt;br /&gt;
from datetime import datetime&lt;br /&gt;
import re&lt;br /&gt;
from collections import Counter&lt;br /&gt;
import json&lt;br /&gt;
&lt;br /&gt;
class SimpleWikiAnalyzer:&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.base_url = &amp;quot;https://ru.wikipedia.org/w/api.php&amp;quot;&lt;br /&gt;
        self.session = requests.Session()&lt;br /&gt;
        self.session.headers.update({&lt;br /&gt;
            &amp;quot;User-Agent&amp;quot;: &amp;quot;SimpleWikiAnalyzer/1.0&amp;quot;&lt;br /&gt;
        })&lt;br /&gt;
        &lt;br /&gt;
    def get_articles_in_category(self, category, limit=20):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Получить статьи из категории&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        print(f&amp;quot;\n📚 Собираю статьи из категории: {category}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        articles = []&lt;br /&gt;
        params = {&lt;br /&gt;
            &amp;quot;action&amp;quot;: &amp;quot;query&amp;quot;,&lt;br /&gt;
            &amp;quot;format&amp;quot;: &amp;quot;json&amp;quot;,&lt;br /&gt;
            &amp;quot;list&amp;quot;: &amp;quot;categorymembers&amp;quot;,&lt;br /&gt;
            &amp;quot;cmtitle&amp;quot;: f&amp;quot;Категория:{category}&amp;quot;,&lt;br /&gt;
            &amp;quot;cmlimit&amp;quot;: limit,&lt;br /&gt;
            &amp;quot;cmtype&amp;quot;: &amp;quot;page&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        try:&lt;br /&gt;
            response = self.session.get(self.base_url, params=params)&lt;br /&gt;
            data = response.json()&lt;br /&gt;
            &lt;br /&gt;
            for item in data.get(&amp;quot;query&amp;quot;, {}).get(&amp;quot;categorymembers&amp;quot;, []):&lt;br /&gt;
                articles.append({&lt;br /&gt;
                    &amp;quot;title&amp;quot;: item[&amp;quot;title&amp;quot;],&lt;br /&gt;
                    &amp;quot;pageid&amp;quot;: item[&amp;quot;pageid&amp;quot;]&lt;br /&gt;
                })&lt;br /&gt;
                &lt;br /&gt;
            print(f&amp;quot;✅ Найдено статей: {len(articles)}&amp;quot;)&lt;br /&gt;
            return articles[:limit]&lt;br /&gt;
            &lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            print(f&amp;quot;❌ Ошибка при сборе статей: {e}&amp;quot;)&lt;br /&gt;
            return []&lt;br /&gt;
    &lt;br /&gt;
    def get_article_content(self, title):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Получить содержание статьи&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        params = {&lt;br /&gt;
            &amp;quot;action&amp;quot;: &amp;quot;query&amp;quot;,&lt;br /&gt;
            &amp;quot;format&amp;quot;: &amp;quot;json&amp;quot;,&lt;br /&gt;
            &amp;quot;titles&amp;quot;: title,&lt;br /&gt;
            &amp;quot;prop&amp;quot;: &amp;quot;extracts|info&amp;quot;,&lt;br /&gt;
            &amp;quot;explaintext&amp;quot;: True,&lt;br /&gt;
            &amp;quot;inprop&amp;quot;: &amp;quot;url|size|wordcount&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        try:&lt;br /&gt;
            response = self.session.get(self.base_url, params=params)&lt;br /&gt;
            data = response.json()&lt;br /&gt;
            pages = data.get(&amp;quot;query&amp;quot;, {}).get(&amp;quot;pages&amp;quot;, {})&lt;br /&gt;
            &lt;br /&gt;
            for page_id, page_data in pages.items():&lt;br /&gt;
                if &amp;#039;missing&amp;#039; in page_data:&lt;br /&gt;
                    return None&lt;br /&gt;
                    &lt;br /&gt;
                return {&lt;br /&gt;
                    &amp;quot;title&amp;quot;: page_data.get(&amp;quot;title&amp;quot;, &amp;quot;&amp;quot;),&lt;br /&gt;
                    &amp;quot;word_count&amp;quot;: page_data.get(&amp;quot;wordcount&amp;quot;, 0),&lt;br /&gt;
                    &amp;quot;url&amp;quot;: page_data.get(&amp;quot;fullurl&amp;quot;, &amp;quot;&amp;quot;),&lt;br /&gt;
                    &amp;quot;content&amp;quot;: page_data.get(&amp;quot;extract&amp;quot;, &amp;quot;&amp;quot;)[:1500],  # Первые 1500 символов&lt;br /&gt;
                    &amp;quot;size_kb&amp;quot;: page_data.get(&amp;quot;length&amp;quot;, 0) / 1024&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            print(f&amp;quot;❌ Ошибка при получении статьи &amp;#039;{title}&amp;#039;: {e}&amp;quot;)&lt;br /&gt;
            return None&lt;br /&gt;
    &lt;br /&gt;
    def analyze_text(self, text):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Простой анализ текста&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        # Убираем технические символы&lt;br /&gt;
        text_clean = re.sub(r&amp;#039;\[.*?\]&amp;#039;, &amp;#039;&amp;#039;, text)  # Убираем ссылки в квадратных скобках&lt;br /&gt;
        &lt;br /&gt;
        # Считаем слова&lt;br /&gt;
        words = re.findall(r&amp;#039;\b[а-яА-Яa-zA-Z]{3,}\b&amp;#039;, text_clean.lower())&lt;br /&gt;
        &lt;br /&gt;
        # Популярные слова для исключения (стоп-слова)&lt;br /&gt;
        stop_words = {&amp;#039;это&amp;#039;, &amp;#039;что&amp;#039;, &amp;#039;который&amp;#039;, &amp;#039;также&amp;#039;, &amp;#039;очень&amp;#039;, &amp;#039;может&amp;#039;, &amp;#039;более&amp;#039;, &amp;#039;очень&amp;#039;,&lt;br /&gt;
                     &amp;#039;the&amp;#039;, &amp;#039;and&amp;#039;, &amp;#039;for&amp;#039;, &amp;#039;with&amp;#039;, &amp;#039;that&amp;#039;, &amp;#039;this&amp;#039;, &amp;#039;from&amp;#039;, &amp;#039;have&amp;#039;}&lt;br /&gt;
        &lt;br /&gt;
        # Считаем частоту слов (исключая стоп-слова)&lt;br /&gt;
        word_freq = Counter([w for w in words if w not in stop_words])&lt;br /&gt;
        &lt;br /&gt;
        return {&lt;br /&gt;
            &amp;quot;total_words&amp;quot;: len(words),&lt;br /&gt;
            &amp;quot;unique_words&amp;quot;: len(set(words)),&lt;br /&gt;
            &amp;quot;top_words&amp;quot;: word_freq.most_common(10)&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
    def compare_articles(self, articles_data):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Сравнить статьи по ключевым метрикам&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        print(&amp;quot;\n&amp;quot; + &amp;quot;=&amp;quot;*60)&lt;br /&gt;
        print(&amp;quot;📊 СРАВНИТЕЛЬНЫЙ АНАЛИЗ СТАТЕЙ&amp;quot;)&lt;br /&gt;
        print(&amp;quot;=&amp;quot;*60)&lt;br /&gt;
        &lt;br /&gt;
        # Основная статистика&lt;br /&gt;
        total_words = sum([a.get(&amp;quot;analysis&amp;quot;, {}).get(&amp;quot;total_words&amp;quot;, 0) for a in articles_data])&lt;br /&gt;
        avg_words = total_words / len(articles_data) if articles_data else 0&lt;br /&gt;
        &lt;br /&gt;
        print(f&amp;quot;\n📈 Общая статистика:&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;   • Всего статей проанализировано: {len(articles_data)}&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;   • Общее количество слов: {total_words:,}&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;   • Средний размер статьи: {avg_words:.0f} слов&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Самые большие/маленькие статьи&lt;br /&gt;
        sorted_by_size = sorted(articles_data, &lt;br /&gt;
                              key=lambda x: x.get(&amp;quot;analysis&amp;quot;, {}).get(&amp;quot;total_words&amp;quot;, 0), &lt;br /&gt;
                              reverse=True)&lt;br /&gt;
        &lt;br /&gt;
        print(f&amp;quot;\n📏 Размер статей:&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;   • Самая большая: &amp;#039;{sorted_by_size[0][&amp;#039;title&amp;#039;]}&amp;#039; - {sorted_by_size[0][&amp;#039;analysis&amp;#039;][&amp;#039;total_words&amp;#039;]:,} слов&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;   • Самая маленькая: &amp;#039;{sorted_by_size[-1][&amp;#039;title&amp;#039;]}&amp;#039; - {sorted_by_size[-1][&amp;#039;analysis&amp;#039;][&amp;#039;total_words&amp;#039;]:,} слов&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Самые популярные слова во всех статьях&lt;br /&gt;
        all_top_words = Counter()&lt;br /&gt;
        for article in articles_data:&lt;br /&gt;
            for word, count in article.get(&amp;quot;analysis&amp;quot;, {}).get(&amp;quot;top_words&amp;quot;, []):&lt;br /&gt;
                all_top_words[word] += count&lt;br /&gt;
        &lt;br /&gt;
        print(f&amp;quot;\n🔠 Топ-15 самых частых слов во всех статьях:&amp;quot;)&lt;br /&gt;
        for i, (word, count) in enumerate(all_top_words.most_common(15), 1):&lt;br /&gt;
            print(f&amp;quot;   {i:2d}. {word:&amp;lt;15} — {count} раз&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    def find_common_themes(self, articles_data):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Найти общие темы/термины&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        print(&amp;quot;\n&amp;quot; + &amp;quot;=&amp;quot;*60)&lt;br /&gt;
        print(&amp;quot;🎯 ОБЩИЕ ТЕМЫ И ТЕРМИНЫ&amp;quot;)&lt;br /&gt;
        print(&amp;quot;=&amp;quot;*60)&lt;br /&gt;
        &lt;br /&gt;
        # Термины ИИ для поиска&lt;br /&gt;
        ai_terms = [&lt;br /&gt;
            &amp;#039;искусственный&amp;#039;, &amp;#039;интеллект&amp;#039;, &amp;#039;нейрон&amp;#039;, &amp;#039;сеть&amp;#039;, &amp;#039;машинный&amp;#039;, &amp;#039;обучение&amp;#039;,&lt;br /&gt;
            &amp;#039;алгоритм&amp;#039;, &amp;#039;данные&amp;#039;, &amp;#039;анализ&amp;#039;, &amp;#039;глубокий&amp;#039;, &amp;#039;ai&amp;#039;, &amp;#039;ml&amp;#039;, &amp;#039;нейросеть&amp;#039;,&lt;br /&gt;
            &amp;#039;прогноз&amp;#039;, &amp;#039;модель&amp;#039;, &amp;#039;робот&amp;#039;, &amp;#039;автоматизация&amp;#039;, &amp;#039;компьютерный&amp;#039;&lt;br /&gt;
        ]&lt;br /&gt;
        &lt;br /&gt;
        term_frequency = {}&lt;br /&gt;
        &lt;br /&gt;
        for term in ai_terms:&lt;br /&gt;
            count = 0&lt;br /&gt;
            for article in articles_data:&lt;br /&gt;
                content = article.get(&amp;quot;content&amp;quot;, &amp;quot;&amp;quot;).lower()&lt;br /&gt;
                count += content.count(term)&lt;br /&gt;
            if count &amp;gt; 0:&lt;br /&gt;
                term_frequency[term] = count&lt;br /&gt;
        &lt;br /&gt;
        print(&amp;quot;\n📋 Частота ключевых терминов ИИ:&amp;quot;)&lt;br /&gt;
        for term, freq in sorted(term_frequency.items(), key=lambda x: x[1], reverse=True):&lt;br /&gt;
            print(f&amp;quot;   • {term:&amp;lt;15} — упоминается {freq} раз&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Найти статьи с наибольшим количеством терминов&lt;br /&gt;
        print(&amp;quot;\n🏆 Статьи с наибольшим количеством терминов ИИ:&amp;quot;)&lt;br /&gt;
        article_term_counts = []&lt;br /&gt;
        &lt;br /&gt;
        for article in articles_data:&lt;br /&gt;
            count = 0&lt;br /&gt;
            content_lower = article.get(&amp;quot;content&amp;quot;, &amp;quot;&amp;quot;).lower()&lt;br /&gt;
            for term in ai_terms:&lt;br /&gt;
                count += content_lower.count(term)&lt;br /&gt;
            article_term_counts.append((article[&amp;quot;title&amp;quot;], count))&lt;br /&gt;
        &lt;br /&gt;
        for title, count in sorted(article_term_counts, key=lambda x: x[1], reverse=True)[:5]:&lt;br /&gt;
            print(f&amp;quot;   • {title:&amp;lt;40} — {count} терминов&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    def run_analysis(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Запустить полный анализ&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        print(&amp;quot;=&amp;quot;*60)&lt;br /&gt;
        print(&amp;quot;🤖 АНАЛИЗ СТАТЕЙ ВИКИПЕДИИ ОБ ИСКУССТВЕННОМ ИНТЕЛЛЕКТЕ&amp;quot;)&lt;br /&gt;
        print(&amp;quot;=&amp;quot;*60)&lt;br /&gt;
        &lt;br /&gt;
        # Категории для анализа&lt;br /&gt;
        categories = [&lt;br /&gt;
            &amp;quot;Искусственный интеллект&amp;quot;,&lt;br /&gt;
            &amp;quot;Машинное обучение&amp;quot;,&lt;br /&gt;
            &amp;quot;Нейронные сети&amp;quot;,&lt;br /&gt;
            &amp;quot;Обработка естественного языка&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
        &lt;br /&gt;
        all_articles_data = []&lt;br /&gt;
        &lt;br /&gt;
        for category in categories:&lt;br /&gt;
            print(f&amp;quot;\n{&amp;#039;━&amp;#039;*40}&amp;quot;)&lt;br /&gt;
            print(f&amp;quot;Категория: {category}&amp;quot;)&lt;br /&gt;
            print(f&amp;quot;{&amp;#039;━&amp;#039;*40}&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            # Получить статьи из категории&lt;br /&gt;
            articles = self.get_articles_in_category(category, limit=8)&lt;br /&gt;
            &lt;br /&gt;
            if not articles:&lt;br /&gt;
                print(&amp;quot;   Пропускаем...&amp;quot;)&lt;br /&gt;
                continue&lt;br /&gt;
            &lt;br /&gt;
            # Собрать данные по каждой статье&lt;br /&gt;
            for i, article in enumerate(articles, 1):&lt;br /&gt;
                print(f&amp;quot;   {i}. Анализирую: {article[&amp;#039;title&amp;#039;]}&amp;quot;)&lt;br /&gt;
                &lt;br /&gt;
                data = self.get_article_content(article[&amp;quot;title&amp;quot;])&lt;br /&gt;
                if data and data.get(&amp;quot;content&amp;quot;):&lt;br /&gt;
                    # Анализ текста&lt;br /&gt;
                    analysis = self.analyze_text(data[&amp;quot;content&amp;quot;])&lt;br /&gt;
                    data[&amp;quot;analysis&amp;quot;] = analysis&lt;br /&gt;
                    all_articles_data.append(data)&lt;br /&gt;
                    &lt;br /&gt;
                    # Краткая информация о статье&lt;br /&gt;
                    print(f&amp;quot;     ✓ {data[&amp;#039;word_count&amp;#039;]:,} слов | {data[&amp;#039;size_kb&amp;#039;]:.1f} KB&amp;quot;)&lt;br /&gt;
                    &lt;br /&gt;
                time.sleep(0.2)  # Вежливая задержка&lt;br /&gt;
        &lt;br /&gt;
        if not all_articles_data:&lt;br /&gt;
            print(&amp;quot;\n❌ Не удалось собрать данные для анализа&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        &lt;br /&gt;
        # Провести сравнительный анализ&lt;br /&gt;
        self.compare_articles(all_articles_data)&lt;br /&gt;
        &lt;br /&gt;
        # Найти общие темы&lt;br /&gt;
        self.find_common_themes(all_articles_data)&lt;br /&gt;
        &lt;br /&gt;
        # Вывести краткую информацию по каждой статье&lt;br /&gt;
        print(&amp;quot;\n&amp;quot; + &amp;quot;=&amp;quot;*60)&lt;br /&gt;
        print(&amp;quot;📄 КРАТКАЯ ИНФОРМАЦИЯ ПО СТАТЬЯМ&amp;quot;)&lt;br /&gt;
        print(&amp;quot;=&amp;quot;*60)&lt;br /&gt;
        &lt;br /&gt;
        for i, article in enumerate(all_articles_data, 1):&lt;br /&gt;
            print(f&amp;quot;\n{i}. {article[&amp;#039;title&amp;#039;]}&amp;quot;)&lt;br /&gt;
            print(f&amp;quot;   📝 Слов: {article[&amp;#039;analysis&amp;#039;][&amp;#039;total_words&amp;#039;]:,}&amp;quot;)&lt;br /&gt;
            print(f&amp;quot;   🔤 Уникальных слов: {article[&amp;#039;analysis&amp;#039;][&amp;#039;unique_words&amp;#039;]}&amp;quot;)&lt;br /&gt;
            print(f&amp;quot;   🔗 Ссылка: {article[&amp;#039;url&amp;#039;][:80]}...&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            # Топ-3 слова из статьи&lt;br /&gt;
            top_words = article[&amp;#039;analysis&amp;#039;][&amp;#039;top_words&amp;#039;][:3]&lt;br /&gt;
            words_str = &amp;quot;, &amp;quot;.join([f&amp;quot;{word}({count})&amp;quot; for word, count in top_words])&lt;br /&gt;
            print(f&amp;quot;   🏷️  Ключевые слова: {words_str}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Итоговая статистика&lt;br /&gt;
        print(&amp;quot;\n&amp;quot; + &amp;quot;=&amp;quot;*60)&lt;br /&gt;
        print(&amp;quot;✅ АНАЛИЗ ЗАВЕРШЕН&amp;quot;)&lt;br /&gt;
        print(&amp;quot;=&amp;quot;*60)&lt;br /&gt;
        print(f&amp;quot;📅 Время анализа: {datetime.now().strftime(&amp;#039;%Y-%m-%d %H:%M:%S&amp;#039;)}&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;📚 Всего проанализировано статей: {len(all_articles_data)}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Сохранить результаты в JSON (опционально)&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&amp;quot;wiki_ai_analysis.json&amp;quot;, &amp;quot;w&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;) as f:&lt;br /&gt;
                json.dump(all_articles_data, f, ensure_ascii=False, indent=2)&lt;br /&gt;
            print(f&amp;quot;💾 Результаты сохранены в wiki_ai_analysis.json&amp;quot;)&lt;br /&gt;
        except:&lt;br /&gt;
            print(&amp;quot;💡 Результаты не сохранены в файл&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Основная функция&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    print(&amp;quot;Запуск анализа Википедии...&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    analyzer = SimpleWikiAnalyzer()&lt;br /&gt;
    &lt;br /&gt;
    try:&lt;br /&gt;
        analyzer.run_analysis()&lt;br /&gt;
    except KeyboardInterrupt:&lt;br /&gt;
        print(&amp;quot;\n\n⏹️  Анализ прерван пользователем&amp;quot;)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        print(f&amp;quot;\n❌ Произошла ошибка: {e}&amp;quot;)&lt;br /&gt;
    finally:&lt;br /&gt;
        print(&amp;quot;\nСпасибо за использование анализатора!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Арина Климова</name></author>
	</entry>
</feed>