Программирование и лингвистические данные (syllabus)

Материал из Поле цифровой дидактики



Планируемые результаты обучения (Знать, Уметь, Владеть) Цель курса – формирование у студентов магистерской программы "Информатика и английский язык" системных знаний и практических навыков в области современных методов информационного анализа текстовых данных с использованием открытых программных решений.
Задачи курса
  • Освоение теоретических основ и методологии информационного анализа текста в, включая понимание принципов обработки естественного языка, статистического анализа текстовых корпусов.
  • Развитие практических навыков работы с открытыми программными инструментами, особенно средой R и специализированными пакетами для текстовой аналитики (tidytext, quanteda, tm), а также освоение техник получения текстовых данных через MediaWiki API и другие открытые источники.
  • Формирование компетенций интеграции количественных и качественных методов анализа для решения исследовательских.

В результате изучения дисциплины студент должен:

знать
  1. Теоретические основы информационного анализа текста
  2. Современные методы обработки естественного языка и компьютерной лингвистики
  3. Принципы работы с MediaWiki API и другими источниками текстовых данных
  4. Основы статистической обработки текстовых корпусов в среде R
уметь
  1. Проводить предобработку и нормализацию текстовых данных (токенизация, стемминг, лемматизация)
  2. Использовать пакеты R для текстовой аналитики (tidytext, quanteda, tm, stringr)
  3. Получать и обрабатывать текстовые данные через MediaWiki API
  4. Применять методы анализа тональности и настроений в текстах
  5. Проводить психолингвистический анализ текстовых данных
  6. Визуализировать результаты анализа текста (облака слов, графики частотности, сети).
владеть
  1. Навыками программирования в среде R для решения задач текстовой аналитики
  2. Методиками интегрированного анализа больших текстовых корпусов
  3. Инструментами веб-аналитики текста и онлайн-сервисами
Содержание разделов курса -
Теоретические основы информационного анализа текста
Введение в психолингвистические основы анализа текста.
Современные подходы к компьютерной обработке естественного языка.
Связь между лингвистикой и информационным анализом текста.
Основные направления текстовой аналитики: анализ тональности, тематическое моделирование, анализ стиля. : :Этические аспекты анализа текстовых данных.
Сравнительный анализ различных подходов к обработке текста
Работа с примерами психолингвистического анализа
Обзор современных исследований в области текстовой аналитики
Основы работы в среде R для анализа текста
Установка и настройка среды R и RStudio. Основы синтаксиса R и принципы tidy data.
Введение в экосистему tidyverse для анализа данных.
Специализированные пакеты для работы с текстом: установка и первое знакомство с tidytext, quanteda, tm.
Основные структуры данных для хранения текста в R.
Импорт и экспорт текстовых данных различных форматов.
Предобработка и подготовка текстовых данных
Этапы предобработки текстовых данных. Токенизация: разбиение текста на слова, предложения, n-граммы. : Нормализация текста: приведение к нижнему регистру, удаление пунктуации и специальных символов.
Работа со стоп-словами для русского и английского языков. Стемминг и лемматизация: принципы и инструменты. Создание корпусов и документно-терминных матриц. Обработка больших текстовых массивов.
Получение текстовых данных через MediaWiki API
Введение в MediaWiki API: структура, возможности, ограничения. Основные методы получения содержимого страниц. Работа с различными форматами данных: wikitext, HTML, plain text. Использование пакетов httr и jsonlite для HTTP-запросов в R. Создание функций для автоматического извлечения текстов из Wikipedia. Обработка метаданных и структурированной информации.
Статистический анализ и визуализация текстовых данных

Частотный анализ слов и n-грамм. Статистические метрики в анализе текста: TF-IDF, взаимная информация, коэффициенты ассоциации. Анализ коллокаций и совместной встречаемости слов. Методы визуализации текстовых данных: облака слов, графики частотности, тепловые карты. Сетевой анализ текстов и построение графов слов. Сравнительный анализ текстовых корпусов. Статистические тесты для текстовых данных

Видео запись
Среды и средства, которые поддерживают учебный курс R, OpenRefine, VOYANT Tools, MediaWiki, MediaWiki API
Книги, на которых основывается учебный курс APIs for social scientists: A collaborative review, Text Mining with R: A Tidy Approach

Последовательность действий (PlantUML)

Пояснения к диаграмме

Вы уже хорошо знаете digida.mgpu.ru и умеете встраивать туда Voyant Tools, поэтому мы сразу погрузимся в практический workflow курса "Программирование и лингвистические данные". Навыки, которые вы здесь освоите — работа с MediaWiki API, очистка в OpenRefine, анализ в R — универсальны и применимы к любым открытым MediaWiki-площадкам, от ScratchWiki и образовательных вики до вики научных сообществ. Digida мы понимаем лучше всего, но инструменты курса работают на всем образовательном поле интернета!

Начнем с разбора типов лингвистических данных на живых примерах digida: сырые тексты статьи "R (язык программирования)", токенизированные слова из категории "Категория:Язык программирования", морфологические формы в SMW-свойствах, семантические метки вроде "Лингвистика" в Field of knowledge. Вспомните VOYANT Tools — встроите апплет в тестовую страницу digida и увидите облако слов из категории "Понятие" или тренды частот ScratchWiki-статей о блочных языках.

Процесс, который потом примените где угодно. Сначала выкачаете корпус через MediaWiki API: составите запрос на 50–100 страниц из категории digida ("Язык программирования") или ScratchWiki ("Educational Programming"), получите JSON/CSV и загрузите в Voyant для первого обзора. Потом откроете данные в OpenRefine: фасеты, кластеризация, GREL-формулы — уберете дубликаты, нормализуете регистр, получите чистый CSV с колонками "текст", "категория", "дата".

R  - основа курса. Напишете скрипты на tidyverse + tidytext: чтение CSV, токенизация, частоты слов/n-грамм, стоп-слова, группировка по метаданным (dplyr), графики ggplot2 (столбчатые диаграммы, boxplot'ы, тепловые карты), статистика (type-token ratio, сравнение частот). Эти скрипты потом будут на любом MediaWiki-корпусе

Завершением будет мини-проект. Выберете подкорпус (digida о цифровых инструментах, [[ScratchWiki о блочном программировании, вики другого университета), пройдете цикл API → OpenRefine → R/Voyant, сделаете вывод вроде "в статьях о языках программирования чаще производительность, в образовательных — обучение". Оформите как SMW-страницу в категории Категория:CompLing Works на digida.mgpu.ru.

Ваша страница будет содержать интерактивный Voyant-апплет, R-код (либо ссылку на GitHub, либо прямо встроенный в <syntaxhighlight lang="R" line>,  текст анализа и графики. Это публичный артефакт — другие студенты МГПУ и исследователи увидят вашу работу.

В итоге у вас будет универсальный R-скрипт для любого MediaWiki-корпуса, развернутая SMW-страница в CompLing Works, полный цикл анализа лингвистических данных и портфолио для исследований, публикаций или работы с образовательными вики.

Лингвистические данные и информатика

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

Программирование на R для анализа лингвистических данных

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

  1. Установка и настройка среды R и RStudio.
  2. Основы синтаксиса R и принципы tidy data.
  3. Введение в экосистему tidyverse для анализа данных.
  4. Специализированные пакеты для работы с текстом: установка и первое знакомство с tidytext, quanteda, tm.
  5. Основные структуры данных для хранения текста в R.
  6. Импорт и экспорт текстовых данных различных форматов.


 Description
RR — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU. Используется для обработки, анализа и визуализации данных
RStudioсвободная среда разработки программного обеспечения с открытым исходным кодом для языка программирования R, который предназначен для статистической обработки данных и работы с графикой.

Справочные материалы по R

 Description
APIs for social scientists: A collaborative reviewВ книге представлено множество API социальных сетей и основы их использования. В статье по этой книге собраны примеры API и особенности работы с ними. Код в книге - R
Big Data with RExploring, Visualizing, and Modeling Big Data with R
  • В образовании имеется огромное количество данных — от записей о студентах и наблюдений преподавателей до результатов тестов. Современные технологии, такие как распознавание лиц и биометрические сигналы, расширяют доступ к визуальной и аудиоинформации о студентах. Мультимодальная аналитика в образовательном тестировании и психометрике позволяет точнее оценивать знания учащихся, одновременно отслеживая их прогресс с помощью аналитики обучения. Анализ логов и времени реакции помогает понять уровень вовлеченности студентов, выявить списывание и наличие предварительных знаний по тестовым заданиям.
Learning analytics methods and tutorials: A practical guide using RМетоды учебной аналитики с использованием языка R - открытое руководство с многочисленными примерами и ссылками на образовательные датасеты
R for Data ScienceПодробное руководство по использованию языка R для обработки, модификации, визуализации и программировании данных. Книга "R for Data Science" вводит концепцию tidy data как стандарт организации данных, где каждая переменная — в отдельном столбце, а каждая наблюдение — в отдельной строке. Это упрощает анализ, визуализацию и моделирование с помощью tidyverse. Стратегия книги строится вокруг полного цикла data science: импорт данных, их приведение к tidy-форме (tidying), трансформация (wrangling), визуализация (ggplot2). Цель — научить думать о данных как о tidy, чтобы 80% времени уходило на анализ, а не на чистку.
Text Mining with RКнига даёт завершённую картину современных аналитических подходов к тексту, систематизируя инструменты R и методику работы с данными на всех этапах анализа.

Лингвистические корпуса и методы их разметки

Предобработка и подготовка текстовых данных

  1. Этапы предобработки текстовых данных.
  2. Токенизация: разбиение текста на слова, предложения, n-граммы.
  3. Нормализация текста: приведение к нижнему регистру, удаление пунктуации и специальных символов.
  4. Работа со стоп-словами для русского и английского языков.
  5. Стемминг и лемматизация: принципы и инструменты.
  6. Создание корпусов и терм-документые матрицы.
  7. Обработка больших текстовых массивов.

Работа с API

Получение текстовых данных через MediaWiki API

  1. Введение в MediaWiki API: структура, возможности, ограничения.
  2. Основные методы получения содержимого страниц.
  3. Работа с различными форматами данных: wikitext, HTML, plain text.
  4. Использование пакетов httr и jsonlite для HTTP-запросов в R.
  5. Создание функций для автоматического извлечения текстов из Wikipedia.
  6. Обработка метаданных и структурированной информации.


Примеры уроков с использованием MediaWiki API

Данные из Википедии

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

Данные из Digida

Статистический анализ и визуализация лингвистических данных

  1. Частотный анализ слов и n-грамм.
  2. Статистические метрики в анализе текста: TF-IDF, взаимная информация, коэффициенты ассоциации.
  3. Анализ коллокаций и совместной встречаемости слов.
  4. Методы визуализации текстовых данных: облака слов, графики частотности, тепловые карты.
  5. Сетевой анализ текстов и построение графов слов.
  6. Сравнительный анализ текстовых корпусов.
  7. Статистические тесты для текстовых данных

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

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

Автоматизация анализа

Интеграция R, Lua, MediaWiki API

Возможности Lua на поле цифровой дидактики

Lua в MediaWiki: аффордансы и решения (Scribunto + SMW)
Аффорданс / проблема Решение (фрагмент кода Lua)

1. Принять параметры из вики-страницы

Студент хочет передать аргументы в модуль через {{#invoke:}} и получить что-то назад.

local p = {}
function p.hello(frame)
  local name = frame.args.name or "мир"
  return "Привет, " .. name .. "!"
end
return p

Вызов: {{#invoke:MyModule|hello|name=Иван}}

2. Построить wikitable из аргументов

Вывести список данных в виде красивой таблицы прямо на странице.

local p = {}
function p.table(frame)
  local out = '{| class="wikitable"\n! №\n! Значение\n'
  local i = 1
  while frame.args[i] do
    out = out .. "|-\n| " .. i .. " || " .. frame.args[i] .. "\n"
    i = i + 1
  end
  return out .. "|}"
end
return p

Вызов: {{#invoke:MyModule|table|Lua|SMW|NetLogo}}

3. Прочитать содержимое wiki-страницы

Нужно проанализировать текст другой страницы — посчитать слова, ссылки, заголовки.

local p = {}
function p.words(frame)
  local titleObj = mw.title.new(frame.args.title or "")
  if not titleObj then return "Страница не найдена" end
  local content = titleObj:getContent()
  if not content then return "Нет содержимого" end
  local n = 0
  for _ in mw.ustring.gmatch(content, "%S+") do n = n + 1 end
  return "Слов в исходном тексте: " .. n
end
return p

Вызов: {{#invoke:MyModule|words|title=Lua/Tutorial}}

4. Получить SMW-свойство страницы

Нужно программно прочитать значение семантического свойства, записанного на странице.

local p = {}
function p.getprop(frame)
  if not mw.smw then return "mw.smw недоступен" end
  local val = mw.smw.getPropertyValue(
    frame.args.property or "Modification date"
  )
  if val == nil then return "(нет значения)" end
  return tostring(val)
end
return p

Вызов: {{#invoke:MyModule|getprop|property=Дата создания}}

5. Выполнить #ask-запрос из Lua

Нужно получить список страниц по SMW-запросу и обработать результаты программно.

local p = {}
function p.ask(frame)
  if not mw.smw then return "mw.smw недоступен" end
  local results = mw.smw.ask("[[Категория:Модули]]|?#-=page|limit=5")
  if not results then return "Нет результатов" end
  local out = '{| class="wikitable"\n! Страница\n'
  for _, row in ipairs(results) do
    out = out .. "|-\n| " .. (row.page or "?") .. "\n"
  end
  return out .. "|}"
end
return p

Вызов: {{#invoke:MyModule|ask}}

6. Записать SMW-свойство из Lua

Нужно программно задать семантическое свойство страницы — например, при создании карточки.

local p = {}
function p.setprop(frame)
  if not mw.smw then return "mw.smw недоступен" end
  local data = {
    ["Автор модуля"] = frame.args.author or "",
    ["Тип модуля"]   = frame.args.type   or "remix"
  }
  local result = mw.smw.set(data)
  if result == true then
    return "Свойства сохранены"
  else
    return "Ошибка: " .. (result.error or "неизвестная")
  end
end
return p

Вызов: {{#invoke:MyModule|setprop|author=Иванов|type=remix}}

7. Вызвать парсер-функцию из Lua

Нужно использовать #time, #if или другую parser function прямо внутри модуля.

local p = {}
function p.today(frame)
  local date = frame:callParserFunction(
    "#time", {"d F Y"}
  )
  return "Сегодня: " .. date
end
return p

Вызов: {{#invoke:MyModule|today}}

8. Загрузить внешний CSV и посчитать строки

Нужно прочитать данные с GitHub или другого URL и агрегировать их.

local p = {}
function p.rows(frame)
  if not (mw.ext and mw.ext.externalData) then
    return "Extension:External Data недоступен"
  end
  local url = frame.args.url or ""
  if url == "" then return "Укажите url=" end
  local data, errors = mw.ext.externalData.getExternalData{
    source = url,
    format = "csv with header"
  }
  if not data then return "Ошибка загрузки" end
  return "Строк в CSV: " .. #data
end
return p

Вызов: {{#invoke:DatasetAggregator|rows|url=https://raw.githubusercontent.com/…/data.csv}}

9. Строка с Юникодом: считать буквы, не байты

При подсчёте символов русского/японского текста стандартный # считает байты, а не символы.

local p = {}
function p.ulen(frame)
  local text = frame.args.text or ""
  local bytes  = #text
  local chars  = mw.ustring.len(text)
  return "Байт: " .. bytes .. " / Символов Unicode: " .. chars
end
return p

Вызов: {{#invoke:MyModule|ulen|text=Привет}}

10. Отдать HTML через mw.html

Нужно сгенерировать сложный HTML-элемент (прогресс-бар, карточку) без конкатенации строк.

local p = {}
function p.bar(frame)
  local val = tonumber(frame.args[1]) or 0
  val = math.max(0, math.min(100, val))
  local wrap = mw.html.create("div")
    :css("background", "#eee")
    :css("border-radius", "4px")
    :css("width", "200px")
  wrap:tag("div")
    :css("background", "#4caf50")
    :css("width", val .. "%")
    :css("padding", "3px 6px")
    :css("color", "white")
    :wikitext(val .. "%")
  return tostring(wrap)
end
return p

Вызов: {{#invoke:MyModule|bar|75}}

Общие правила оценивания

Общие критерии оценивания активного эссе

Активное эссе — это интерактивная вики-страница, создаваемая студентом на поле цифровой дидактики с использованием возможностей семантической вики-среды. В отличие от традиционного эссе, активное эссе является «живым» документом, содержащим не только текст, но и программный код, интерактивные модели, структурированные данные, диаграммы и визуализации.

Оценочное средство 1: Активное эссе (страница SMW)

Критерий Показатели Баллы Макс.
А. Содержательные критерии
1 Содержание и соответствие теме дисциплины Эссе раскрывает заявленную тему, содержит анализ ключевых понятий дисциплины, демонстрирует понимание теоретических основ. Текст логически структурирован: введение, основная часть, выводы. Использована профессиональная терминология. Имеются ссылки на источники. 0–5 5
2 Собственная позиция и аргументация Автор формулирует собственную точку зрения, приводит аргументы и примеры из практики, сравнивает различные подходы, делает обоснованные выводы. 0–3 3
3 Научная корректность Использованы корректные определения и терминология, ссылки на научные источники, отсутствуют фактические ошибки. 0–2 2
Б. Критерии использования возможностей цифровой среды
4 Использование структурных диаграмм

Построение диаграмм (блок-схемы, UML, графы, диаграммы последовательностей и т.д.) средствами PlantUML, Mermaid или Graphviz

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

Семантические запросы ({{#ask:}}), конструирование вопросов к данным, включение форм, географических карт, лент времени

Семантические запросы позволяют строить динамические таблицы, выборки и каталоги на основе структурированных свойств страниц. Формы обеспечивают стандартизированный ввод данных. Карты и ленты времени визуализируют пространственные и временны́е отношения. Оценивается: корректность запросов, осмысленность выборки, информативность визуализации. 0–3 3
6 Включение математических или химических формул

Использование тегов <math></math> или <chem></chem>

Формулы обеспечивают точную и читаемую запись математических моделей, уравнений и химических реакций. Включение формул демонстрирует владение формальным языком дисциплины и связывает теоретические основы с практикой. Оценивается: корректность записи, осмысленность использования, связь с текстом. 0–2 2
7 Включение программного кода

Использование тегов <syntaxhighlight lang="..." line>

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

Встраивание проектов Snap!, Scratch или иных визуальных программных сред

Интерактивные приложения позволяют читателю эссе непосредственно взаимодействовать с программными моделями: запускать симуляции, менять параметры, наблюдать результаты. Это превращает эссе из статического текста в интерактивную учебную среду. Оценивается: работоспособность приложения, связь с темой, уровень интерактивности. 0–3 3
9 Работа с внешними данными

Подключение внешних источников данных, их фильтрация и представление в виде таблиц (расширение External Data)

Подключение внешних данных позволяет работать с реальными, актуальными наборами данных (открытые данные, API, базы данных), а не с искусственными примерами. Фильтрация и представление в таблицах демонстрируют навыки работы с данными. Оценивается: релевантность источника, корректность фильтрации, информативность представления. 0–3 3
10 Включение многоагентных моделей NetLogo

Встраивание моделей NetLogo для демонстрации агентных симуляций

Многоагентные модели позволяют исследовать сложные системы: показать, как простые правила поведения агентов порождают макроуровневые паттерны. Встраивание модели в эссе даёт читателю возможность запустить симуляцию, изменить параметры и самостоятельно исследовать результаты. Оценивается: соответствие модели теме, корректность настройки параметров, наличие пояснений. 0–3 3
Итого максимум 30

Шкала перевода баллов:

Баллы Оценка
25–30 Отлично (A)
19–24 Хорошо (B)
13–18 Удовлетворительно (C)
0–12 Неудовлетворительно (F)

Оценочное средство 2: История вклада участника

Критерий Показатели Баллы Макс.
1 Равномерность вклада по времени Работа над эссе велась регулярно на протяжении всего периода обучения, а не концентрировалась в последний момент. История правок показывает итеративное развитие текста: от замысла к черновику, от черновика к финальной версии. Отсутствуют признаки массового копирования (крупные единовременные вставки неоригинального текста). 0–3 3
2 Качество итерационного развития Каждая правка содержит содержательные изменения (дополнение аргументации, улучшение кода, добавление визуализаций), а не формальные косметические правки. Прослеживается логика развития работы. 0–2 2
3 Участие в обсуждении Участник вносил вклад в обсуждение на страницах обсуждения эссе однокурсников: задавал вопросы, предлагал улучшения, давал конструктивную обратную связь. 0–2 2
Итого максимум 7

Оценочное средство 3: Зачёт (демонстрация активного эссе)

Критерий Показатели Баллы Макс.
1 Знание программного материала Знание программного материала и структуры дисциплины, умение показать свои знания при демонстрации активного эссе. Свободная ориентация в содержании эссе, способность ответить на вопросы по материалу. 0–2 2
2 Владение методологией дисциплины в цифровой среде Демонстрация уверенного владения инструментами цифровой среды, использованными в эссе: объяснение выбора конкретных средств (диаграммы, код, модели, запросы), умение модифицировать элементы эссе в реальном времени. 0–2 2
3 Презентация и ответы на вопросы Логичность изложения, ясность речи, способность аргументировать свои решения, готовность к дискуссии. 0–1 1
Итого максимум 5

Зачёт выставляется при суммарном балле не менее 3 из 5.

Итоговая оценка по дисциплине

Компонент Максимум Вес
Активное эссе 30 60%
История вклада 7 20%
Зачёт 5 20%
Итого 42 100%

Самостоятельные индивидуальные или парные работы студентов

В категории - Категория:CompLing Works

  1. Статистическое сравнение страниц
  2. Статистическое сравнение страниц про роботов