GRAM_FACTOR

Define a grammaticality factor to distinguish between grammatical and non-grammatical test items.

Contents

Basic grammaticality factor

GRAM_FACTOR(aglss, 'fname') distinguishes between grammatical (G) and non-grammatical (NG) test items.

The example below generates training items based on the XY_GRAMMAR, which alternates Xs and Ys, and test items that are either grammatical (strictly alternating) or nongrammatical (with repeated Xs or Ys).

s_xy = aglss(xy_grammar, [1 10]);

[s, levs] = gram_factor(s_xy, 'gram');

s = factorial_testsets(s, [{'gram'}, levs]);
s = choose_items(s, 4, 2);

disp('Training items:');
disp(format_train_items(s));

disp('Test items:');
disp(format_test_items(s));
 Potential items:
	Grammar involves 2 symbols (xy)
	2046 possible strings of length 1-10
		20 grammatical strings ( 0.98%)
		2026 ungrammatical strings (99.02%)
	Using all 20 grammatical strings
	Using all 2026 ungrammatical strings
 
 Choosing training item 1....
 Choosing training item 2....
 Choosing training item 3....
 Choosing training item 4....
 Updating potential items....
 Choosing test item 1 for each set... 1 2.
 Choosing test item 2 for each set... 1 2.

Training items:
  Itm_num    Itm_name
       01          yx
       02    yxyxyxyx
       03     yxyxyxy
       04        xyxy

Test items:
 Tset_num      gram_cat  Itm_num    Itm_name
       01             G       01           y
       01             G       02           x
       02            NG       01  xxyyxxyxxy
       02            NG       02   xyyxyyyxx

Grammaticality factor with specified category names

GRAM_FACTOR(aglss, 'fname', {'gname', 'ngname'}) specifies alternative names for the grammatical and nongrammatical categories.

s = gram_factor(s_xy, 'MyGram', {'OK', 'NOK'});

s = factorial_testsets(s, {'MyGram', 'OK', 'NOK'} );
s = choose_items(s, 4, 2);

disp('Training items:');
disp(format_train_items(s));

disp('Test items:');
disp(format_test_items(s));
 Choosing training item 1....
 Choosing training item 2....
 Choosing training item 3....
 Choosing training item 4....
 Updating potential items....
 Choosing test item 1 for each set... 1 2.
 Choosing test item 2 for each set... 1 2.

Training items:
  Itm_num    Itm_name
       01          yx
       02    yxyxyxyx
       03     yxyxyxy
       04        xyxy

Test items:
 Tset_num    MyGram_cat  Itm_num    Itm_name
       01            OK       01           y
       01            OK       02           x
       02           NOK       01  xxyyxxyxxy
       02           NOK       02   xyyxyyyxx

Grammaticality factor with specified grammar

GRAM_FACTOR(aglss, 'fname', fsg) distinguishes test items that are grammatical (G) or non-grammatical (NG) with respect to a specified grammar.

The example below generates training items based on the XY_GRAMMAR, and test items that are either grammatical or non-grammatical with respect to this grammar, with the constraint that all test items are consistent with the XX_GRAMMAR. This allows NG items with repeated Xs, but never repeated Ys.

s_xy = aglss(xy_grammar, [1 10]);

[s, levs] = gram_factor(s_xy, 'gram');  % grammaticality w.r.t. training item grammar

[s, levs] = gram_factor(s, 'xx_gram', xx_grammar);   % grammaticality w.r.t. more liberal grammar

s = factorial_testsets(s, [{'gram'}, levs], {'xx_gram', 'G'});
s = choose_items(s, 4, 2);

disp('Training items:');
disp(format_train_items(s));

disp('Test items:');
disp(format_test_items(s));
 Potential items:
	Grammar involves 2 symbols (xy)
	2046 possible strings of length 1-10
		20 grammatical strings ( 0.98%)
		2026 ungrammatical strings (99.02%)
	Using all 20 grammatical strings
	Using all 2026 ungrammatical strings
 
 Choosing training item 1....
 Choosing training item 2....
 Choosing training item 3....
 Choosing training item 4....
 Updating potential items....
 Choosing test item 1 for each set... 2 1.
 Choosing test item 2 for each set... 2 1.

Training items:
  Itm_num    Itm_name
       01      xyxyxy
       02        xyxy
       03      yxyxyx
       04  yxyxyxyxyx

Test items:
 Tset_num      gram_cat   xx_gram_cat  Itm_num    Itm_name
       01             G             G       01           x
       01             G             G       02          yx
       02            NG             G       01   yxyxxyxxx
       02            NG             G       02   yxxyxxxxx