Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
tech:checkscript [2021/08/20 09:08] dmitry_kalashnikov [Проверка текста без отрисовки отчёта с получением подробной модели результата проверки] |
tech:checkscript [2022/08/10 03:33] (текущий) dmitry_kalashnikov [Функция получения 7-балльной оценки] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Скрипт проверки (формат) ====== | ====== Скрипт проверки (формат) ====== | ||
- | Скрипт проверки можно скачать на [[constructor: | + | Скрипт проверки можно скачать на [[constructor: |
Скрипт с другими служебными файлами запакован в zip-архив. | Скрипт с другими служебными файлами запакован в zip-архив. | ||
Строка 15: | Строка 15: | ||
===== Программный интерфейс скрипта проверки ===== | ===== Программный интерфейс скрипта проверки ===== | ||
- | В js-файле содержатся две главные функция проверки: | + | В js-файле содержатся две главные функции проверки: |
- | ==== Проверка текста с отрисовкой отчёта ==== | + | ==== Проверка текста с отрисовкой отчёта |
- | <code javascript> | + | <code javascript> |
Параметры вызова: | Параметры вызова: | ||
Строка 25: | Строка 25: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
- | Модель | + | Модель |
+ | |||
+ | <code javascript> | ||
+ | // Полная модель результата проверки | ||
+ | interface Model { | ||
+ | checkId: string, // Уникальный id проверки, | ||
+ | titles: Text[][], // Результат проверки заголовка в виде двумерного массива (первая размерность делит текст на абзацы, | ||
+ | text: Text[][], // Результат проверки текста в виде двумерного массива (первая размерность делит текст на абзацы, | ||
+ | errors: Errors, // Контейнер информации об ошибках | ||
+ | summary: Summary, // Итоговое количество ошибок | ||
+ | isDictantText: | ||
+ | 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 текст из диктанта (правильное написание) с выделением части, в которой пользователь сделал ошибку тэгами < | ||
+ | description: | ||
+ | } | ||
+ | // Итоговое количество ошибок | ||
+ | export interface Summary { | ||
+ | counts: ErrorCounts, | ||
+ | score: number, // оценка за диктант (5-балльная для русского, | ||
+ | wrongWordCount: | ||
+ | } | ||
+ | // Модель для подсчёта разных типов ошибок | ||
+ | export interface ErrorCounts { | ||
+ | ORFO?: number, // количество орфографических ошибок | ||
+ | PUNCT?: number, // количество пунктуационных ошибок | ||
+ | TYPO?: number // количество опечаток | ||
+ | } | ||
+ | </ | ||
- | <code javascript> | ||
- | |||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
==== Проверка текста без отрисовки отчёта с получением подробной модели результата проверки ==== | ==== Проверка текста без отрисовки отчёта с получением подробной модели результата проверки ==== | ||
- | <code javascript> | + | <code javascript> |
Параметры вызова: | Параметры вызова: | ||
- | * text — текст диктанта | + | * '' |
- | * onResult — функция, | + | * '' |
+ | ==== Функция получения 7-балльной оценки ==== | ||
+ | |||
+ | Используется обычно для русских диктантов. | ||
+ | |||
+ | <code javascript> | ||
+ | |||
+ | Параметры вызова: | ||
+ | |||
+ | * '' | ||
+ | |||
+ | Поля возвращаемой модели: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== Получение и расчёт оценки ==== | ||
+ | |||
+ | При вычислении результата проверки считается количество баллов, | ||
+ | Алгоритм подсчета отличается для диктантов на русском и диктантов на английском языках. | ||
+ | |||
+ | * Для английских диктантов баллы считаются по 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»: в других случаях. | ||
===== Тестирование проверки ===== | ===== Тестирование проверки ===== | ||
Строка 58: | Строка 125: | ||
===== Тестовый скрипт для отладки ===== | ===== Тестовый скрипт для отладки ===== | ||
- | Для демонстрации работы можно взять пример скрипта тестового диктанта с " | + | Для демонстрации работы можно взять пример скрипта тестового русского или английского диктанта с " |
+ | |||
+ | ==== Диктант " | ||
+ | |||
+ | {{ :tech:checkdictant_vidumshik.zip |}} | ||
Текст диктанта для проверки: | Текст диктанта для проверки: | ||
- | < | + | < |
- | В тёмном еловом лесу с утра до позднего вечера хлопочут проворные белки. Поднимутся белки на вершину высокой ели, перемахнут с ветки на ветку, а потом спускаются на землю за орехами. В развилке елового сучка | + | С нами был девятилетний мальчик, и он гораздо лучше нас, взрослых, |
- | Поздней осенью переменит | + | |
+ | Он был выдумщик, | ||
+ | |||
+ | Мы делали вид, что верили ему. | ||
+ | |||
+ | Всё, что окружало нас, казалось необыкновенным: | ||
+ | |||
+ | Мальчик первый | ||
+ | |||
+ | |||
+ | ==== Диктант " | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Текст диктанта для проверки: | ||
+ | < | ||
+ | |||
+ | 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. | ||
+ | </ |