問題/タイプ/ correctwriting


ゴール

この問題タイプは、学生がプログラミング言語を学習しているとき、または自然言語学習の単純な場合に、学生が正しい文字列(ステートメント、センテンス)を書かなければならないときに自動的にスキップします。いくつかの単語または間違った順序で単語を配置する。これは、どの単語(またはある種の記号)が移動されたか、または答えに欠けているかについての実際の情報を提供しないが、その意味であるためにも役立ちます。これは、直接の教師の監督なしにいくつかの訓練を可能にします。


入力がどのように分割されるか

教師は1つまたは複数の正しい答えを入力する必要があります(特定の答えを説明する可能性のあるフィードバックとともに)。これらの答えは、言葉、数字、句読点、演算子など、意味のある最も小さな部分( トークンまたは語彙素 )に分解するためにトークン化されます (このプロセスは後でスキャンと呼ばれます )。

問題は後でこれらのトークンの配置のエラーを分析して表示します。しかし、私たちが学生に言っているとき、彼の答えの中のその機能名 (または件名 )が見当違い(または欠けている)である場合、その機能名または件名の正確な単語に関する情報を学生に開示したくありません。学生が自分の置き忘れた単語を見た場合、それを動かそうと試みることができます。学生がこの単語の文法的なロール(例: "関数名"や "主語"の位置を間違えている)を見た場合、それは彼を文法的なカテゴリーで考えるように刺激します。そのため、教師は正しい答えで各トークンの文法的な説明を入力するように求めました。これは2段階のプロセスとして行われます。

解答フォームでは、解答を入力してそれに対する具体的なフィードバックを入力できます。

CorrectWritingAnswerStep1.PNG

解答フォームが変わり、各トークンの説明を入力できるようになります(ヒントグレーダーの境界線より上の解答の場合)。トークンの説明を飛ばしてEnterを押すだけでテキストフィールドに空の行を入れることができます。そうすると学生は代わりにトークンの文字表現を使います。

CorrectWritingAnswerStep2.PNG

もう一度「変更を保存」ボタンをクリックしてください。

問題タイプの設定

新しいCorrectWriting問題タイプを作成すると、次の設定を含むフォームが表示されます。

CorrectWritingEditForm.PNG

最も重要な設定項目の1つは、 解答言語です。それはあなたが答えが語彙素(トークン)に分解されるであろう方法を定義します。他の設定はそれほど重要ではなく、最初にそれらについて心配する必要はないかもしれません。それらのほとんどは、問題の採点を微調整するために使用され、高度なものです。

以下のパラメータを見ることができます。

 ; Lexical error threshold : a treshold, which will be used when comparing tokens from student response to a teacher answer will be used to match with errors with Levenstein distance. If amount of errors when comparing two tokens is lesser than product of this treshold and length of teacher token - than tokens are the same with errors. Since search for misspellings is not implementend this parameter is unused and hidden in form .
 ; Penalty for lexical error : a penalty, that will be substracted from grade, when found one misspelling. Since search for misspellings is not implementend this parameter is unused and hidden in form .
欠けているトークンに対する罰金
ペナルティ、それは学生の解答で欠けている各トークンの評定から差し引かれます。
追加トークンに対する罰金
ペナルティ、それは学生の解答の各奇数トークンの評定から差し引かれます。
置き忘れたトークンに対するペナルティ
学生の解答の見当違いのトークンごとに評定から差し引かれるペナルティ。これは教師の解答から得られる、誤った順序で行われます。
間違いを見つけて表示するための答えの最低評点
時々、教師は学生に特に悪い答えについていくつかのヒントを指摘するかもしれません、そして、彼らのコメントは学生と教師の答えが同じであるとき、見られなければなりません。教師は、この解答の境界より低い評定で解答を定義し、カスタムエラーメッセージで悪い解答を指摘することができます。
学生の解答における誤りの最大割合
学生が多くの間違いで返答を書くとき、私たちは他の教師の答えと一致することを支持して彼の答えを拒絶することができます、間違いの数がこのパラメータと答えの中の部品の数の積よりも大きいとき。
答えの言語
ある答えと学生の反応を分析するときに使われる言語。現在サポートされている言語は英語Cプログラミング言語です。
ヒント設定
多段階動作のための特定のヒントを有効にして、それらの使用のためにペナルティを設定することを可能にします。ヒントについて詳しくは、次のセクションを参照してください。

ほのめかし

CorrectWriting問題タイプはヒンティングビヘイビアを使用しており、現在はアダプティブビヘイビアになっていますが、評定のペナルティに対して特別なヒントを与えることができます(0に設定できます)。 1以下のヒントに対してペナルティを設定して、それらを有効にすることができます。

ヒントとは
説明ではなくトークンテキストを学生に伝えます。すなわち主題は "猫"です。置き忘れられたトークンと欠けているトークンの間違いに使用されます。トークンミスがない場合は、 欠けている単語の正確なテキストが開示されているため、 ペナルティには欠けているヒントペナルティ要素が掛けられます。
テキストヒントはどこにありますか
解答に基づいて、可能な場合は説明を使用して、トークンを配置する場所にメッセージを表示します。すなわち主題は定冠詞と動詞の間に置かれるべきです。置き忘れられたトークンと欠けているトークンの間違いに使用されます。
絵のヒントはどこですか
解答に基づいて、可能な場合は説明を使用して、トークンを配置する場所のイメージを表示します。下の例では、赤い枠で強調表示されています。

CorrectWritingImageHint.PNG

学生の解答の採点例

部分的に上で説明されている問題については、次の例を検討してください。

CorrectWritingStudentAnswer.PNG

あなたは学生の間違いの例を見ます。あなたはあなた自身の目的のためにいくつかの間違いの絵を隠したりいくつかの間違いの文を隠したり、小テストの様々なオプションを切り替えることができます。

CorrectWriting問題タイプのインストール

この問題の種類をインストールするには、必要な形式言語をブロックし、 型自体を疑問視 。また、 poasの問題タイプ、ヒント付きの 2つのヒント動作と、ペナルティのないバージョンのAdaptiveが必要です。

あなたのMoodleインストールフォルダのそれぞれの場所にそれらをすべてコピーし、必要ならば上書きしてウェブインターフェースでサイト管理に行き、インストールを続行すれば完了です。あるいは、 開発者のサイトからセット全体をダウンロードし、それをMoodleのルートディレクトリに解凍して、すべてが属する場所に配置することもできます。

アナライザ

タイプミス分析

タイプミス分析を使用すると、学生の解答の誤字を修正できます。タイプミス分析はデフォルトではオフです。いくつかの誤りを見つけることができます。

  • タイプミス -標準Damerau-レーベンシュタインアルゴリズムに基づいて、許可する編集オペレータ
    • 文字を挿入
    • 文字を削除
    • 文字を置き換える
    • 移調 -場所を変更する2つのajanced文字
  • セパレーターが欠落していない -の2つのトークンの間には、セパレータを、一つにそれらをマージ
  • 余分セパレータ -トークン内部のセパレータ(通常はスペース)、二つにそれを分割します

タイプミス分析は、トークンが誤って配置されていても間違いを見つけることができますが、追加の分離文字の場合は、結果として生じる2つのトークンを調整する必要があります。

画像の間違い:

  • 文字を挿入
 insert.png
  • 文字を削除
 remove.png
  • 文字を置き換える
 replace.png
  • 移調 -場所を変更する2つのajanced文字
 swap.png
  • セパレーターが欠落していない -の2つのトークンの間には、セパレータを、一つにそれらをマージ
 drop space.png
  • 余分セパレータ -トークン内部のセパレータ(通常はスペース)、二つにそれを分割します
 追加のspace.png


複合例:

 alll.png


TODO - typo analysis settings, once we get them correct in the question editing form.

列挙型の分析

正解には列挙型要素を含めることができます(可能な区切り記号付き)。任意の順序で配置できます。自然言語では、列挙型の要素は、多くの場合、カンマで区切られた「and」または「or」されています。列挙で正しい答えのすべての可能な変形を入力することは教師のために退屈であり、間違いを起こしやすいです。

列挙型の分析は、正しい答えで列挙型を検出し、特定の学生の解答によりよく一致するように要素の順序を変更しようとします。

現時点では、列挙型分析はC ++言語でのみ機能し、言語機能は拡張機能に基づいて自動検出されます。

英語(および他の自然言語)での列挙が正確に自動的に検出することができません。それらを入力するためのインタフェースは構築中です。

C ++言語の列挙
Elements of the enumerations shown in italic in these examples.
構造体または共用体の定義
フィールドは、任意の順序で宣言することができます。struct MyNiceStructure {int型FirstField。 長いパディングchar SmallPart ; }のDefaultValue。
列挙型定義
値は任意の順序で宣言することができる:enum型{INT、 フロート= 32。 Char };
同じ型変数の定義
変数は、任意の順序で宣言することができます。int 番号 、*数えます数字[10] ;
一連のmod演算子
最初除くオペランドは任意の順序で記述することができます。 最初の% %は最後
除算演算子のシーケンス
最初除くオペランドは任意の順序で記述することができます: 最初/ 最後 /
減算演算子のシーケンス
最初除くオペランドは任意の順序で記述することができます- -最初の最後
プラス演算子のシーケンス
オペランドは任意の順序で書くことができます: 最初の * 最後
乗算演算子のシーケンス
オペランドは任意の順序で書くことができます: 最初の * * 最後
代入演算子のシーケンス
最後を除くオペランドは任意の順序で記述することができます: 最初 = =最後。
バイナリと演算子のシーケンス
オペランドは任意の順序で書くことができます: 最初の最後
二項または演算子のシーケンス
オペランドは任意の順序で書くことができます: 最初 | 第二 最後に
バイナリXOR演算子のシーケンス
オペランドは任意の順序で書くことができます: 最初 ^ ^ 最後
論理等価演算子のシーケンス
オペランドは任意の順序で書くことができます: 最初 == == 最後
論理等しいと演算子ではないのシーケンス
オペランドは任意の順序で書くことができます: 最初 = = 最後 !;!
論理和または演算子のシーケンス
オペランドは任意の順序で書くことができます: 最初の || 2番目の || 最後に
論理演算子と演算子のシーケンス
オペランドは任意の順序で書くことができます: 最初 && && 最後
 TODO - currently supported C++ language constructions with examples

トークンシーケンス分析

トークン配列解析は、それの最初のリリースからの問題にCorrectWritingユニークな機能でした。それは、一連の分析のトークンをし、このようなミスを見つけます:

  • 置き忘れたトークン
  • トークンがありません
  • 無関係のトークン

トークンシーケンス分析はデフォルトでアクティブになっています。トークンの順序があなたの言語に関係ないか、あなたが答えるならば、あなたはそれをオフにすることができます(すなわち、要求されたトークンをどんな順序で含んでいる学生の解答も正しいでしょう)。


トークンシーケンス分析の例

以下の例を検討してください。

C言語の関数ヘッダ

学生はfunctionのための簡単なfunction headerを書く必要があります、それは自然に記述されています:void function(int abc、char def)、そして以下の部分の記述:

無効
戻り値の型
関数
機能名
大括弧(または関数引数の左大括弧)
int
第一引数タイプ
abc
第一引数名
引数リストの区切り記号
チャー
第2引数タイプ
def
第二引数名
大括弧(または関数引数の場合は右大括弧)

学生が次のような答えを提出した場合、 function(abc、def)void 、question typeは次のような出力をします。

戻り値の型が間違っています
最初の引数タイプがありません
2番目の引数タイプがありません

英語の文

学生は外国語を学びながら、簡単な文章を書く必要があります。猫はマウスを食べました。

定冠詞
ネコ
件名
食べた
動詞
定冠詞
マウス
補体
文の終点

学生が次のような答えを提出したとします。猫がマウスを食べると、問題タイプは次のような出力になります。

「食べる」は反応してはいけません
動詞がありません
文の終点がありません。


以下の例を検討してください。

C言語の関数ヘッダ

学生はfunctionのための簡単なfunction headerを書く必要があります、それは自然に記述されています:void function(int abc、char def)、そして以下の部分の記述:

無効
戻り値の型
関数
機能名
大括弧(または関数引数の左大括弧)
int
第一引数タイプ
abc
第一引数名
引数リストの区切り記号
チャー
第2引数タイプ
def
第二引数名
大括弧(または関数引数の場合は右大括弧)

学生が次のような答えを提出した場合、 function(abc、def)void 、question typeは次のような出力をします。

戻り値の型が間違っています
最初の引数タイプがありません
2番目の引数タイプがありません

英語の文

学生は外国語を学びながら、簡単な文章を書く必要があります。猫はマウスを食べました。

定冠詞
ネコ
件名
食べた
動詞
定冠詞
マウス
補体
文の終点

学生が次のような答えを提出したとします。猫がマウスを食べると、問題タイプは次のような出力になります。

「食べる」は反応してはいけません
動詞がありません
文の終点がありません。