Uses 911K of libraries. Click here for Pure Java version (5068L/26K).
!7 // Text + questions from https://lingua.com/english/reading/my-day/ cmodule MyDay > DynPrintLog { transient ReadingComprehensionTest test; switchable S text = [[ Text ---- 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. 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. Question 1: What happens first? 1 Get dressed 2 Wake up 3 Eat lunch 4 Walk to school Question 2: What do I like? 1 Books 2 Rain 3 Walking home 4 Going to bed Question 3: How do I go to school? 1 I ride a bike. 2 I walk. 3 I ride the bus. 4 I drive a car. Question 4: What do I eat for dinner? 1 Sandwich 2 Pie 3 Soup 4 Apple Question 5: What do I not like? 1 Going to school 2 Going to bed 3 Playing 4 Soup ]]; // We help the AI by declaring some "power words" in form of regular expressions transient LS regexps = ll("(?<!not )like", "not like", "dinner", "school", "bed"); start-thread { test = ai_parseReadingComprehensionTest_v1(text); pnl(map_curry renderLineWithMatchingRegexpsIC(regexps, test.sentences)); // to see if the regexps work for (ReadingComprehensionTest.Question q : test.questions) { print_nlBefore(q.question); LS matchedInQ = matchingRegexpsIC(regexps, q.question); if (empty(matchedInQ)) matchedInQ = ll(""); // match all bool firstType = containsWord(q.question, "first"); new Best<S> best; for (S answer : q.answers) { LS regexps2 = ll(quoteRegexp(dropPunctuation(answer))); // treat the whole answer as a regexp LS regexps2b = matchingRegexpsIC(regexps, answer); // find the regexps that match the answer double score = 0; if (firstType) { // mode 1: find what appears first in text int idx = indexOfEntryContainingAllRegexpsIC(regexps2, test.sentences); if (idx < 0) idx = indexOfEntryContainingAllRegexpsIC(regexps2b, test.sentences); // try the second set of regexps if (idx >= 0) score = -idx; else continue; } else { // mode 2: find sentence in text that matches question + answer best score = ai_regexpMixScoreIC(regexps2, matchedInQ, test.sentences, quote(answer)); if (score == 0) score = ai_regexpMixScoreIC(regexps2b, matchedInQ, test.sentences, quote(answer)); // try second set of regexps here too } best.put(answer, score); } print(">> " + or(best!, "?")); // print answer } } }
Began life as a copy of #1023740
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: | #1023742 |
Snippet name: | "My Day" [v4, solve a simple reading comprehension test using regexps, OK] |
Eternal ID of this version: | #1023742/37 |
Text MD5: | 5650a3d2ed5b7504258a3eb7b618f544 |
Transpilation MD5: | c3a5d550b0a9e8daee62d50ebe3d83c5 |
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-08 13:03:55 |
Source code size: | 2948 bytes / 78 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 647 / 990 |
Version history: | 36 change(s) |
Referenced in: | [show references] |