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