Loading CheckerCorrector/Checker.java +8 −6 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ public class Checker { for (String sentence : extractedSentences) { i++; //dbInterface.updateTokenInDatabase(sentence.toLowerCase(), graph); sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence, 3, 5); List<String> phrases = extractorPhrase.getPhrases(); for (String phrase : phrases) { Loading @@ -71,7 +72,7 @@ public class Checker { System.out.println("\n-------------------------------------------\n"+ "Number of update: "+ cntUpdate); }else if(argPars.isCheckSentence()){ //dbInterface.updateTokenInDatabase(argPars.getSentence().toLowerCase(), graph); for (String phrase : PhraseExtractor.fromSentence(argPars.getSentence(),3, 5).getPhrases()) { for (String phrase : PhraseExtractor.fromSentence(StringProcessor.handleApostrophe(argPars.getSentence()),3, 5).getPhrases()) { dbInterface.updateTokenInDatabase(phrase.toLowerCase(), graph); } } Loading @@ -93,6 +94,7 @@ public class Checker { manager = new HashTableMaker("SQLite/hash_database_english.db"); } for (String sentence : extractedSentences) { sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); manager.updateDatabase(sentence.toLowerCase()); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence, 1, 4); List<String> phrases = extractorPhrase.getPhrases(); Loading @@ -107,8 +109,8 @@ public class Checker { }else if(argPars.isCheckSentence()){ try { 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(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase())); for (String phrase : PhraseExtractor.fromSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()),1, 4).getPhrases()) { manager.updateDatabase(phrase.toLowerCase()); } manager.closeConnection(); Loading @@ -123,7 +125,7 @@ public class Checker { HashTableMaker manager = new HashTableMaker("SQLite/hash_database_english.db"); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); System.out.println("*********************************************************"); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence); List<String> phrases = extractorPhrase.getPhrases(); Loading Loading @@ -151,9 +153,9 @@ public class Checker { }else if(argPars.isCheckSentence()){ System.out.println("Sentence: " + argPars.getSentence()); jsonMaker.addSentence(argPars.getSentence().toLowerCase(), dbInterface.checkTokenInDatabase(argPars.getSentence().toLowerCase(), graph)); jsonMaker.addSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()), dbInterface.checkTokenInDatabase(argPars.getSentence().toLowerCase(), graph)); System.out.println("*********************************************************"); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(argPars.getSentence().toLowerCase()); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase())); List<String> phrases = extractorPhrase.getPhrases(); for (String phrase : phrases) { System.out.println("Phrase: " + phrase); Loading CheckerCorrector/Corrector.java +11 −4 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import util.JsonMaker; import util.PhraseExtractor; import util.SentenceExtractor; import util.StringFileWriter; import util.StringProcessor; import Translator.*; import StateMachine.*; Loading @@ -36,6 +37,7 @@ public class Corrector implements GUIListener { this.stringWriterGUI = StringFileWriter.of("corrected.txt"); this.senteceIndGUI = 0; this.curSentenceGUI = extractedSentencesGUI.get(0); this.curSentenceGUI = StringProcessor.handleApostrophe(this.curSentenceGUI.toLowerCase()); String tempString = dbInterfaceGUI.correctTokenInDatabase(this.curSentenceGUI.toLowerCase(), graphGUI, 1, false); SelectCorrectionGUI gui = new SelectCorrectionGUI(this, this.curSentenceGUI); } Loading @@ -59,6 +61,7 @@ public class Corrector implements GUIListener { this.curSentenceGUI = tempString; String tempSentenceGUI = dbInterfaceGUI.correctTokenInDatabase(this.curSentenceGUI.toLowerCase(), graphGUI, 1, false); } this.curSentenceGUI = StringProcessor.handleApostrophe(this.curSentenceGUI.toLowerCase()); return this.curSentenceGUI; } Loading @@ -80,6 +83,7 @@ public class Corrector implements GUIListener { } this.curSentenceGUI = extractedSentencesGUI.get(senteceIndGUI); this.curSentenceGUI = StringProcessor.handleApostrophe(this.curSentenceGUI.toLowerCase()); String tempSentenceGUI = dbInterfaceGUI.correctTokenInDatabase(this.curSentenceGUI.toLowerCase(), graphGUI, 1, false); return this.curSentenceGUI; Loading Loading @@ -112,6 +116,7 @@ public class Corrector implements GUIListener { List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase()); stringWriter.appendString(tempString); System.out.println("##########################################################"); Loading @@ -119,7 +124,7 @@ public class Corrector implements GUIListener { }else{ System.out.println("Sentence: " + argPars.getSentence()); String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase()); String tempString = directTranslator.replaceWordsInSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase())); stringWriter.appendString(tempString); System.out.println("Translation: "+tempString); System.out.println("##########################################################"); Loading @@ -138,6 +143,7 @@ public class Corrector implements GUIListener { List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase()); stringWriter.appendString(tempString); System.out.println("##########################################################"); Loading @@ -145,7 +151,7 @@ public class Corrector implements GUIListener { }else{ System.out.println("Sentence: " + argPars.getSentence()); String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase()); String tempString = directTranslator.replaceWordsInSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase())); stringWriter.appendString(tempString); System.out.println("Translation: "+tempString); System.out.println("##########################################################"); Loading @@ -166,6 +172,7 @@ public class Corrector implements GUIListener { List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); String tempString = dbInterface.correctTokenInDatabase(sentence.toLowerCase(), graph, 2, true); stringWriter.appendString(tempString); Loading @@ -181,11 +188,11 @@ public class Corrector implements GUIListener { } }else if(argPars.isCheckSentence()){ if(argPars.isCorrectionGUI()){ Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getSentence()), argPars); Corrector corrector = new Corrector(SentenceExtractor.of(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase())), argPars); corrector.start(); }else{ System.out.println("Sentence: " + argPars.getSentence()); stringWriter.appendString(dbInterface.correctTokenInDatabase(argPars.getSentence().toLowerCase(), graph, 2, true)); stringWriter.appendString(dbInterface.correctTokenInDatabase(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()), graph, 2, true)); try { stringWriter.writeToFile(); System.out.println("Corrected version has been written to the file."); Loading CheckerCorrector/util/StringProcessor.java +52 −0 Original line number Diff line number Diff line Loading @@ -19,4 +19,56 @@ public class StringProcessor { return ""; } } public static String handleApostrophe(String text) { String[][] contractions = { {"won't", "will not"}, {"can't", "cannot"}, {"isn't", "is not"}, {"aren't", "are not"}, {"wasn't", "was not"}, {"weren't", "were not"}, {"haven't", "have not"}, {"hasn't", "has not"}, {"hadn't", "had not"}, {"doesn't", "does not"}, {"don't", "do not"}, {"didn't", "did not"}, {"shouldn't", "should not"}, {"couldn't", "could not"}, {"mustn't", "must not"}, {"mightn't", "might not"}, {"wouldn't", "would not"}, {"it's", "it is"}, {"he's", "he is"}, {"she's", "she is"}, {"that's", "that is"}, {"who's", "who is"}, {"what's", "what is"}, {"there's", "there is"}, {"here's", "here is"}, {"let's", "let us"}, {"they're", "they are"}, {"we're", "we are"}, {"you're", "you are"} }; for (String[] contraction : contractions) { text = text.replaceAll("\\b" + contraction[0] + "\\b", contraction[1]); } String regex = "(\\w+)'s\\s+(\\w+)"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); StringBuilder result = new StringBuilder(); int lastEnd = 0; while (matcher.find()) { result.append(text, lastEnd, matcher.start()); result.append(matcher.group(2)).append(" of ").append(matcher.group(1)); lastEnd = matcher.end(); } result.append(text.substring(lastEnd)); text = result.toString(); text = text.replaceAll("[\\'’]", ""); return text; } } Loading
CheckerCorrector/Checker.java +8 −6 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ public class Checker { for (String sentence : extractedSentences) { i++; //dbInterface.updateTokenInDatabase(sentence.toLowerCase(), graph); sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence, 3, 5); List<String> phrases = extractorPhrase.getPhrases(); for (String phrase : phrases) { Loading @@ -71,7 +72,7 @@ public class Checker { System.out.println("\n-------------------------------------------\n"+ "Number of update: "+ cntUpdate); }else if(argPars.isCheckSentence()){ //dbInterface.updateTokenInDatabase(argPars.getSentence().toLowerCase(), graph); for (String phrase : PhraseExtractor.fromSentence(argPars.getSentence(),3, 5).getPhrases()) { for (String phrase : PhraseExtractor.fromSentence(StringProcessor.handleApostrophe(argPars.getSentence()),3, 5).getPhrases()) { dbInterface.updateTokenInDatabase(phrase.toLowerCase(), graph); } } Loading @@ -93,6 +94,7 @@ public class Checker { manager = new HashTableMaker("SQLite/hash_database_english.db"); } for (String sentence : extractedSentences) { sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); manager.updateDatabase(sentence.toLowerCase()); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence, 1, 4); List<String> phrases = extractorPhrase.getPhrases(); Loading @@ -107,8 +109,8 @@ public class Checker { }else if(argPars.isCheckSentence()){ try { 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(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase())); for (String phrase : PhraseExtractor.fromSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()),1, 4).getPhrases()) { manager.updateDatabase(phrase.toLowerCase()); } manager.closeConnection(); Loading @@ -123,7 +125,7 @@ public class Checker { HashTableMaker manager = new HashTableMaker("SQLite/hash_database_english.db"); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); System.out.println("*********************************************************"); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence); List<String> phrases = extractorPhrase.getPhrases(); Loading Loading @@ -151,9 +153,9 @@ public class Checker { }else if(argPars.isCheckSentence()){ System.out.println("Sentence: " + argPars.getSentence()); jsonMaker.addSentence(argPars.getSentence().toLowerCase(), dbInterface.checkTokenInDatabase(argPars.getSentence().toLowerCase(), graph)); jsonMaker.addSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()), dbInterface.checkTokenInDatabase(argPars.getSentence().toLowerCase(), graph)); System.out.println("*********************************************************"); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(argPars.getSentence().toLowerCase()); PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase())); List<String> phrases = extractorPhrase.getPhrases(); for (String phrase : phrases) { System.out.println("Phrase: " + phrase); Loading
CheckerCorrector/Corrector.java +11 −4 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import util.JsonMaker; import util.PhraseExtractor; import util.SentenceExtractor; import util.StringFileWriter; import util.StringProcessor; import Translator.*; import StateMachine.*; Loading @@ -36,6 +37,7 @@ public class Corrector implements GUIListener { this.stringWriterGUI = StringFileWriter.of("corrected.txt"); this.senteceIndGUI = 0; this.curSentenceGUI = extractedSentencesGUI.get(0); this.curSentenceGUI = StringProcessor.handleApostrophe(this.curSentenceGUI.toLowerCase()); String tempString = dbInterfaceGUI.correctTokenInDatabase(this.curSentenceGUI.toLowerCase(), graphGUI, 1, false); SelectCorrectionGUI gui = new SelectCorrectionGUI(this, this.curSentenceGUI); } Loading @@ -59,6 +61,7 @@ public class Corrector implements GUIListener { this.curSentenceGUI = tempString; String tempSentenceGUI = dbInterfaceGUI.correctTokenInDatabase(this.curSentenceGUI.toLowerCase(), graphGUI, 1, false); } this.curSentenceGUI = StringProcessor.handleApostrophe(this.curSentenceGUI.toLowerCase()); return this.curSentenceGUI; } Loading @@ -80,6 +83,7 @@ public class Corrector implements GUIListener { } this.curSentenceGUI = extractedSentencesGUI.get(senteceIndGUI); this.curSentenceGUI = StringProcessor.handleApostrophe(this.curSentenceGUI.toLowerCase()); String tempSentenceGUI = dbInterfaceGUI.correctTokenInDatabase(this.curSentenceGUI.toLowerCase(), graphGUI, 1, false); return this.curSentenceGUI; Loading Loading @@ -112,6 +116,7 @@ public class Corrector implements GUIListener { List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase()); stringWriter.appendString(tempString); System.out.println("##########################################################"); Loading @@ -119,7 +124,7 @@ public class Corrector implements GUIListener { }else{ System.out.println("Sentence: " + argPars.getSentence()); String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase()); String tempString = directTranslator.replaceWordsInSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase())); stringWriter.appendString(tempString); System.out.println("Translation: "+tempString); System.out.println("##########################################################"); Loading @@ -138,6 +143,7 @@ public class Corrector implements GUIListener { List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase()); stringWriter.appendString(tempString); System.out.println("##########################################################"); Loading @@ -145,7 +151,7 @@ public class Corrector implements GUIListener { }else{ System.out.println("Sentence: " + argPars.getSentence()); String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase()); String tempString = directTranslator.replaceWordsInSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase())); stringWriter.appendString(tempString); System.out.println("Translation: "+tempString); System.out.println("##########################################################"); Loading @@ -166,6 +172,7 @@ public class Corrector implements GUIListener { List<String> extractedSentences = extractor.getSentences(); for (String sentence : extractedSentences) { System.out.println("Sentence: " + sentence); sentence = StringProcessor.handleApostrophe(sentence.toLowerCase()); String tempString = dbInterface.correctTokenInDatabase(sentence.toLowerCase(), graph, 2, true); stringWriter.appendString(tempString); Loading @@ -181,11 +188,11 @@ public class Corrector implements GUIListener { } }else if(argPars.isCheckSentence()){ if(argPars.isCorrectionGUI()){ Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getSentence()), argPars); Corrector corrector = new Corrector(SentenceExtractor.of(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase())), argPars); corrector.start(); }else{ System.out.println("Sentence: " + argPars.getSentence()); stringWriter.appendString(dbInterface.correctTokenInDatabase(argPars.getSentence().toLowerCase(), graph, 2, true)); stringWriter.appendString(dbInterface.correctTokenInDatabase(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()), graph, 2, true)); try { stringWriter.writeToFile(); System.out.println("Corrected version has been written to the file."); Loading
CheckerCorrector/util/StringProcessor.java +52 −0 Original line number Diff line number Diff line Loading @@ -19,4 +19,56 @@ public class StringProcessor { return ""; } } public static String handleApostrophe(String text) { String[][] contractions = { {"won't", "will not"}, {"can't", "cannot"}, {"isn't", "is not"}, {"aren't", "are not"}, {"wasn't", "was not"}, {"weren't", "were not"}, {"haven't", "have not"}, {"hasn't", "has not"}, {"hadn't", "had not"}, {"doesn't", "does not"}, {"don't", "do not"}, {"didn't", "did not"}, {"shouldn't", "should not"}, {"couldn't", "could not"}, {"mustn't", "must not"}, {"mightn't", "might not"}, {"wouldn't", "would not"}, {"it's", "it is"}, {"he's", "he is"}, {"she's", "she is"}, {"that's", "that is"}, {"who's", "who is"}, {"what's", "what is"}, {"there's", "there is"}, {"here's", "here is"}, {"let's", "let us"}, {"they're", "they are"}, {"we're", "we are"}, {"you're", "you are"} }; for (String[] contraction : contractions) { text = text.replaceAll("\\b" + contraction[0] + "\\b", contraction[1]); } String regex = "(\\w+)'s\\s+(\\w+)"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); StringBuilder result = new StringBuilder(); int lastEnd = 0; while (matcher.find()) { result.append(text, lastEnd, matcher.start()); result.append(matcher.group(2)).append(" of ").append(matcher.group(1)); lastEnd = matcher.end(); } result.append(text.substring(lastEnd)); text = result.toString(); text = text.replaceAll("[\\'’]", ""); return text; } }