Loading CheckerCorrector/Checker.java +26 −7 Original line number Diff line number Diff line Loading @@ -20,7 +20,12 @@ public class Checker { ArgumentParser argPars = ArgumentParser.of(args); BasicGraph basicGraphClass = new BasicGraph(); DBinterface dbInterface = new DBinterface(); DBinterface dbInterface; if(!argPars.isDutch()){ dbInterface = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt"); }else{ dbInterface = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt"); } DirectedGraph<State> graph = basicGraphClass.getGraph(); JsonMaker jsonMaker = JsonMaker.create(); Loading @@ -29,13 +34,22 @@ public class Checker { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { String dbName = "SQLite/newdatabase.db"; String dbName = "SQLite/token_database_english_updated.db"; if(argPars.isCheckFile()){ dbName = argPars.getFileName(); } new WordRoleUpdater(dbName); } }); }else if(argPars.isUpdateTokenFromDic()){ dbInterface.readDataFromDatabase(); if(argPars.isDutch()){ dbInterface.updateTokenTableFromDic("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt", true); }else{ dbInterface.updateTokenTableFromDic("SQLite/token_database_english.db", "SQLite/DutchTranslation.txt", false); } }else if(argPars.isUpdateToken()){ dbInterface.readDataFromDatabase(); if(argPars.isCheckFile()){ Loading @@ -61,14 +75,19 @@ public class Checker { dbInterface.updateTokenInDatabase(phrase.toLowerCase(), graph); } } dbInterface.updateDatabase(); if(argPars.isDutch()){ dbInterface.updateDatabase("SQLite/token_database_dutch_updated.db"); }else{ dbInterface.updateDatabase("SQLite/token_database_english_updated.db"); } }else if(argPars.isUpdateHashTable()){ if(argPars.isCheckFile()){ SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); List<String> extractedSentences = extractor.getSentences(); try { HashTableMaker manager = new HashTableMaker(); HashTableMaker manager = new HashTableMaker("SQLite/hash_database_english.db"); for (String sentence : extractedSentences) { manager.updateDatabase(sentence.toLowerCase()); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence, 1, 4); Loading @@ -83,7 +102,7 @@ public class Checker { } }else if(argPars.isCheckSentence()){ try { HashTableMaker manager = new HashTableMaker(); HashTableMaker manager = new HashTableMaker("SQLite/hash_database_english.db"); manager.updateDatabase(argPars.getSentence().toLowerCase()); for (String phrase : PhraseExtractor.fromSentence(argPars.getSentence(),1, 4).getPhrases()) { manager.updateDatabase(phrase.toLowerCase()); Loading @@ -97,7 +116,7 @@ public class Checker { SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); List<String> extractedSentences = extractor.getSentences(); try { HashTableMaker manager = new HashTableMaker(); HashTableMaker manager = new HashTableMaker("SQLite/hash_database_english.db"); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); Loading Loading @@ -143,7 +162,7 @@ public class Checker { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new HighlighterGUI(); new HighlighterGUI(argPars.isDutch()); } }); } Loading CheckerCorrector/Corrector.java +73 −33 Original line number Diff line number Diff line Loading @@ -12,11 +12,12 @@ import util.JsonMaker; import util.PhraseExtractor; import util.SentenceExtractor; import util.StringFileWriter; import Translator.DirectTranslator; import Translator.*; import StateMachine.*; public class Corrector implements GUIListener { ArgumentParser argParsGUI; SentenceExtractor extractorGUI; private String curSentenceGUI; private DBinterface dbInterfaceGUI; Loading @@ -26,7 +27,11 @@ public class Corrector implements GUIListener { private int senteceIndGUI; public void start() { this.dbInterfaceGUI = new DBinterface(); if(!this.argParsGUI.isDutch()){ this.dbInterfaceGUI = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt"); }else{ this.dbInterfaceGUI = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt"); } this.graphGUI = new BasicGraph().getGraph(); this.stringWriterGUI = StringFileWriter.of("corrected.txt"); this.senteceIndGUI = 0; Loading Loading @@ -79,7 +84,8 @@ public class Corrector implements GUIListener { return this.curSentenceGUI; } Corrector(SentenceExtractor extractor){ Corrector(SentenceExtractor extractor, ArgumentParser argumentParser){ this.argParsGUI = argumentParser; this.extractedSentencesGUI = extractor.getSentences(); } public static void main(String[] args) { Loading @@ -87,27 +93,36 @@ public class Corrector implements GUIListener { ArgumentParser argPars = ArgumentParser.of(args); BasicGraph basicGraphClass = new BasicGraph(); DBinterface dbInterface = new DBinterface(); DBinterface dbInterface; if(!argPars.isDutch()){ dbInterface = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt"); }else{ dbInterface = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt"); } DirectedGraph graph = basicGraphClass.getGraph(); StringFileWriter stringWriter = StringFileWriter.of("corrected.txt"); StringFileWriter.deleteFile("correction_details.txt"); StringFileWriter.deleteFile("correction_details.txt"); if(argPars.isTranslateToDutch()){ DirectTranslatorEnglishToDutch directTranslator = DirectTranslatorEnglishToDutch.make(); directTranslator.loadWordMapFromFile("SQLite/DutchTranslation.txt"); if(argPars.isCheckFile()){ if(argPars.isCorrectionGUI()){ Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getFileName())); corrector.start(); }else{ SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); String tempString = dbInterface.correctTokenInDatabase(sentence.toLowerCase(), graph, 2, true); String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase()); stringWriter.appendString(tempString); System.out.println("##########################################################"); } }else{ System.out.println("Sentence: " + argPars.getSentence()); String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase()); stringWriter.appendString(tempString); System.out.println("Translation: "+tempString); System.out.println("##########################################################"); } try { stringWriter.writeToFile(); Loading @@ -115,45 +130,70 @@ public class Corrector implements GUIListener { } catch (IOException e) { System.err.println("An error occurred while writing to the file: " + e.getMessage()); } }else if(argPars.isCheckSentence()){ if(argPars.isCorrectionGUI()){ Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getSentence())); corrector.start(); }else if(argPars.isTranslateToEnglish()){ DirectTranslatorDutchToEnglish directTranslator = DirectTranslatorDutchToEnglish.make(); directTranslator.loadWordMapFromFile("SQLite/DutchTranslation.txt"); if(argPars.isCheckFile()){ SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase()); stringWriter.appendString(tempString); System.out.println("##########################################################"); } }else{ System.out.println("Sentence: " + argPars.getSentence()); stringWriter.appendString(dbInterface.correctTokenInDatabase(argPars.getSentence().toLowerCase(), graph, 2, true)); String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase()); stringWriter.appendString(tempString); System.out.println("Translation: "+tempString); System.out.println("##########################################################"); } try { stringWriter.writeToFile(); System.out.println("Corrected version has been written to the file."); } catch (IOException e) { System.err.println("An error occurred while writing to the file: " + e.getMessage()); } System.out.println("##########################################################"); } }else if(argPars.isTranslateDutch()){ DirectTranslator directTranslator = DirectTranslator.make(); directTranslator.loadWordMapFromFile("SQLite/word_map.txt"); if(argPars.isCheckFile()){ }else if(argPars.isCheckFile()){ if(argPars.isCorrectionGUI()){ Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getFileName()), argPars); corrector.start(); }else{ SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase()); String tempString = dbInterface.correctTokenInDatabase(sentence.toLowerCase(), graph, 2, true); stringWriter.appendString(tempString); System.out.println("##########################################################"); } } try { stringWriter.writeToFile(); System.out.println("Corrected version has been written to the file."); } catch (IOException e) { System.err.println("An error occurred while writing to the file: " + e.getMessage()); } }else if(argPars.isCheckSentence()){ if(argPars.isCorrectionGUI()){ Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getSentence()), argPars); corrector.start(); }else{ System.out.println("Sentence: " + argPars.getSentence()); stringWriter.appendString(directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase())); System.out.println("##########################################################"); } stringWriter.appendString(dbInterface.correctTokenInDatabase(argPars.getSentence().toLowerCase(), graph, 2, true)); try { stringWriter.writeToFile(); System.out.println("Corrected version has been written to the file."); } catch (IOException e) { System.err.println("An error occurred while writing to the file: " + e.getMessage()); } System.out.println("##########################################################"); } } } Loading CheckerCorrector/DBinterface/DBinterface.java +71 −13 Original line number Diff line number Diff line Loading @@ -5,6 +5,9 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.io.IOException; import java.util.Map; import java.io.BufferedReader; import java.io.FileReader; import DirectedGraph.DirectedGraph; Loading @@ -18,15 +21,21 @@ import util.StringProcessor; import GUI.SelectCorrectionHandler; public class DBinterface { String url; String dicFileName; public DBinterface(String url, String dicFileName){ this.url = "jdbc:sqlite:./"+url; this.dicFileName = dicFileName; } public int checkTokenInDatabase(String sentence, DirectedGraph<State> graph){ StateMachine SM = new StateMachine(); sentence = sentence.replaceAll("\\p{Punct}", " $0"); String[] tokens = sentence.split("\\s+"); String url = "jdbc:sqlite:./SQLite/mydatabase.db"; String dicFileName = "./SQLite/smallDic.txt"; TypoCorrector typoChecker = TypoCorrector.of(dicFileName); //String url = "jdbc:sqlite:./SQLite/mydatabase.db"; //String dicFileName = "./SQLite/smallDic.txt"; TypoCorrector typoChecker = TypoCorrector.of(this.dicFileName); int initialConf = 0; try (Connection connection = DriverManager.getConnection(url)) { try (Connection connection = DriverManager.getConnection(this.url)) { // Lookup each token in the database and categorize it for (int i = 0; i < tokens.length; i++) { Loading Loading @@ -112,14 +121,14 @@ public class DBinterface { String[] tokens = sentence.split("\\s+"); String[] tokensCopy = tokens.clone(); List<String> tokenList = new ArrayList<>(Arrays.asList(tokensCopy)); String url = "jdbc:sqlite:./SQLite/mydatabase.db"; String dicFileName = "./SQLite/smallDic.txt"; TypoCorrector typoChecker = TypoCorrector.of(dicFileName); //String url = "jdbc:sqlite:./SQLite/mydatabase.db"; //this.dicFileName = "./SQLite/smallDic.txt"; TypoCorrector typoChecker = TypoCorrector.of(this.dicFileName); int initialConf = 0; int flagsCorrectioncnt = 0; boolean flagTypoCorrectionAccepted = true; StringFileWriter sfw = StringFileWriter.of("correction_details.txt", "\n", isNotGUI); try (Connection connection = DriverManager.getConnection(url)) { try (Connection connection = DriverManager.getConnection(this.url)) { // Lookup each token in the database and categorize it for (int i = 0; i < tokens.length; i++) { Loading Loading @@ -330,9 +339,9 @@ public class DBinterface { List<String> tokenList = new ArrayList<>(Arrays.asList(tokensCopy)); //String url = "jdbc:sqlite:./SQLite/mydatabase.db"; //String urlinsert = "jdbc:sqlite:./SQLite/newdatabase.db"; String dicFileName = "./SQLite/smallDic.txt"; //String dicFileName = "./SQLite/smallDic.txt"; //String url = "jdbc:sqlite:./SQLite/newdatabase.db"; TypoCorrector typoChecker = TypoCorrector.of(dicFileName); TypoCorrector typoChecker = TypoCorrector.of(this.dicFileName); int initialConf = 0; int cntMiss = 0; // Lookup each token in the database and categorize it Loading Loading @@ -418,10 +427,57 @@ public class DBinterface { private HashMap<String, String> wordRolesMap; public void updateTokenTableFromDic(String urlS, String filePath, Boolean isDutch) { // System.out.println("filePath"); HashMap<String, String> wordMap = new HashMap<>(); try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { String line; if(isDutch){ while ((line = br.readLine()) != null) { String[] words = line.split("\\s+"); if (words.length > 2) { wordMap.put(words[0], words[1]); } } }else{ while ((line = br.readLine()) != null) { String[] words = line.split("\\s+"); if (words.length > 2) { if(words[2].equals("to") && words.length>3){ wordMap.put(words[3], words[1]); }else{ wordMap.put(words[2], words[1]); } } } } wordRolesMap = mixHashMaps(wordMap, wordRolesMap); updateDatabase(urlS); // System.out.println(wordMap.size()); } catch (IOException e) { e.printStackTrace(); } } public HashMap<String, String> mixHashMaps(HashMap<String, String> map1, HashMap<String, String> map2) { HashMap<String, String> mergedMap = new HashMap<>(); for (Map.Entry<String, String> entry : map1.entrySet()) { mergedMap.put(entry.getKey(), entry.getValue()); } for (Map.Entry<String, String> entry : map2.entrySet()) { if (mergedMap.containsKey(entry.getKey())) { mergedMap.put(entry.getKey(), entry.getValue()); } else { mergedMap.put(entry.getKey(), entry.getValue()); } } return mergedMap; } // Method to read data from SQLite database into HashMap public void readDataFromDatabase() { wordRolesMap = new HashMap<>(); String dbUrl = "jdbc:sqlite:./SQLite/newdatabase.db"; String dbUrl = this.url;//SQLite/newdatabase.db"; try (Connection connection = DriverManager.getConnection(dbUrl)) { Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM word_roles"); Loading @@ -438,8 +494,9 @@ public class DBinterface { } // Method to update SQLite database with updated HashMap public void updateDatabase() { String dbUrl = "jdbc:sqlite:./SQLite/newdatabase.db"; public void updateDatabase(String urlS) { String dbUrl = "jdbc:sqlite:./"+urlS; //String dbUrl = "jdbc:sqlite:./SQLite/newdatabase.db"; try (Connection connection = DriverManager.getConnection(dbUrl)) { // Clear existing data in the table Statement clearStatement = connection.createStatement(); Loading @@ -447,6 +504,7 @@ public class DBinterface { // Insert updated data from HashMap into the table PreparedStatement insertStatement = connection.prepareStatement("INSERT INTO word_roles (word, role) VALUES (?, ?)"); for (String word : wordRolesMap.keySet()) { String role = wordRolesMap.get(word); insertStatement.setString(1, word); Loading CheckerCorrector/GUI/HighlighterGUI.java +10 −13 Original line number Diff line number Diff line Loading @@ -16,8 +16,9 @@ import java.util.Random; public class HighlighterGUI extends JFrame { private JTextArea textArea; private JButton highlightButton; public HighlighterGUI() { public boolean isDutch; public HighlighterGUI(boolean isDutch) { this.isDutch = isDutch; setTitle("Text Highlighter"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); Loading Loading @@ -51,7 +52,7 @@ public class HighlighterGUI extends JFrame { private List<String> extractPhrases(String text, int phraseLength) { List<String> phrases = new ArrayList<>(); String[] words = text.split("\\s+"); for (int i = 0; i <= words.length - phraseLength; i++) { for (int i = 0; i <= words.length - phraseLength; i+=phraseLength) { StringBuilder phraseBuilder = new StringBuilder(); for (int j = 0; j < phraseLength; j++) { phraseBuilder.append(words[i + j]); Loading @@ -65,7 +66,12 @@ public class HighlighterGUI extends JFrame { } private void highlightPhrases(List<String> phrases) { DBinterface dbInterface = new DBinterface(); DBinterface dbInterface; if(!this.isDutch){ dbInterface = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt"); }else{ dbInterface = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt"); } BasicGraph basicGraphClass = new BasicGraph(); for (String phrase : phrases) { highlightPhrase(phrase, dbInterface.checkTokenInDatabase(phrase, basicGraphClass.getGraph())); Loading @@ -90,13 +96,4 @@ public class HighlighterGUI extends JFrame { index = text.indexOf(phrase, index + 1); } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new HighlighterGUI(); } }); } } CheckerCorrector/HashTableMaker/HashTableMaker.java +2 −2 Original line number Diff line number Diff line Loading @@ -11,8 +11,8 @@ import util.PhraseExtractor; public class HashTableMaker { private Connection connection; public HashTableMaker() throws SQLException { connection = DriverManager.getConnection("jdbc:sqlite:SQLite/hash_database.db"); public HashTableMaker(String dbName) throws SQLException { connection = DriverManager.getConnection("jdbc:sqlite:SQLite/hash_database.db"+dbName); createTableIfNotExists(); } Loading Loading
CheckerCorrector/Checker.java +26 −7 Original line number Diff line number Diff line Loading @@ -20,7 +20,12 @@ public class Checker { ArgumentParser argPars = ArgumentParser.of(args); BasicGraph basicGraphClass = new BasicGraph(); DBinterface dbInterface = new DBinterface(); DBinterface dbInterface; if(!argPars.isDutch()){ dbInterface = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt"); }else{ dbInterface = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt"); } DirectedGraph<State> graph = basicGraphClass.getGraph(); JsonMaker jsonMaker = JsonMaker.create(); Loading @@ -29,13 +34,22 @@ public class Checker { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { String dbName = "SQLite/newdatabase.db"; String dbName = "SQLite/token_database_english_updated.db"; if(argPars.isCheckFile()){ dbName = argPars.getFileName(); } new WordRoleUpdater(dbName); } }); }else if(argPars.isUpdateTokenFromDic()){ dbInterface.readDataFromDatabase(); if(argPars.isDutch()){ dbInterface.updateTokenTableFromDic("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt", true); }else{ dbInterface.updateTokenTableFromDic("SQLite/token_database_english.db", "SQLite/DutchTranslation.txt", false); } }else if(argPars.isUpdateToken()){ dbInterface.readDataFromDatabase(); if(argPars.isCheckFile()){ Loading @@ -61,14 +75,19 @@ public class Checker { dbInterface.updateTokenInDatabase(phrase.toLowerCase(), graph); } } dbInterface.updateDatabase(); if(argPars.isDutch()){ dbInterface.updateDatabase("SQLite/token_database_dutch_updated.db"); }else{ dbInterface.updateDatabase("SQLite/token_database_english_updated.db"); } }else if(argPars.isUpdateHashTable()){ if(argPars.isCheckFile()){ SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); List<String> extractedSentences = extractor.getSentences(); try { HashTableMaker manager = new HashTableMaker(); HashTableMaker manager = new HashTableMaker("SQLite/hash_database_english.db"); for (String sentence : extractedSentences) { manager.updateDatabase(sentence.toLowerCase()); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence, 1, 4); Loading @@ -83,7 +102,7 @@ public class Checker { } }else if(argPars.isCheckSentence()){ try { HashTableMaker manager = new HashTableMaker(); HashTableMaker manager = new HashTableMaker("SQLite/hash_database_english.db"); manager.updateDatabase(argPars.getSentence().toLowerCase()); for (String phrase : PhraseExtractor.fromSentence(argPars.getSentence(),1, 4).getPhrases()) { manager.updateDatabase(phrase.toLowerCase()); Loading @@ -97,7 +116,7 @@ public class Checker { SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); List<String> extractedSentences = extractor.getSentences(); try { HashTableMaker manager = new HashTableMaker(); HashTableMaker manager = new HashTableMaker("SQLite/hash_database_english.db"); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); Loading Loading @@ -143,7 +162,7 @@ public class Checker { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new HighlighterGUI(); new HighlighterGUI(argPars.isDutch()); } }); } Loading
CheckerCorrector/Corrector.java +73 −33 Original line number Diff line number Diff line Loading @@ -12,11 +12,12 @@ import util.JsonMaker; import util.PhraseExtractor; import util.SentenceExtractor; import util.StringFileWriter; import Translator.DirectTranslator; import Translator.*; import StateMachine.*; public class Corrector implements GUIListener { ArgumentParser argParsGUI; SentenceExtractor extractorGUI; private String curSentenceGUI; private DBinterface dbInterfaceGUI; Loading @@ -26,7 +27,11 @@ public class Corrector implements GUIListener { private int senteceIndGUI; public void start() { this.dbInterfaceGUI = new DBinterface(); if(!this.argParsGUI.isDutch()){ this.dbInterfaceGUI = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt"); }else{ this.dbInterfaceGUI = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt"); } this.graphGUI = new BasicGraph().getGraph(); this.stringWriterGUI = StringFileWriter.of("corrected.txt"); this.senteceIndGUI = 0; Loading Loading @@ -79,7 +84,8 @@ public class Corrector implements GUIListener { return this.curSentenceGUI; } Corrector(SentenceExtractor extractor){ Corrector(SentenceExtractor extractor, ArgumentParser argumentParser){ this.argParsGUI = argumentParser; this.extractedSentencesGUI = extractor.getSentences(); } public static void main(String[] args) { Loading @@ -87,27 +93,36 @@ public class Corrector implements GUIListener { ArgumentParser argPars = ArgumentParser.of(args); BasicGraph basicGraphClass = new BasicGraph(); DBinterface dbInterface = new DBinterface(); DBinterface dbInterface; if(!argPars.isDutch()){ dbInterface = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt"); }else{ dbInterface = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt"); } DirectedGraph graph = basicGraphClass.getGraph(); StringFileWriter stringWriter = StringFileWriter.of("corrected.txt"); StringFileWriter.deleteFile("correction_details.txt"); StringFileWriter.deleteFile("correction_details.txt"); if(argPars.isTranslateToDutch()){ DirectTranslatorEnglishToDutch directTranslator = DirectTranslatorEnglishToDutch.make(); directTranslator.loadWordMapFromFile("SQLite/DutchTranslation.txt"); if(argPars.isCheckFile()){ if(argPars.isCorrectionGUI()){ Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getFileName())); corrector.start(); }else{ SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); String tempString = dbInterface.correctTokenInDatabase(sentence.toLowerCase(), graph, 2, true); String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase()); stringWriter.appendString(tempString); System.out.println("##########################################################"); } }else{ System.out.println("Sentence: " + argPars.getSentence()); String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase()); stringWriter.appendString(tempString); System.out.println("Translation: "+tempString); System.out.println("##########################################################"); } try { stringWriter.writeToFile(); Loading @@ -115,45 +130,70 @@ public class Corrector implements GUIListener { } catch (IOException e) { System.err.println("An error occurred while writing to the file: " + e.getMessage()); } }else if(argPars.isCheckSentence()){ if(argPars.isCorrectionGUI()){ Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getSentence())); corrector.start(); }else if(argPars.isTranslateToEnglish()){ DirectTranslatorDutchToEnglish directTranslator = DirectTranslatorDutchToEnglish.make(); directTranslator.loadWordMapFromFile("SQLite/DutchTranslation.txt"); if(argPars.isCheckFile()){ SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase()); stringWriter.appendString(tempString); System.out.println("##########################################################"); } }else{ System.out.println("Sentence: " + argPars.getSentence()); stringWriter.appendString(dbInterface.correctTokenInDatabase(argPars.getSentence().toLowerCase(), graph, 2, true)); String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase()); stringWriter.appendString(tempString); System.out.println("Translation: "+tempString); System.out.println("##########################################################"); } try { stringWriter.writeToFile(); System.out.println("Corrected version has been written to the file."); } catch (IOException e) { System.err.println("An error occurred while writing to the file: " + e.getMessage()); } System.out.println("##########################################################"); } }else if(argPars.isTranslateDutch()){ DirectTranslator directTranslator = DirectTranslator.make(); directTranslator.loadWordMapFromFile("SQLite/word_map.txt"); if(argPars.isCheckFile()){ }else if(argPars.isCheckFile()){ if(argPars.isCorrectionGUI()){ Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getFileName()), argPars); corrector.start(); }else{ SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName()); List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase()); String tempString = dbInterface.correctTokenInDatabase(sentence.toLowerCase(), graph, 2, true); stringWriter.appendString(tempString); System.out.println("##########################################################"); } } try { stringWriter.writeToFile(); System.out.println("Corrected version has been written to the file."); } catch (IOException e) { System.err.println("An error occurred while writing to the file: " + e.getMessage()); } }else if(argPars.isCheckSentence()){ if(argPars.isCorrectionGUI()){ Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getSentence()), argPars); corrector.start(); }else{ System.out.println("Sentence: " + argPars.getSentence()); stringWriter.appendString(directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase())); System.out.println("##########################################################"); } stringWriter.appendString(dbInterface.correctTokenInDatabase(argPars.getSentence().toLowerCase(), graph, 2, true)); try { stringWriter.writeToFile(); System.out.println("Corrected version has been written to the file."); } catch (IOException e) { System.err.println("An error occurred while writing to the file: " + e.getMessage()); } System.out.println("##########################################################"); } } } Loading
CheckerCorrector/DBinterface/DBinterface.java +71 −13 Original line number Diff line number Diff line Loading @@ -5,6 +5,9 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.io.IOException; import java.util.Map; import java.io.BufferedReader; import java.io.FileReader; import DirectedGraph.DirectedGraph; Loading @@ -18,15 +21,21 @@ import util.StringProcessor; import GUI.SelectCorrectionHandler; public class DBinterface { String url; String dicFileName; public DBinterface(String url, String dicFileName){ this.url = "jdbc:sqlite:./"+url; this.dicFileName = dicFileName; } public int checkTokenInDatabase(String sentence, DirectedGraph<State> graph){ StateMachine SM = new StateMachine(); sentence = sentence.replaceAll("\\p{Punct}", " $0"); String[] tokens = sentence.split("\\s+"); String url = "jdbc:sqlite:./SQLite/mydatabase.db"; String dicFileName = "./SQLite/smallDic.txt"; TypoCorrector typoChecker = TypoCorrector.of(dicFileName); //String url = "jdbc:sqlite:./SQLite/mydatabase.db"; //String dicFileName = "./SQLite/smallDic.txt"; TypoCorrector typoChecker = TypoCorrector.of(this.dicFileName); int initialConf = 0; try (Connection connection = DriverManager.getConnection(url)) { try (Connection connection = DriverManager.getConnection(this.url)) { // Lookup each token in the database and categorize it for (int i = 0; i < tokens.length; i++) { Loading Loading @@ -112,14 +121,14 @@ public class DBinterface { String[] tokens = sentence.split("\\s+"); String[] tokensCopy = tokens.clone(); List<String> tokenList = new ArrayList<>(Arrays.asList(tokensCopy)); String url = "jdbc:sqlite:./SQLite/mydatabase.db"; String dicFileName = "./SQLite/smallDic.txt"; TypoCorrector typoChecker = TypoCorrector.of(dicFileName); //String url = "jdbc:sqlite:./SQLite/mydatabase.db"; //this.dicFileName = "./SQLite/smallDic.txt"; TypoCorrector typoChecker = TypoCorrector.of(this.dicFileName); int initialConf = 0; int flagsCorrectioncnt = 0; boolean flagTypoCorrectionAccepted = true; StringFileWriter sfw = StringFileWriter.of("correction_details.txt", "\n", isNotGUI); try (Connection connection = DriverManager.getConnection(url)) { try (Connection connection = DriverManager.getConnection(this.url)) { // Lookup each token in the database and categorize it for (int i = 0; i < tokens.length; i++) { Loading Loading @@ -330,9 +339,9 @@ public class DBinterface { List<String> tokenList = new ArrayList<>(Arrays.asList(tokensCopy)); //String url = "jdbc:sqlite:./SQLite/mydatabase.db"; //String urlinsert = "jdbc:sqlite:./SQLite/newdatabase.db"; String dicFileName = "./SQLite/smallDic.txt"; //String dicFileName = "./SQLite/smallDic.txt"; //String url = "jdbc:sqlite:./SQLite/newdatabase.db"; TypoCorrector typoChecker = TypoCorrector.of(dicFileName); TypoCorrector typoChecker = TypoCorrector.of(this.dicFileName); int initialConf = 0; int cntMiss = 0; // Lookup each token in the database and categorize it Loading Loading @@ -418,10 +427,57 @@ public class DBinterface { private HashMap<String, String> wordRolesMap; public void updateTokenTableFromDic(String urlS, String filePath, Boolean isDutch) { // System.out.println("filePath"); HashMap<String, String> wordMap = new HashMap<>(); try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { String line; if(isDutch){ while ((line = br.readLine()) != null) { String[] words = line.split("\\s+"); if (words.length > 2) { wordMap.put(words[0], words[1]); } } }else{ while ((line = br.readLine()) != null) { String[] words = line.split("\\s+"); if (words.length > 2) { if(words[2].equals("to") && words.length>3){ wordMap.put(words[3], words[1]); }else{ wordMap.put(words[2], words[1]); } } } } wordRolesMap = mixHashMaps(wordMap, wordRolesMap); updateDatabase(urlS); // System.out.println(wordMap.size()); } catch (IOException e) { e.printStackTrace(); } } public HashMap<String, String> mixHashMaps(HashMap<String, String> map1, HashMap<String, String> map2) { HashMap<String, String> mergedMap = new HashMap<>(); for (Map.Entry<String, String> entry : map1.entrySet()) { mergedMap.put(entry.getKey(), entry.getValue()); } for (Map.Entry<String, String> entry : map2.entrySet()) { if (mergedMap.containsKey(entry.getKey())) { mergedMap.put(entry.getKey(), entry.getValue()); } else { mergedMap.put(entry.getKey(), entry.getValue()); } } return mergedMap; } // Method to read data from SQLite database into HashMap public void readDataFromDatabase() { wordRolesMap = new HashMap<>(); String dbUrl = "jdbc:sqlite:./SQLite/newdatabase.db"; String dbUrl = this.url;//SQLite/newdatabase.db"; try (Connection connection = DriverManager.getConnection(dbUrl)) { Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM word_roles"); Loading @@ -438,8 +494,9 @@ public class DBinterface { } // Method to update SQLite database with updated HashMap public void updateDatabase() { String dbUrl = "jdbc:sqlite:./SQLite/newdatabase.db"; public void updateDatabase(String urlS) { String dbUrl = "jdbc:sqlite:./"+urlS; //String dbUrl = "jdbc:sqlite:./SQLite/newdatabase.db"; try (Connection connection = DriverManager.getConnection(dbUrl)) { // Clear existing data in the table Statement clearStatement = connection.createStatement(); Loading @@ -447,6 +504,7 @@ public class DBinterface { // Insert updated data from HashMap into the table PreparedStatement insertStatement = connection.prepareStatement("INSERT INTO word_roles (word, role) VALUES (?, ?)"); for (String word : wordRolesMap.keySet()) { String role = wordRolesMap.get(word); insertStatement.setString(1, word); Loading
CheckerCorrector/GUI/HighlighterGUI.java +10 −13 Original line number Diff line number Diff line Loading @@ -16,8 +16,9 @@ import java.util.Random; public class HighlighterGUI extends JFrame { private JTextArea textArea; private JButton highlightButton; public HighlighterGUI() { public boolean isDutch; public HighlighterGUI(boolean isDutch) { this.isDutch = isDutch; setTitle("Text Highlighter"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); Loading Loading @@ -51,7 +52,7 @@ public class HighlighterGUI extends JFrame { private List<String> extractPhrases(String text, int phraseLength) { List<String> phrases = new ArrayList<>(); String[] words = text.split("\\s+"); for (int i = 0; i <= words.length - phraseLength; i++) { for (int i = 0; i <= words.length - phraseLength; i+=phraseLength) { StringBuilder phraseBuilder = new StringBuilder(); for (int j = 0; j < phraseLength; j++) { phraseBuilder.append(words[i + j]); Loading @@ -65,7 +66,12 @@ public class HighlighterGUI extends JFrame { } private void highlightPhrases(List<String> phrases) { DBinterface dbInterface = new DBinterface(); DBinterface dbInterface; if(!this.isDutch){ dbInterface = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt"); }else{ dbInterface = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt"); } BasicGraph basicGraphClass = new BasicGraph(); for (String phrase : phrases) { highlightPhrase(phrase, dbInterface.checkTokenInDatabase(phrase, basicGraphClass.getGraph())); Loading @@ -90,13 +96,4 @@ public class HighlighterGUI extends JFrame { index = text.indexOf(phrase, index + 1); } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new HighlighterGUI(); } }); } }
CheckerCorrector/HashTableMaker/HashTableMaker.java +2 −2 Original line number Diff line number Diff line Loading @@ -11,8 +11,8 @@ import util.PhraseExtractor; public class HashTableMaker { private Connection connection; public HashTableMaker() throws SQLException { connection = DriverManager.getConnection("jdbc:sqlite:SQLite/hash_database.db"); public HashTableMaker(String dbName) throws SQLException { connection = DriverManager.getConnection("jdbc:sqlite:SQLite/hash_database.db"+dbName); createTableIfNotExists(); } Loading