Loading DBinterface/DBinterface.java +36 −14 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ public class DBinterface { ResultSet resultSet = statement.executeQuery(query); if (resultSet.next()) { role = resultSet.getString("role"); System.out.print("first try: " + token + " -> " + role); ////System.out.print("first try: " + token + " -> " + role); tokens[i] = role; }else{ String tokenCorrected = new String(); Loading @@ -43,20 +43,20 @@ public class DBinterface { tokenCorrected = typoChecker.closestWord(token); if(!tokenCorrected.equals(token)) initialConf += 5; System.out.print("Corrected token: " + token + " -> " + tokenCorrected); ////System.out.print("Corrected token: " + token + " -> " + tokenCorrected); query = "SELECT role FROM word_roles WHERE word = '" + tokenCorrected + "';"; // Replace the token with its role resultSet = statement.executeQuery(query); if (resultSet.next()) { role = resultSet.getString("role"); System.out.print("| Second try: "+ token + " -> " + role); ////System.out.print("| Second try: "+ token + " -> " + role); tokens[i] = role; } } } } System.out.println(); ////System.out.println(); } List<State> actions = new ArrayList<>(); Loading @@ -70,14 +70,24 @@ public class DBinterface { // Check if the sequence of actions follows the state machine int confidence = SM.isStateMachineFollowed(graph, actions, initialState, initialConf); System.out.print("The confidence score is: "+ confidence + "\n"); //System.out.print("The confidence score is: "+ confidence + "\n"); return confidence; } catch (SQLException e) { e.printStackTrace(); } return 0; } public String correctTokenInDatabase(String sentence, DirectedGraph<State> graph){ for(int i=0; i<2; i++){ sentence = new String(correctTokenInDatabaseInnerloop(sentence, graph)); if(checkTokenInDatabase(sentence, graph)<10) break; } return sentence; } private String correctTokenInDatabaseInnerloop(String sentence, DirectedGraph<State> graph){ StateMachine SM = new StateMachine(); sentence = sentence.replaceAll("\\p{Punct}", " $0"); String[] tokens = sentence.split("\\s+"); Loading @@ -101,7 +111,7 @@ public class DBinterface { ResultSet resultSet = statement.executeQuery(query); if (resultSet.next()) { role = resultSet.getString("role"); //System.out.print("first try: " + token + " -> " + role); //////System.out.print("first try: " + token + " -> " + role); tokens[i] = role; }else{ String tokenCorrected = new String(); Loading @@ -109,7 +119,7 @@ public class DBinterface { tokenCorrected = typoChecker.closestWord(token); if(!tokenCorrected.equals(token)) initialConf += 5; // System.out.print("Corrected token: " + token + " -> " + tokenCorrected); // ////System.out.print("Corrected token: " + token + " -> " + tokenCorrected); query = "SELECT role FROM word_roles WHERE word = '" + tokenCorrected + "';"; // Replace the token with its role Loading @@ -117,14 +127,14 @@ public class DBinterface { if (resultSet.next()) { tokenList.set(i,tokenCorrected); role = resultSet.getString("role"); // System.out.print("| Second try: "+ token + " -> " + role); // ////System.out.print("| Second try: "+ token + " -> " + role); tokens[i] = role; } } } } //System.out.println(); //////System.out.println(); } List<State> actions = new ArrayList<>(); Loading @@ -138,21 +148,29 @@ public class DBinterface { // Check if the sequence of actions follows the state machine TwoListStruct<State, Integer> output = SM.suggestedStateMachine(graph, actions, initialState); output.displayArrays(); // output.displayArrays(); List<State> suggested = output.getOutputList(); List<Integer> flags = output.getChangesList(); int delCnt = 0; boolean seenDot = false; int indDotseen = Math.max(suggested.size()+1, flags.size()+1); for(int i=0; i<suggested.size(); i++){ if(seenDot){ //indDotseen = i; // break; } if(suggested.get(i) == State.DOT) seenDot = true; if(flags.get(i+delCnt)==1){ try (Statement statement = connection.createStatement()) { String query = "SELECT word FROM word_roles WHERE role = '" + suggested.get(i) + "';"; String word = new String(); ResultSet resultSet = statement.executeQuery(query); System.out.print("!!! 1: " + resultSet + "| "); ////System.out.print("!!! 1: " + resultSet + "| "); if (resultSet.next()) { word = resultSet.getString("word"); System.out.println("Here I am: "+ word); ////System.out.println("Here I am: "+ word); if(i<tokenList.size()) tokenList.set(i,word); else Loading @@ -164,13 +182,13 @@ public class DBinterface { tokenList.remove(i); }else if(flags.get(i+delCnt)==3){ try (Statement statement = connection.createStatement()) { System.out.println(suggested.get(i)); ////System.out.println(suggested.get(i)); String query = "SELECT word FROM word_roles WHERE role = '" + suggested.get(i) + "';"; String word = new String(); ResultSet resultSet = statement.executeQuery(query); if (resultSet.next()) { word = resultSet.getString("word"); System.out.println("Here I am: "+ word); ////System.out.println("Here I am: "+ word); if(i<tokenList.size()) tokenList.add(i,word); else Loading @@ -181,11 +199,15 @@ public class DBinterface { } StringBuilder result = new StringBuilder(); boolean flagStart = false; int i = 0; for (String token : tokenList) { if(i==indDotseen) break; if(flagStart && !token.equals(".") && !token.equals(",")) result.append(" "); result.append(token); flagStart = true; i++; } return result.toString(); } catch (SQLException e) { Loading DirectedGraph/BasicGraph.java +28 −2 Original line number Diff line number Diff line Loading @@ -22,21 +22,47 @@ public class BasicGraph { graph.addEdge(State.START, State.PRONOUN); graph.addEdge(State.PRONOUN, State.VERB); graph.addEdge(State.VERB, State.ADJECTIVE); graph.addEdge(State.VERB, State.ADVERB); graph.addEdge(State.ADVERB, State.ADJECTIVE); graph.addEdge(State.VERB, State.ARTICLE); graph.addEdge(State.ARTICLE, State.ADVERB); graph.addEdge(State.ARTICLE, State.ADJECTIVE); graph.addEdge(State.ARTICLE, State.NOUN); graph.addEdge(State.ADJECTIVE, State.DOT); graph.addEdge(State.ADJECTIVE, State.NOUN); graph.addEdge(State.ADJECTIVE, State.COMMA); graph.addEdge(State.NOUN, State.DOT); graph.addEdge(State.NOUN, State.COMMA); graph.addEdge(State.DOT, State.END); graph.addEdge(State.COMMA, State.PRONOUN); //graph.addEdge(State.COMMA, State.PRONOUN); graph.addEdge(State.COMMA, State.CONJ); graph.addEdge(State.CONJ, State.PRONOUN); graph.addEdge(State.PRONOUN, State.CAN); graph.addEdge(State.CAN, State.VERB); graph.addEdge(State.IF, State.PRONOUN); graph.addEdge(State.THAT, State.PRONOUN); graph.addEdge(State.IF, State.NOUN); graph.addEdge(State.THAT, State.NOUN); graph.addEdge(State.NOUN, State.VERB); graph.addEdge(State.NOUN, State.CAN); //graph.addEdge(State.VERB, State.NOT); graph.addEdge(State.PRONOUN, State.DOES); graph.addEdge(State.NOUN, State.DOES); graph.addEdge(State.DOES, State.NOT); graph.addEdge(State.NOT, State.VERB); graph.addEdge(State.NOT, State.ADVERB); graph.addEdge(State.NOT, State.ADJECTIVE); graph.addEdge(State.NOT, State.ARTICLE); graph.addEdge(State.OF, State.NOUN); graph.addEdge(State.NOUN, State.OF); graph.addEdge(State.NOUN, State.IS); graph.addEdge(State.PRONOUN, State.IS); graph.addEdge(State.IS, State.ADJECTIVE); graph.addEdge(State.IS, State.ADVERB); graph.addEdge(State.IS, State.ARTICLE); graph.addEdge(State.THAT, State.IF); } public DirectedGraph<State> getGraph() { return graph; Loading DirectedGraph/DFS.java +7 −2 Original line number Diff line number Diff line Loading @@ -26,14 +26,19 @@ public class DFS { return allPaths; } private void dfsRecurssion(DirectedGraph<State> graph, State currentState, int depth, int maxDepth, List<State> path) { if (currentState.equals("dot") || depth >= maxDepth) { if ((currentState == State.DOT)) { ListToString lTS = ListToString.of(); StringBuilder sb = new StringBuilder(); int cnt=0; for(State p: path){ lTS.addString(p); cnt++; } if(cnt>(maxDepth-4)) allPaths.add(lTS.getString()); return; }else if(depth >= maxDepth){ return; } List<State> transitions = graph.getAdjacentNodes(currentState); for (State nextState : transitions) { Loading Makefile +0 −4 Original line number Diff line number Diff line Loading @@ -5,7 +5,3 @@ dev_checker: dev_corrector: javac -d bin Corrector.java **/*.java jar cvfm corrector.jar manifestCorrector.txt -C bin . -C SQLite . dec: javac -d bin src/CheckerCorrector/Checker.java src/CheckerCorrector/**/*.java jar cvfm src/CheckerCorrector/Checker.jar mm.txt -C bin . -C src/CheckerCorrector/SQLite . SQLite/mydatabase.db (12 KiB) File changed.No diff preview for this file type. View original file View changed file Loading
DBinterface/DBinterface.java +36 −14 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ public class DBinterface { ResultSet resultSet = statement.executeQuery(query); if (resultSet.next()) { role = resultSet.getString("role"); System.out.print("first try: " + token + " -> " + role); ////System.out.print("first try: " + token + " -> " + role); tokens[i] = role; }else{ String tokenCorrected = new String(); Loading @@ -43,20 +43,20 @@ public class DBinterface { tokenCorrected = typoChecker.closestWord(token); if(!tokenCorrected.equals(token)) initialConf += 5; System.out.print("Corrected token: " + token + " -> " + tokenCorrected); ////System.out.print("Corrected token: " + token + " -> " + tokenCorrected); query = "SELECT role FROM word_roles WHERE word = '" + tokenCorrected + "';"; // Replace the token with its role resultSet = statement.executeQuery(query); if (resultSet.next()) { role = resultSet.getString("role"); System.out.print("| Second try: "+ token + " -> " + role); ////System.out.print("| Second try: "+ token + " -> " + role); tokens[i] = role; } } } } System.out.println(); ////System.out.println(); } List<State> actions = new ArrayList<>(); Loading @@ -70,14 +70,24 @@ public class DBinterface { // Check if the sequence of actions follows the state machine int confidence = SM.isStateMachineFollowed(graph, actions, initialState, initialConf); System.out.print("The confidence score is: "+ confidence + "\n"); //System.out.print("The confidence score is: "+ confidence + "\n"); return confidence; } catch (SQLException e) { e.printStackTrace(); } return 0; } public String correctTokenInDatabase(String sentence, DirectedGraph<State> graph){ for(int i=0; i<2; i++){ sentence = new String(correctTokenInDatabaseInnerloop(sentence, graph)); if(checkTokenInDatabase(sentence, graph)<10) break; } return sentence; } private String correctTokenInDatabaseInnerloop(String sentence, DirectedGraph<State> graph){ StateMachine SM = new StateMachine(); sentence = sentence.replaceAll("\\p{Punct}", " $0"); String[] tokens = sentence.split("\\s+"); Loading @@ -101,7 +111,7 @@ public class DBinterface { ResultSet resultSet = statement.executeQuery(query); if (resultSet.next()) { role = resultSet.getString("role"); //System.out.print("first try: " + token + " -> " + role); //////System.out.print("first try: " + token + " -> " + role); tokens[i] = role; }else{ String tokenCorrected = new String(); Loading @@ -109,7 +119,7 @@ public class DBinterface { tokenCorrected = typoChecker.closestWord(token); if(!tokenCorrected.equals(token)) initialConf += 5; // System.out.print("Corrected token: " + token + " -> " + tokenCorrected); // ////System.out.print("Corrected token: " + token + " -> " + tokenCorrected); query = "SELECT role FROM word_roles WHERE word = '" + tokenCorrected + "';"; // Replace the token with its role Loading @@ -117,14 +127,14 @@ public class DBinterface { if (resultSet.next()) { tokenList.set(i,tokenCorrected); role = resultSet.getString("role"); // System.out.print("| Second try: "+ token + " -> " + role); // ////System.out.print("| Second try: "+ token + " -> " + role); tokens[i] = role; } } } } //System.out.println(); //////System.out.println(); } List<State> actions = new ArrayList<>(); Loading @@ -138,21 +148,29 @@ public class DBinterface { // Check if the sequence of actions follows the state machine TwoListStruct<State, Integer> output = SM.suggestedStateMachine(graph, actions, initialState); output.displayArrays(); // output.displayArrays(); List<State> suggested = output.getOutputList(); List<Integer> flags = output.getChangesList(); int delCnt = 0; boolean seenDot = false; int indDotseen = Math.max(suggested.size()+1, flags.size()+1); for(int i=0; i<suggested.size(); i++){ if(seenDot){ //indDotseen = i; // break; } if(suggested.get(i) == State.DOT) seenDot = true; if(flags.get(i+delCnt)==1){ try (Statement statement = connection.createStatement()) { String query = "SELECT word FROM word_roles WHERE role = '" + suggested.get(i) + "';"; String word = new String(); ResultSet resultSet = statement.executeQuery(query); System.out.print("!!! 1: " + resultSet + "| "); ////System.out.print("!!! 1: " + resultSet + "| "); if (resultSet.next()) { word = resultSet.getString("word"); System.out.println("Here I am: "+ word); ////System.out.println("Here I am: "+ word); if(i<tokenList.size()) tokenList.set(i,word); else Loading @@ -164,13 +182,13 @@ public class DBinterface { tokenList.remove(i); }else if(flags.get(i+delCnt)==3){ try (Statement statement = connection.createStatement()) { System.out.println(suggested.get(i)); ////System.out.println(suggested.get(i)); String query = "SELECT word FROM word_roles WHERE role = '" + suggested.get(i) + "';"; String word = new String(); ResultSet resultSet = statement.executeQuery(query); if (resultSet.next()) { word = resultSet.getString("word"); System.out.println("Here I am: "+ word); ////System.out.println("Here I am: "+ word); if(i<tokenList.size()) tokenList.add(i,word); else Loading @@ -181,11 +199,15 @@ public class DBinterface { } StringBuilder result = new StringBuilder(); boolean flagStart = false; int i = 0; for (String token : tokenList) { if(i==indDotseen) break; if(flagStart && !token.equals(".") && !token.equals(",")) result.append(" "); result.append(token); flagStart = true; i++; } return result.toString(); } catch (SQLException e) { Loading
DirectedGraph/BasicGraph.java +28 −2 Original line number Diff line number Diff line Loading @@ -22,21 +22,47 @@ public class BasicGraph { graph.addEdge(State.START, State.PRONOUN); graph.addEdge(State.PRONOUN, State.VERB); graph.addEdge(State.VERB, State.ADJECTIVE); graph.addEdge(State.VERB, State.ADVERB); graph.addEdge(State.ADVERB, State.ADJECTIVE); graph.addEdge(State.VERB, State.ARTICLE); graph.addEdge(State.ARTICLE, State.ADVERB); graph.addEdge(State.ARTICLE, State.ADJECTIVE); graph.addEdge(State.ARTICLE, State.NOUN); graph.addEdge(State.ADJECTIVE, State.DOT); graph.addEdge(State.ADJECTIVE, State.NOUN); graph.addEdge(State.ADJECTIVE, State.COMMA); graph.addEdge(State.NOUN, State.DOT); graph.addEdge(State.NOUN, State.COMMA); graph.addEdge(State.DOT, State.END); graph.addEdge(State.COMMA, State.PRONOUN); //graph.addEdge(State.COMMA, State.PRONOUN); graph.addEdge(State.COMMA, State.CONJ); graph.addEdge(State.CONJ, State.PRONOUN); graph.addEdge(State.PRONOUN, State.CAN); graph.addEdge(State.CAN, State.VERB); graph.addEdge(State.IF, State.PRONOUN); graph.addEdge(State.THAT, State.PRONOUN); graph.addEdge(State.IF, State.NOUN); graph.addEdge(State.THAT, State.NOUN); graph.addEdge(State.NOUN, State.VERB); graph.addEdge(State.NOUN, State.CAN); //graph.addEdge(State.VERB, State.NOT); graph.addEdge(State.PRONOUN, State.DOES); graph.addEdge(State.NOUN, State.DOES); graph.addEdge(State.DOES, State.NOT); graph.addEdge(State.NOT, State.VERB); graph.addEdge(State.NOT, State.ADVERB); graph.addEdge(State.NOT, State.ADJECTIVE); graph.addEdge(State.NOT, State.ARTICLE); graph.addEdge(State.OF, State.NOUN); graph.addEdge(State.NOUN, State.OF); graph.addEdge(State.NOUN, State.IS); graph.addEdge(State.PRONOUN, State.IS); graph.addEdge(State.IS, State.ADJECTIVE); graph.addEdge(State.IS, State.ADVERB); graph.addEdge(State.IS, State.ARTICLE); graph.addEdge(State.THAT, State.IF); } public DirectedGraph<State> getGraph() { return graph; Loading
DirectedGraph/DFS.java +7 −2 Original line number Diff line number Diff line Loading @@ -26,14 +26,19 @@ public class DFS { return allPaths; } private void dfsRecurssion(DirectedGraph<State> graph, State currentState, int depth, int maxDepth, List<State> path) { if (currentState.equals("dot") || depth >= maxDepth) { if ((currentState == State.DOT)) { ListToString lTS = ListToString.of(); StringBuilder sb = new StringBuilder(); int cnt=0; for(State p: path){ lTS.addString(p); cnt++; } if(cnt>(maxDepth-4)) allPaths.add(lTS.getString()); return; }else if(depth >= maxDepth){ return; } List<State> transitions = graph.getAdjacentNodes(currentState); for (State nextState : transitions) { Loading
Makefile +0 −4 Original line number Diff line number Diff line Loading @@ -5,7 +5,3 @@ dev_checker: dev_corrector: javac -d bin Corrector.java **/*.java jar cvfm corrector.jar manifestCorrector.txt -C bin . -C SQLite . dec: javac -d bin src/CheckerCorrector/Checker.java src/CheckerCorrector/**/*.java jar cvfm src/CheckerCorrector/Checker.jar mm.txt -C bin . -C src/CheckerCorrector/SQLite .
SQLite/mydatabase.db (12 KiB) File changed.No diff preview for this file type. View original file View changed file