Commit 70dcb0e4 authored by Manuel  Segimon's avatar Manuel Segimon
Browse files

Refactor Corrector class to remove unused imports and improve code readability

parent ea3664f3
Loading
Loading
Loading
Loading
+41 −4
Original line number Diff line number Diff line
@@ -7,9 +7,11 @@ import java.util.zip.Inflater;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import java.util.PriorityQueue;
import java.util.Collections;
import java.util.HashMap;


public class Corrector {
@@ -91,8 +93,13 @@ 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
            if (topPairs[i].score > topPairs[0].score * 1.5) {
                topSentences[i] = "";
            } else {
                topSentences[i] = topPairs[i].sentence;
            }
        }

        return topSentences;
    }
@@ -137,6 +144,38 @@ public class Corrector {
        }
    }

    private static void printSentencesInOrderOfChanges(String[] sentences, String originalSentence) {
        // 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.1 percentile of the best sentence)

            int changes = 0;
            if (sentence.length() != originalSentence.length()) {
                changes = Math.abs(sentence.split(" ").length - originalSentence.split(" ").length) + 1;
            } else {
                String[] originalWords = originalSentence.split(" ");
                String[] correctedWords = sentence.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) {
            System.out.println("    " + entry.getKey() + " | Changes: " + entry.getValue());
        }
    }

    public static void main(String[] args) {
        if (args.length > 1 && "--file".equals(args[0])) {
            String path = args[1];
@@ -148,9 +187,7 @@ public class Corrector {
                    sentence = sentence.replaceAll("[^a-zA-Z0-9\\s]", "");
                    String[] corrected = corrector.correct(sentence);
                    System.out.println(sentence + " | Corrected Sentence Suggestions:");
                    for (String correctedSentence : corrected) {
                        System.out.println("    " + correctedSentence);
                    }
                    printSentencesInOrderOfChanges(corrected, sentence);
                }
            } catch (IOException e) {
                System.err.println("Error reading file: " + e.getMessage());