Скрипт проверки (формат)

Скрипт проверки можно скачать на странице диктанта. Тестовый скрипт можно скачать ниже.

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

В архиве содержится четыре файла:

  1. js-файл (checkDictantScript_5f4404764b32fa3c9bd23dc0.js) — сам скрипт проверки диктанта;
  2. css-файл (checkDictantScript_5f4404764b32fa3c9bd23dc0.css) — содержит, соответственно, стили для показа отчёта о проверке.
  3. txt-файл (checkDictantInfo_5f4404764b32fa3c9bd23dc0.txt) — общая информация о диктанте: название, путь в Учительской, дата выгрузки;
  4. HTML-файл (checkDictantExample_5f4404764b32fa3c9bd23dc0.html) — тестовая страница для проверки скрипта.

Каждый файл имеет в своём названии уникальный идентификатор диктанта dictID (например: 5f4404764b32fa3c9bd23dc0), который следует сохранять для передачи написанных диктантов в систему для импорта.

В js-файле содержатся две главные функции проверки:

function checkTextWithResultModelAndShowReport(text, reportContainerDomElement, onResultModelCallback)

Параметры вызова:

  • text — текст диктанта.
  • reportContainerDomElement — DOM-элемент, где нужно нарисовать отчёт.
  • onResultModelCallback = function(fullCheckResultModel: Model) — функция, в которую будет передана fullCheckResultModel — полная модель результата проверки.

Модель fullCheckResultModel имеет следующий вид:

// Полная модель результата проверки
interface Model {
	checkId: string, // Уникальный id проверки, генерится при каждом вызове алгоритма проверки
	titles: Text[][], // Результат проверки заголовка в виде двумерного массива (первая размерность делит текст на абзацы, вторая делит параграф по ошибкам )
	text: Text[][], // Результат проверки текста в виде двумерного массива (первая размерность делит текст на абзацы, вторая делит параграф по ошибкам )
	errors: Errors, // Контейнер информации об ошибках
	summary: Summary, // Итоговое количество ошибок
	isDictantText: boolean, // Похож ли проверяемый текст на текст диктанта
	errorList: LexemeError[] // список ошибок с данными, помогающими построить карту ошибок
}
// Модель проверенного куска текста
interface Text { 
	id?: string, 
	text: string, // кусок текста
	counts?: ErrorCounts, // количество ошибок в куске текста
	error?: string, // ссылка на идентификатор ошибок в контейнере ошибок
	position?: string | number // Позиция куска текста
}
// Контейнер информации об ошибках в виде KeyValue на массив ошибок
export type Errors = {
	[key: string]: Error[];
}
// Подробное описание ошибки
export interface Error {
	id?: string, 
	kind: string, // Тип ошибки ()
	title: string, // Html текст из диктанта (правильное написание) с выделением части, в которой пользователь сделал ошибку тэгами <i></i> (например <i>в т</i>ечение)
	description: string // Html текст для пояснения правила, которое было нарушено
}
// Итоговое количество ошибок
export interface Summary {
	counts: ErrorCounts, // Модель разных типов ошибок
	score: number, // оценка за диктант (5-балльная для русского, 100-балльная для английского).
        wrongWordCount: number // число неверно написанных слов в диктанте
}
// Модель для подсчёта разных типов ошибок
export interface ErrorCounts {
	ORFO?: number, // количество орфографических ошибок
	PUNCT?: number, // количество пунктуационных ошибок
	TYPO?: number // количество опечаток          
}
function checkTextWithoutShowReport(text: string, onResult: function(fullCheckResultModel: Model))

Параметры вызова:

  • text — текст диктанта
  • onResult — функция, в которую будет передана модель fullCheckResultModel с подробными данными о результате проверки (см. описание выше).

Используется обычно для русских диктантов.

function getDictSevenScaleScore(counts: ErrorCounts): {scoreStr: string, score: number, minus: boolean, hint: string}

Параметры вызова:

  • counts: {ORFO?: number, PUNCT?: number, TYPO?: number} — модель с количеством ошибок из результата проверки диктанта result.summary.counts.

Поля возвращаемой модели:

  • scoreStr — это текстовая форма оценки (число с минусом или без) '2', '3-', '3', '4-', '4', '5-', '5';
  • score — это числовая оценка без минуса;
  • minus — флаг, есть ли минус;
  • hint — подсказка, как вычисляется оценка.

При вычислении результата проверки считается количество баллов, которые получает пользователь (result.summary.score). Алгоритм подсчета отличается для диктантов на русском и диктантов на английском языках.

  • Для английских диктантов баллы считаются по 100-балльной шкале по формуле
    • 100 * (1 — (количество слов с ошибками)/(количество слов в диктанте)))
  • Для русских диктантов баллы считаются по 4-балльной шкале по алгоритму тотального диктанта (орфографические ошибки/пунктуационные ошибки):
    • «5»: 0/0, 0/1
    • «4»: 0/2 0/3 0/4 1/0 1/1 1/2 2/0 2/1
    • «3»: 0/5 0/6 0/7 0/8 1/3 1/4 1/5 1/6 1/7 2/2 2/3 2/4 2/5 2/6 3/0 3/1 3/2 3/3 3/4 3/5 4/0 4/1 4/2 4/3 4/4
    • «2»: в других случаях.

Содержащийся в архиве HTML-файл можно использовать для проверки текста диктанта и, соответственно, для проверки актуальности выгруженного скрипта. Для этого нужно:

  • открыть HTML-файл в браузере;
  • вставить в поле ввода текст диктанта с умышленно сделанными ошибками;
  • нажать кнопку «Проверить»;
  • оценить результат проверки.

Для демонстрации работы можно взять пример скрипта тестового русского или английского диктанта с «черновой» разметкой.

checkdictant_vidumshik.zip

Текст диктанта для проверки:

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

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

Мы делали вид, что верили ему.

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

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

checkdictant_robots_people.zip

Текст диктанта для проверки:

Robots and people

This is Anna. She is sixty-nine years old. Anna is in a supermarket. She is with a robot. This robot can see, and it can speak. It can move, but it cannot run. It can carry things. Now it is carrying Anna’s bags.

Robots are clever. They can help people in their lives.
  • /opt/bitnami/dokuwiki/data/pages/tech/checkscript.txt
  • Последнее изменение: 2022/08/10 03:33
  • dmitry_kalashnikov