Commit 0d9da3a4 authored by Seyed Reza  Sajjadinasab's avatar Seyed Reza Sajjadinasab
Browse files

addJsonMaker

parent 05476f10
Loading
Loading
Loading
Loading
+27 −3
Original line number Diff line number Diff line
@@ -15,18 +15,42 @@ public class Checker {
        BasicGraph basicGraphClass = new BasicGraph();
        DBinterface dbInterface = new DBinterface();
        DirectedGraph<State> graph = basicGraphClass.getGraph();
        JsonMaker jsonMaker = JsonMaker.create();

        if(argPars.isCheckFile()){
            SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName());
            List<String> extractedSentences = extractor.getSentences();  
            
            
            for (String sentence : extractedSentences) {
                dbInterface.checkTokenInDatabase(sentence, graph);
                System.out.println("Sentence: " + sentence);
                jsonMaker.addSentence(sentence, dbInterface.checkTokenInDatabase(sentence, graph));
                System.out.println("*********************************************************");
                PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence);
                List<String> phrases = extractorPhrase.getPhrases();
                for (String phrase : phrases) {
                    System.out.println("Phrase: "+ phrase);
                    jsonMaker.addPhrase(phrase, dbInterface.checkTokenInDatabase(phrase, graph));
                    System.out.println("------------------------------------------------------------");
                }
                jsonMaker.toJson("data.json");
                System.out.println("##########################################################");
                
            }
        }else if(argPars.isCheckSentence()){


            dbInterface.checkTokenInDatabase(argPars.getSentence(), graph);
            System.out.println("Sentence: " + argPars.getSentence());
            jsonMaker.addSentence(argPars.getSentence(), dbInterface.checkTokenInDatabase(argPars.getSentence(), graph));
            System.out.println("*********************************************************");
            PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(argPars.getSentence());
            List<String> phrases = extractorPhrase.getPhrases();
            for (String phrase : phrases) {
                System.out.println("Phrase: " + phrase);
                jsonMaker.addPhrase(phrase, dbInterface.checkTokenInDatabase(phrase, graph));
                System.out.println("------------------------------------------------------------");
            }
            jsonMaker.toJson("data.json");
            System.out.println("##########################################################");
        }
          
    }
+3 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ import StateMachine.*;
import TypoCorrector.TypoCorrector;

public class DBinterface {
    public void checkTokenInDatabase(String sentence, DirectedGraph<State> graph){
    public int checkTokenInDatabase(String sentence, DirectedGraph<State> graph){
        StateMachine SM = new StateMachine();
        sentence = sentence.replaceAll("\\p{Punct}", " $0");
        String[] tokens = sentence.split("\\s+");
@@ -68,8 +68,10 @@ public class DBinterface {

            int confidence = SM.isStateMachineFollowed(graph, actions, initialState, initialConf);
            System.out.print("The confidence score is: "+ confidence + "\n");
            return confidence;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return 0;
    }
}

checker.jar

deleted100644 → 0
−13.5 MiB

File deleted.

util/JsonMaker.java

0 → 100644
+70 −0
Original line number Diff line number Diff line
package util;

import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class JsonMaker {
    private Map<String, Integer> sentences;
    private Map<String, Integer> phrases;

    private JsonMaker() {
        sentences = new HashMap<>();
        phrases = new HashMap<>();
    }

    public void addSentence(String sentence, int value) {
        sentences.put(sentence, value);
    }

    public void addPhrase(String phrase, int value) {
        phrases.put(phrase, value);
    }

    public void toJson(String fileName) {
        StringBuilder jsonBuilder = new StringBuilder();
        jsonBuilder.append("{\n  \"sentences\": {\n");
        appendMapToJson(sentences, jsonBuilder);
        jsonBuilder.append("  },\n  \"phrases\": {\n");
        appendMapToJson(phrases, jsonBuilder);
        jsonBuilder.append("  }\n}");

        String jsonString = jsonBuilder.toString();

        // Write JSON string to file
        try (FileWriter writer = new FileWriter(fileName)) {
            writer.write(jsonString);
            System.out.println("JSON file created successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void appendMapToJson(Map<String, Integer> map, StringBuilder jsonBuilder) {
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            jsonBuilder.append("    \"").append(entry.getKey()).append("\": ").append(entry.getValue()).append(",\n");
        }
        // Remove the last comma and newline character
        if (!map.isEmpty()) {
            jsonBuilder.delete(jsonBuilder.length() - 2, jsonBuilder.length());
        }
        jsonBuilder.append('\n');
    }

    public static JsonMaker create() {
        return new JsonMaker();
    }

    public static void main(String[] args) {
        JsonMaker jsonMaker = JsonMaker.create();
        jsonMaker.addSentence("This is strange so choice", 55);
        jsonMaker.addPhrase("strange so choice", 70);
        jsonMaker.addPhrase("so choice word", 80);
        jsonMaker.addPhrase("This is", 0);
        jsonMaker.addPhrase("This is strange", 0);
        jsonMaker.addPhrase("strange so", 10);

        jsonMaker.toJson("data.json");
    }
}
+38 −0
Original line number Diff line number Diff line
package util;
import java.util.ArrayList;
import java.util.List;

public class PhraseExtractor {
    private List<String> phrases;

    private PhraseExtractor(List<String> phrases) {
        this.phrases = phrases;
    }

    public static PhraseExtractor fromSentence(String sentence) {
        List<String> phrases = extractPhrases(sentence);
        return new PhraseExtractor(phrases);
    }

    private static List<String> extractPhrases(String sentence) {
        List<String> phrases = new ArrayList<>();
        String[] words = sentence.split("\\s+");
        for (int i = 0; i < words.length; i++) {
            for (int j = i + 1; j <= 4; j++){//words.length; j++) {
                StringBuilder phraseBuilder = new StringBuilder();
                for (int k = i; k < j; k++) {
                    phraseBuilder.append(words[k]);
                    if (k < j - 1) {
                        phraseBuilder.append(" ");
                    }
                }
                phrases.add(phraseBuilder.toString());
            }
        }
        return phrases;
    }

    public List<String> getPhrases() {
        return phrases;
    }
}