Libraryless. Click here for Pure Java version (2134L/17K/51K).
!747 abstract class P { abstract void write(S tok); abstract S read(); } m { static class Pairs extends P { new Map<S,S> map; S last; void write(S tok) { if (last != null) map.put(last, tok); last = tok; } S read() { return last == null ? null : map.get(last); } } p { P p = new Pairs; S corpus = makeCorpus(10); L<S> tok = javaTok(corpus); print("Tokens in corpus: " + tok.size()); new L<Boolean> predicted; int points = 0; for (int i = 1; i < tok.size(); i += 2) { S t = tok.get(i); S x = p.read(); boolean correct = t.equals(x); while (predicted.size() < i) predicted.add(false); predicted.add(correct); if (correct) ++points; p.write(t); } double score = points*100.0/(tok.size()/2); print(points + "/"+ tok.size()/2 + " = " + formatDouble(score, 2) + "%"); showColoredText(tok, predicted); } static void showColoredText(L<S> tok, L<Boolean> predicted) ctex { JFrame jf = new JFrame("Predicted = green"); Container cp = jf.getContentPane(); JTextPane pane = new JTextPane(); //pane.setFont(loadFont("#1000993", 24)); Document doc = pane.getStyledDocument(); for (int i = 0; i < tok.size(); i++) { if (tok.get(i).length() == 0) continue; boolean green = i < predicted.size() && predicted.get(i); SimpleAttributeSet set = new SimpleAttributeSet(); StyleConstants.setForeground(set, green ? Color.green : Color.gray); doc.insertString(doc.getLength(), tok.get(i), set); } JScrollPane scrollPane = new JScrollPane(pane); cp.add(scrollPane, BorderLayout.CENTER); jf.setBounds(100, 100, 600, 600); jf.setVisible(true); } !include #1000989 // SnippetDB static S makeCorpus(int numSnippets) { new StringBuilder buf; SnippetDB db = new SnippetDB("#1000673"); List<List<S>> rows = db.rowsOrderedBy("sn_created"); for (int i = 0; i < Math.min(rows.size(), numSnippets); i++) { S id = db.getField(rows.get(i), "sn_id"); S title = db.getField(rows.get(i), "sn_title"); S text = db.getField(rows.get(i), "sn_text"); buf.append("\n== ID: " + id); buf.append("\n== Title: " + title); buf.append("\n==\n"); buf.append(text).append("\n"); ++i; } return buf.toString(); } }
download show line numbers debug dex old transpilations
Travelled to 15 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, teubizvjbppd, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1000991 |
Snippet name: | Token prediction with graphical display |
Eternal ID of this version: | #1000991/1 |
Text MD5: | 7c65fe7ebea79b2f6d745411ac79759f |
Transpilation MD5: | 9aebadd15ce2d040cde1bcbbd035f2a3 |
Author: | stefan |
Category: | |
Type: | JavaX source code |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2015-09-14 18:23:50 |
Source code size: | 2481 bytes / 88 lines |
Pitched / IR pitched: | No / Yes |
Views / Downloads: | 652 / 744 |
Referenced in: | #1000995 - Token prediction, multiple predictors #3000382 - Answer for ferdie (>> t = 1, f = 0) #3000383 - Answer for funkoverflow (>> t=1, f=0 okay) |