Loading src/main/java/edu/bu/LanguageCorrection/MainApp.java +17 −42 Original line number Diff line number Diff line Loading @@ -9,9 +9,17 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.util.Map; import java.util.function.Consumer; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import javax.swing.text.*; import scala.collection.mutable.StringBuilder; import java.awt.Color; import java.awt.BorderLayout; import java.util.zip.Deflater; Loading Loading @@ -259,42 +267,6 @@ public class MainApp extends JFrame { } } private void printSentencesInOrderOfChanges(String[] sentences, String originalSentence, StringBuilder result) { // Order the sentences by the number of changes needed Map<String, Integer> changesMap = new HashMap<>(); for (String sentence : sentences) { if (sentence == null || sentence.isEmpty()) continue; // Skip empty sentences (not in the 0.5 percentile of the best sentence) String sentencePart = sentence.split(" | Score: ")[0]; // Remove score (if present int changes = 0; if (sentencePart.length() != originalSentence.length()) { changes = Math.abs(sentencePart.split(" ").length - originalSentence.split(" ").length) + 1; } else { String[] originalWords = originalSentence.split(" "); String[] correctedWords = sentencePart.split(" "); for (int i = 0; i < originalWords.length; i++) { if (!originalWords[i].equals(correctedWords[i])) { changes++; } } } changesMap.put(sentence, changes); } List<Map.Entry<String, Integer>> sortedList = new ArrayList<>(changesMap.entrySet()); sortedList.sort(Map.Entry.comparingByValue()); int i = 1; for (Map.Entry<String, Integer> entry : sortedList) { result.append(">> " + entry.getKey() + " | Changes: " + entry.getValue() + "\n"); i++; } } private void runCorrector(String input, boolean isFile) { try { String content; Loading @@ -303,28 +275,31 @@ public class MainApp extends JFrame { else content = input; Corrector corrector = new Corrector(languageFile); Consumer<String> outputCallback = output -> { resultArea.append(output); resultArea.setCaretPosition(resultArea.getDocument().getLength()); }; corrector.setCallback(outputCallback); String[] sentences = TextProcessor.extractSentences(content).toArray(new String[0]); progressBar.setValue(0); progressBar.setStringPainted(true); progressBar.setString(null); progressBar.setMaximum(sentences.length*2); StringBuilder result = new StringBuilder(); for (String sentence : sentences) { progressBar.setValue(progressBar.getValue() + 1); sentence = sentence.replaceAll("[^a-zA-Z0-9\\s]", ""); String[] corrected = corrector.correct(sentence); progressBar.setValue(progressBar.getValue() + 2); if (corrected.length == 0) { result.append(sentence + " | No corrections found for this sentence.\n\n"); outputCallback.accept(sentence + " | No corrections found for this sentence.\n\n"); continue; } result.append(sentence + " | Corrected Sentence Suggestions:\n"); printSentencesInOrderOfChanges(corrected, sentence, result); result.append("\n"); outputCallback.accept(sentence + " | Corrected Sentence Suggestions:\n"); corrector.printSentencesInOrderOfChanges(corrected, sentence); } resultArea.setText(result.toString()); // resultArea.setText(result.toString()); // ISSUE #30 - Feedback for corrector // Add a pop up to input the best correction for each sentence TrieNode node = corrector.getDetector(); Loading Loading
src/main/java/edu/bu/LanguageCorrection/MainApp.java +17 −42 Original line number Diff line number Diff line Loading @@ -9,9 +9,17 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.util.Map; import java.util.function.Consumer; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import javax.swing.text.*; import scala.collection.mutable.StringBuilder; import java.awt.Color; import java.awt.BorderLayout; import java.util.zip.Deflater; Loading Loading @@ -259,42 +267,6 @@ public class MainApp extends JFrame { } } private void printSentencesInOrderOfChanges(String[] sentences, String originalSentence, StringBuilder result) { // Order the sentences by the number of changes needed Map<String, Integer> changesMap = new HashMap<>(); for (String sentence : sentences) { if (sentence == null || sentence.isEmpty()) continue; // Skip empty sentences (not in the 0.5 percentile of the best sentence) String sentencePart = sentence.split(" | Score: ")[0]; // Remove score (if present int changes = 0; if (sentencePart.length() != originalSentence.length()) { changes = Math.abs(sentencePart.split(" ").length - originalSentence.split(" ").length) + 1; } else { String[] originalWords = originalSentence.split(" "); String[] correctedWords = sentencePart.split(" "); for (int i = 0; i < originalWords.length; i++) { if (!originalWords[i].equals(correctedWords[i])) { changes++; } } } changesMap.put(sentence, changes); } List<Map.Entry<String, Integer>> sortedList = new ArrayList<>(changesMap.entrySet()); sortedList.sort(Map.Entry.comparingByValue()); int i = 1; for (Map.Entry<String, Integer> entry : sortedList) { result.append(">> " + entry.getKey() + " | Changes: " + entry.getValue() + "\n"); i++; } } private void runCorrector(String input, boolean isFile) { try { String content; Loading @@ -303,28 +275,31 @@ public class MainApp extends JFrame { else content = input; Corrector corrector = new Corrector(languageFile); Consumer<String> outputCallback = output -> { resultArea.append(output); resultArea.setCaretPosition(resultArea.getDocument().getLength()); }; corrector.setCallback(outputCallback); String[] sentences = TextProcessor.extractSentences(content).toArray(new String[0]); progressBar.setValue(0); progressBar.setStringPainted(true); progressBar.setString(null); progressBar.setMaximum(sentences.length*2); StringBuilder result = new StringBuilder(); for (String sentence : sentences) { progressBar.setValue(progressBar.getValue() + 1); sentence = sentence.replaceAll("[^a-zA-Z0-9\\s]", ""); String[] corrected = corrector.correct(sentence); progressBar.setValue(progressBar.getValue() + 2); if (corrected.length == 0) { result.append(sentence + " | No corrections found for this sentence.\n\n"); outputCallback.accept(sentence + " | No corrections found for this sentence.\n\n"); continue; } result.append(sentence + " | Corrected Sentence Suggestions:\n"); printSentencesInOrderOfChanges(corrected, sentence, result); result.append("\n"); outputCallback.accept(sentence + " | Corrected Sentence Suggestions:\n"); corrector.printSentencesInOrderOfChanges(corrected, sentence); } resultArea.setText(result.toString()); // resultArea.setText(result.toString()); // ISSUE #30 - Feedback for corrector // Add a pop up to input the best correction for each sentence TrieNode node = corrector.getDetector(); Loading