Uses 911K of libraries. Click here for Pure Java version (5205L/27K).
1 | !7 |
2 | |
3 | // Text + questions from https://lingua.com/english/reading/my-day/ |
4 | |
5 | cmodule MyDay > DynPrintLog { |
6 | transient ReadingComprehensionTest test; |
7 | switchable S text = [[ |
8 | |
9 | Text |
10 | ---- |
11 | |
12 | First, I wake up. Then, I get dressed. I walk to school. I do not ride a bike. I do not ride the bus. I like to go to school. It rains. I do not like rain. I eat lunch. I eat a sandwich and an apple. |
13 | |
14 | I play outside. I like to play. I read a book. I like to read books. I walk home. I do not like walking home. My mother cooks soup for dinner. The soup is hot. Then, I go to bed. I do not like to go bed. |
15 | |
16 | |
17 | Question 1: |
18 | What happens first? |
19 | 1 Get dressed 2 Wake up |
20 | 3 Eat lunch 4 Walk to school |
21 | |
22 | Question 2: |
23 | What do I like? |
24 | 1 Books 2 Rain |
25 | 3 Walking home 4 Going to bed |
26 | |
27 | Question 3: |
28 | How do I go to school? |
29 | 1 I ride a bike. 2 I walk. |
30 | 3 I ride the bus. 4 I drive a car. |
31 | |
32 | Question 4: |
33 | What do I eat for dinner? |
34 | 1 Sandwich 2 Pie |
35 | 3 Soup 4 Apple |
36 | |
37 | Question 5: |
38 | What do I not like? |
39 | 1 Going to school 2 Going to bed |
40 | 3 Playing 4 Soup |
41 | |
42 | ]]; |
43 | |
44 | transient LS regexps; |
45 | |
46 | start-thread { |
47 | test = ai_parseReadingComprehensionTest_v1(text); |
48 | regexps = map wordRegexp(wordSet(text)); |
49 | pnl(map_curry renderLineWithMatchingRegexpsIC(regexps, test.sentences)); // to see if the regexps work |
50 | |
51 | for (ReadingComprehensionTest.Question q : test.questions) { |
52 | print_nlBefore(q.question); |
53 | LS matchedInQ = matchingRegexpsIC(regexps, q.question); |
54 | if (empty(matchedInQ)) matchedInQ = ll(""); // match all |
55 | bool firstType = containsWord(q.question, "first"); |
56 | |
57 | new Best<S> best; |
58 | for (S answer : q.answers) { |
59 | LS regexps2 = ll(quoteRegexp(dropPunctuation(answer))); // treat the whole answer as a regexp |
60 | LS regexps2b = matchingRegexpsIC(regexps, answer); // find the regexps that match the answer |
61 | double score = 0; |
62 | if (firstType) { // mode 1: find what appears first in text |
63 | int idx = indexOfEntryContainingAllRegexpsIC(regexps2, test.sentences); |
64 | if (idx < 0) |
65 | idx = indexOfEntryContainingAllRegexpsIC(regexps2b, test.sentences); // try the second set of regexps |
66 | if (idx >= 0) score = -idx; else continue; |
67 | } else { // mode 2: find sentence in text that matches question + answer best |
68 | score = ai_regexpMixScoreIC(regexps2, matchedInQ, test.sentences, quote(answer)); |
69 | if (score == 0) |
70 | score = ai_regexpMixScoreIC(regexps2b, matchedInQ, test.sentences, quote(answer)); // try second set of regexps here too |
71 | } |
72 | best.put(answer, score); |
73 | } |
74 | print(">> " + or(best!, "?")); // print answer |
75 | } |
76 | } |
77 | } |
Began life as a copy of #1023742
download show line numbers debug dex old transpilations
Travelled to 6 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1023783 |
Snippet name: | "My Day" v5 [abandoned], trying all words as power words. OK it doesn't work like that |
Eternal ID of this version: | #1023783/6 |
Text MD5: | 0b2caf10c080bda84d2297568142cec6 |
Transpilation MD5: | df796e486eb01dc35edc101ad165b529 |
Author: | stefan |
Category: | javax |
Type: | JavaX source code (Dynamic Module) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2019-07-09 01:31:39 |
Source code size: | 2849 bytes / 77 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 265 / 399 |
Version history: | 5 change(s) |
Referenced in: | [show references] |