Loading src/main/java/edu/bu/LanguageCorrection/Corrector.java +8 −6 Original line number Diff line number Diff line Loading @@ -93,11 +93,11 @@ public class Corrector { // Convert to array of just sentences String[] topSentences = new String[topPairs.length]; for (int i = 0; i < topPairs.length; i++) { // Remove sentence that are not in the 0.1 percentile of the best sentence // Remove sentence that are not in the 0.5 percentile of the best sentence if (topPairs[i].score > topPairs[0].score * 1.5) { topSentences[i] = ""; } else { topSentences[i] = topPairs[i].sentence; topSentences[i] = topPairs[i].sentence + " | Score: " + topPairs[i].score; } } Loading Loading @@ -150,14 +150,16 @@ public class Corrector { for (String sentence : sentences) { if (sentence == null || sentence.isEmpty()) continue; // Skip empty sentences (not in the 0.1 percentile of the best sentence) 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 (sentence.length() != originalSentence.length()) { changes = Math.abs(sentence.split(" ").length - originalSentence.split(" ").length) + 1; if (sentencePart.length() != originalSentence.length()) { changes = Math.abs(sentencePart.split(" ").length - originalSentence.split(" ").length) + 1; } else { String[] originalWords = originalSentence.split(" "); String[] correctedWords = sentence.split(" "); String[] correctedWords = sentencePart.split(" "); for (int i = 0; i < originalWords.length; i++) { if (!originalWords[i].equals(correctedWords[i])) { changes++; Loading src/main/java/edu/bu/LanguageCorrection/MainApp.java +49 −2 Original line number Diff line number Diff line Loading @@ -15,12 +15,16 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.util.Map; import java.util.ArrayList; import java.util.HashMap; import javax.swing.*; import javax.swing.text.*; import java.awt.Color; import java.awt.BorderLayout; import java.awt.event.ActionEvent; public class MainApp extends JFrame { private final JTextField urlField; private JTextArea resultArea; Loading Loading @@ -216,6 +220,40 @@ 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()); for (Map.Entry<String, Integer> entry : sortedList) { result.append(" " + entry.getKey() + " | Changes: " + entry.getValue() + "\n"); } } private void runCorrector(String input, boolean isFile) { try { String content; Loading @@ -224,8 +262,17 @@ public class MainApp extends JFrame { else content = input; Corrector corrector = new Corrector(); String corrected = corrector.correct(content); resultArea.setText("Corrected Text:\n" + corrected); String[] sentences = TextProcessor.extractSentences(content).toArray(new String[0]); StringBuilder result = new StringBuilder(); for (String sentence : sentences) { sentence = sentence.replaceAll("[^a-zA-Z0-9\\s]", ""); String[] corrected = corrector.correct(sentence); result.append(sentence + " | Corrected Sentence Suggestions:\n"); printSentencesInOrderOfChanges(corrected, sentence, result); } resultArea.setText(result.toString()); } catch (Exception e) { resultArea.setText("Error: " + e.getMessage()); } Loading Loading
src/main/java/edu/bu/LanguageCorrection/Corrector.java +8 −6 Original line number Diff line number Diff line Loading @@ -93,11 +93,11 @@ public class Corrector { // Convert to array of just sentences String[] topSentences = new String[topPairs.length]; for (int i = 0; i < topPairs.length; i++) { // Remove sentence that are not in the 0.1 percentile of the best sentence // Remove sentence that are not in the 0.5 percentile of the best sentence if (topPairs[i].score > topPairs[0].score * 1.5) { topSentences[i] = ""; } else { topSentences[i] = topPairs[i].sentence; topSentences[i] = topPairs[i].sentence + " | Score: " + topPairs[i].score; } } Loading Loading @@ -150,14 +150,16 @@ public class Corrector { for (String sentence : sentences) { if (sentence == null || sentence.isEmpty()) continue; // Skip empty sentences (not in the 0.1 percentile of the best sentence) 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 (sentence.length() != originalSentence.length()) { changes = Math.abs(sentence.split(" ").length - originalSentence.split(" ").length) + 1; if (sentencePart.length() != originalSentence.length()) { changes = Math.abs(sentencePart.split(" ").length - originalSentence.split(" ").length) + 1; } else { String[] originalWords = originalSentence.split(" "); String[] correctedWords = sentence.split(" "); String[] correctedWords = sentencePart.split(" "); for (int i = 0; i < originalWords.length; i++) { if (!originalWords[i].equals(correctedWords[i])) { changes++; Loading
src/main/java/edu/bu/LanguageCorrection/MainApp.java +49 −2 Original line number Diff line number Diff line Loading @@ -15,12 +15,16 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.util.Map; import java.util.ArrayList; import java.util.HashMap; import javax.swing.*; import javax.swing.text.*; import java.awt.Color; import java.awt.BorderLayout; import java.awt.event.ActionEvent; public class MainApp extends JFrame { private final JTextField urlField; private JTextArea resultArea; Loading Loading @@ -216,6 +220,40 @@ 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()); for (Map.Entry<String, Integer> entry : sortedList) { result.append(" " + entry.getKey() + " | Changes: " + entry.getValue() + "\n"); } } private void runCorrector(String input, boolean isFile) { try { String content; Loading @@ -224,8 +262,17 @@ public class MainApp extends JFrame { else content = input; Corrector corrector = new Corrector(); String corrected = corrector.correct(content); resultArea.setText("Corrected Text:\n" + corrected); String[] sentences = TextProcessor.extractSentences(content).toArray(new String[0]); StringBuilder result = new StringBuilder(); for (String sentence : sentences) { sentence = sentence.replaceAll("[^a-zA-Z0-9\\s]", ""); String[] corrected = corrector.correct(sentence); result.append(sentence + " | Corrected Sentence Suggestions:\n"); printSentencesInOrderOfChanges(corrected, sentence, result); } resultArea.setText(result.toString()); } catch (Exception e) { resultArea.setText("Error: " + e.getMessage()); } Loading