tech:checkscript

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
tech:checkscript [2021/08/20 09:09]
dmitry_kalashnikov [Проверка текста без отрисовки отчёта с получением подробной модели результата проверки]
tech:checkscript [2022/08/10 03:33] (текущий)
dmitry_kalashnikov [Функция получения 7-балльной оценки]
Строка 1: Строка 1:
 ====== Скрипт проверки (формат) ====== ====== Скрипт проверки (формат) ======
  
-Скрипт проверки можно скачать на [[constructor:page|странице диктанта]]. +Скрипт проверки можно скачать на [[constructor:page|странице диктанта]]. Тестовый скрипт можно скачать ниже.
  
 Скрипт с другими служебными файлами запакован в zip-архив. Скрипт с другими служебными файлами запакован в zip-архив.
Строка 15: Строка 15:
 ===== Программный интерфейс скрипта проверки ===== ===== Программный интерфейс скрипта проверки =====
  
-В js-файле содержатся две главные функция проверки:+В js-файле содержатся две главные функции проверки:
  
 ==== Проверка текста с отрисовкой отчёта и возвратом модели проверки ==== ==== Проверка текста с отрисовкой отчёта и возвратом модели проверки ====
  
-<code javascript>function checkTextWithResultModelAndShowReport(text, reportContainerDomElement, onScoreCallback)</code>+<code javascript>function checkTextWithResultModelAndShowReport(text, reportContainerDomElement, onResultModelCallback)</code>
  
 Параметры вызова: Параметры вызова:
Строка 25: Строка 25:
   * ''text'' — текст диктанта.   * ''text'' — текст диктанта.
   * ''reportContainerDomElement'' — DOM-элемент, где нужно нарисовать отчёт.   * ''reportContainerDomElement'' — DOM-элемент, где нужно нарисовать отчёт.
-  * ''onScoreCallback = function(fullCheckResultModel, score)'' — функция, в которую будет переданы: ''fullCheckResultModel'' — полная JSON-модель результата проверки и ''score'' — JSON-объект с данными о проверке. +  * ''onResultModelCallback = function(fullCheckResultModel: Model)'' — функция, в которую будет передана ''fullCheckResultModel'' — полная модель результата проверки.
- +
-Модель ''score'' имеет следующий вид: +
- +
-<code javascript> {errors: {ORFO:number, PUNCT: number, TYPO: number}, score: number, isTotalDict: boolean}</code> +
-  +
-  * ''ORFO'' — количество орфографических ошибок. +
-  * ''PUNCT'' — количество пунктуационных ошибок. +
-  * ''TYPO'' — количество опечаток (те ошибки, на которые нет разметки). +
-  * ''score'' — оценка за диктант (5-балльная для русского, 100-балльная для английского). +
-  * ''isTotalDict '' — похож ли переданный текст на оригинальный текст диктанта+
  
 Модель ''fullCheckResultModel'' имеет следующий вид: Модель ''fullCheckResultModel'' имеет следующий вид:
Строка 42: Строка 32:
 // Полная модель результата проверки // Полная модель результата проверки
 interface Model { interface Model {
- checkId: string// Уникальный id проверки, генерится при каждом вызове алгоритма проверки+ checkId: string// Уникальный id проверки, генерится при каждом вызове алгоритма проверки
  titles: Text[][], // Результат проверки заголовка в виде двумерного массива (первая размерность делит текст на абзацы, вторая делит параграф по ошибкам )  titles: Text[][], // Результат проверки заголовка в виде двумерного массива (первая размерность делит текст на абзацы, вторая делит параграф по ошибкам )
  text: Text[][], // Результат проверки текста в виде двумерного массива (первая размерность делит текст на абзацы, вторая делит параграф по ошибкам )  text: Text[][], // Результат проверки текста в виде двумерного массива (первая размерность делит текст на абзацы, вторая делит параграф по ошибкам )
Строка 71: Строка 61:
 // Итоговое количество ошибок // Итоговое количество ошибок
 export interface Summary { export interface Summary {
- counts: ErrorCounts, // Суммарное количество ошибок + counts: ErrorCounts, // Модель разных типов ошибок 
- score: number // Количество баллов (100 - 2*колич.орфографических ошибок - 1*колич.пунктуационных ошибок)+ score: number// оценка за диктант (5-балльная для русского, 100-балльная для английского). 
 +        wrongWordCount: number // число неверно написанных слов в диктанте
 } }
 // Модель для подсчёта разных типов ошибок // Модель для подсчёта разных типов ошибок
 export interface ErrorCounts { export interface ErrorCounts {
- ORFO?: number// количество орфографических ошибок + ORFO?: number// количество орфографических ошибок 
- PUNCT?: number// количество пунктуационных ошибок + PUNCT?: number// количество пунктуационных ошибок 
- TYPO?: number// количество опечаток + TYPO?: number // количество опечаток          
 } }
 </code> </code>
 +
  
 ==== Проверка текста без отрисовки отчёта с получением подробной модели результата проверки ==== ==== Проверка текста без отрисовки отчёта с получением подробной модели результата проверки ====
  
-<code javascript>function checkTextWithoutShowReport(text: string, onResult: function(model: Model))</code>+<code javascript>function checkTextWithoutShowReport(text: string, onResult: function(fullCheckResultModel: Model))</code>
  
 Параметры вызова: Параметры вызова:
  
   * ''text'' — текст диктанта   * ''text'' — текст диктанта
-  * ''onResult'' — функция, в которую будет передан JSON-объект с подробными данными о результате проверки.+  * ''onResult'' — функция, в которую будет передана модель ''fullCheckResultModel'' с подробными данными о результате проверки (см. описание выше).
  
 +==== Функция получения 7-балльной оценки ====
 +
 +Используется обычно для русских диктантов.
 +
 +<code javascript>function getDictSevenScaleScore(counts: ErrorCounts): {scoreStr: string, score: number, minus: boolean, hint: string}</code>
 +
 +Параметры вызова:
 +
 +  * ''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»: в других случаях.
  
 ===== Тестирование проверки ===== ===== Тестирование проверки =====
Строка 103: Строка 125:
 ===== Тестовый скрипт для отладки ===== ===== Тестовый скрипт для отладки =====
  
-Для демонстрации работы можно взять пример скрипта тестового диктанта с "черновой" разметкой {{ :other:checkdictant_5ed9d6caefb14f76c3f47e5e.zip |}}+Для демонстрации работы можно взять пример скрипта тестового русского или английского диктанта с "черновой" разметкой
 + 
 +==== Диктант "Выдумщик" ==== 
 + 
 +{{ :tech:checkdictant_vidumshik.zip |}}
  
 Текст диктанта для проверки: Текст диктанта для проверки:
-<code>Белка +<code>Выдумщик 
-В тёмном еловом лесу с утра до позднего вечера хлопочут проворные белки. Поднимутся белки на вершину высокой ели, перемахнут с ветки на ветку, а потом спускаются на землю за орехами. В развилке елового сучка белочка развесила сушить подосиновик, маленькие опенкиВ лесных кладовых спрятала отборные орехи+С нами был девятилетний мальчик, и он гораздо лучше нас, взрослых, всё замечал и рассказывал. 
-Поздней осенью переменит белка свое красное платье на серую зимнюю шубку. В вершине густой ели устроила белочка тёплое гнездо. Там она воспитывает бельчат, зимой спасается от лютых морозов и холодных ветров. Самый весёлый зверек в наших лесах – это шустрая белка.</code>+ 
 +Он был выдумщик, но мы очень любили его выдумки. Мы никак не могли, да и не хотели доказывать ему, что он говорит неправду. Каждый день он придумывал что-нибудь новоето он слышал, как шептались рыбы, то видел, как муравьи устроили себе паром через ручей из сосновой коры и паутины. 
 + 
 +Мы делали вид, что верили ему. 
 + 
 +Всё, что окружало нас, казалось необыкновенным: и поздняя луна, блиставшая над чёрными озёрами, и высокие облака, похожие на горы розового снега, и даже привычный морской шум высоких сосен. 
 + 
 +Мальчик первый услышал фырканье зверя и зашипел на нас, чтобы мы замолчали. Мы притихли и старались даже не дышать, хотя рука невольно тянулась к двустволке, – кто знает, что это мог быть за зверь!</code> 
 + 
 + 
 +==== Диктант "Robots and people" ==== 
 + 
 +{{ :tech:checkdictant_robots_people.zip |}} 
 + 
 +Текст диктанта для проверки: 
 +<code>Robots and people 
 + 
 +This is AnnaShe 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. 
 +</code> 
  • /opt/bitnami/dokuwiki/data/attic/tech/checkscript.1629450581.txt.gz
  • Последнее изменение: 2021/08/20 09:09
  • dmitry_kalashnikov