Download Jar. Uses 3874K of libraries. Click here for Pure Java version (9759L/67K).
1 | !759 |
2 | |
3 | sS guessProgramS = #1008669; //#1008653; |
4 | sS guessProgramV = #1008680; |
5 | static SingleComponentPanel scp; |
6 | static int startIndex; |
7 | sO guessModuleS, guessModuleV; |
8 | static ReliableSingleThread relearnThread = new(f relearn); |
9 | static JComboBox cbMode; |
10 | |
11 | concept Sentence { |
12 | S text; |
13 | S action; // subject |
14 | S verb; |
15 | } |
16 | |
17 | p-substance { |
18 | unswing { |
19 | useDBOf(#1008607); |
20 | db(); |
21 | indexConceptField(Sentence, "text"); |
22 | L<S> sentences = toLinesFullTrim(loadSnippet(#1008606)); |
23 | sentences = notStartingWith("\"", sentences); |
24 | time { makeUniqueConcepts(Sentence, "text", sentences); } |
25 | pcall { guessModuleS = runDependent(guessProgramS); } |
26 | pcall { guessModuleV = runDependent(guessProgramV); } |
27 | } |
28 | showFrame(centerAndSouth(scp = new SingleComponentPanel, |
29 | withTopMargin(20, jcenteredline( |
30 | jbutton("Prev", r { makePanel(max(startIndex-10, 0)) }), |
31 | jbutton("Next", f nextPage), |
32 | jbutton("Random", r { makePanel(random(countConcepts(Sentence))/10*10) }), |
33 | jbutton("All OK", r { clickButtons(findButtons(scp, "OK")); nextPage(); }), |
34 | jbutton("Re-learn", r { relearnThread.trigger() }))))); |
35 | setFrameWidth(scp, 1000); |
36 | centerFrame(scp); |
37 | makePanel(0); |
38 | } |
39 | |
40 | svoid makePanel(int startIndex) { |
41 | main.startIndex = startIndex; |
42 | makePanel(); |
43 | } |
44 | |
45 | svoid makePanel() { |
46 | JPanel panel = gridLayoutPanel_trackWidth_evenlySpacedCols(2); |
47 | panel.add(jlabel("Sentence")); |
48 | panel.add(jline(cbMode = jcombobox_copySelection(cbMode, "Subject", "Verb"))); |
49 | onChange(cbMode, f makePanel); |
50 | for (final Sentence s : takeFirst(10, dropFirst(startIndex, list(Sentence)))) { |
51 | final JTextField tfText = jtextfield_caretLeft(s.text); |
52 | tfText.setCaret(new DefaultCaret { |
53 | @Override |
54 | public void setSelectionVisible(boolean visible) { |
55 | super.setSelectionVisible(true); |
56 | } |
57 | }); |
58 | panel.add(tfText); |
59 | IntRange r = ai_parseSubjectAction(s.action); |
60 | if (r != null) |
61 | tfText.select(r.start, r.end); |
62 | |
63 | bool hasAction = nempty(verbMode() ? s.verb : s.action); |
64 | final JTextField tf = jtextfield(hasAction ? |
65 | (verbMode() ? s.verb : s.action) : guessAction(s)); |
66 | final new Var<JButton> reviseBtn, okBtn; |
67 | okBtn.set(jbutton("OK", r { |
68 | cset(s, verbMode() ? "verb" : "action", getTextTrim(tf)); |
69 | disableTextField(tf); |
70 | replaceComponent(okBtn!, reviseBtn!); |
71 | relearnThread.trigger(); |
72 | })); |
73 | reviseBtn.set(jbutton("Revise", r { |
74 | cset(s, verbMode() ? "verb" : "action", null); |
75 | enableTextField(tf); |
76 | replaceComponent(reviseBtn!, okBtn!); |
77 | })); |
78 | if (hasAction) disableTextField(tf); |
79 | panel.add(centerAndEast(tf, hasAction ? reviseBtn! : okBtn!)); |
80 | |
81 | onCaret(tfText, r { |
82 | if ((verbMode() ? s.verb : s.action) == null) { |
83 | S a; |
84 | IntRange r = IntRange(tfText.getSelectionStart(), tfText.getSelectionEnd()); |
85 | if (verbMode()) |
86 | a = ai_makeVerbAction(s.text, ll(r)); |
87 | else |
88 | a = ai_makeSubjectAction(s.text, r); |
89 | if (a != null) tf.setText(a); |
90 | } |
91 | }); |
92 | } |
93 | scp.setComponent(jscroll(panel)); |
94 | } |
95 | |
96 | static IntRange guessSubject(S sentence) { |
97 | if (guessModuleS == null) null; |
98 | ret (IntRange) quickImport(call(guessModuleS, "callGuesser", get(guessModuleS, "best"), sentence)); |
99 | } |
100 | |
101 | static L<IntRange> guessVerb(S sentence, IntRange subject) { |
102 | if (guessModuleV == null) null; |
103 | ret (L<IntRange>) callWithImportExport(guessModuleV, "callGuesser", get(guessModuleV, "best"), sentence, subject); |
104 | } |
105 | |
106 | static S guessAction(Sentence s) { |
107 | if (verbMode()) { |
108 | IntRange subject = ai_parseSubjectAction(s.action); |
109 | ret or2(ai_makeVerbAction(s.text, guessVerb(s.text, subject)), "?"); |
110 | } else |
111 | ret or2(ai_makeSubjectAction(s.text, guessSubject(s.text)), "?"); |
112 | } |
113 | |
114 | svoid relearn { |
115 | callMain(guessModuleS); |
116 | callMain(guessModuleV); |
117 | swing { makePanel(); } |
118 | } |
119 | |
120 | svoid nextPage { |
121 | if (startIndex+10 < countConcepts(Sentence)) makePanel(startIndex+10); |
122 | } |
123 | |
124 | sbool verbMode() { |
125 | ret cbMode.getSelectedIndex() > 0; |
126 | } |
Began life as a copy of #1008632
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1008674 |
Snippet name: | Sentences to subject/verb with guessing [WORKS a bit] |
Eternal ID of this version: | #1008674/24 |
Text MD5: | 5a152c68cab3063ddbd184765df94eb4 |
Transpilation MD5: | 2062b7c3e296803307861e23e41ed315 |
Author: | stefan |
Category: | javax / a.i. |
Type: | JavaX source code (desktop) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2017-05-28 20:08:11 |
Source code size: | 4097 bytes / 126 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 549 / 1214 |
Version history: | 23 change(s) |
Referenced in: | [show references] |