Commit e99db3d6 authored by Seyed Reza  Sajjadinasab's avatar Seyed Reza Sajjadinasab
Browse files

AddDutch

parent a6fcfcbe
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -20,7 +20,12 @@ public class Checker {
        
        ArgumentParser argPars = ArgumentParser.of(args);
        BasicGraph basicGraphClass = new BasicGraph();
        DBinterface dbInterface = new DBinterface();
        DBinterface dbInterface;
        if(!argPars.isDutch()){
            dbInterface = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt");
        }else{
            dbInterface = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt");
        }
        DirectedGraph<State> graph = basicGraphClass.getGraph();
        JsonMaker jsonMaker = JsonMaker.create();

@@ -29,7 +34,8 @@ public class Checker {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    String dbName = "SQLite/newdatabase.db";

                    String dbName = "SQLite/token_database_english_updated.db";
                    if(argPars.isCheckFile()){
                        dbName = argPars.getFileName();
                    }
@@ -61,14 +67,19 @@ public class Checker {
                    dbInterface.updateTokenInDatabase(phrase.toLowerCase(), graph);                    
                }
            }
            dbInterface.updateDatabase();
            if(argPars.isDutch()){
                dbInterface.updateDatabase("SQLite/token_database_dutch_updated.db");
            }else{
                dbInterface.updateDatabase("SQLite/token_database_english_updated.db");
            }
        }else if(argPars.isUpdateHashTable()){
            if(argPars.isCheckFile()){
                SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName());
                List<String> extractedSentences = extractor.getSentences();  
                
                try {
                    HashTableMaker manager = new HashTableMaker();
                    
                    HashTableMaker manager = new HashTableMaker("SQLite/hash_database_english.db");
                    for (String sentence : extractedSentences) {
                        manager.updateDatabase(sentence.toLowerCase());
                        PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence, 1, 4);
@@ -83,7 +94,7 @@ public class Checker {
                }
            }else if(argPars.isCheckSentence()){
                try {
                    HashTableMaker manager = new HashTableMaker();
                    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(phrase.toLowerCase());                      
@@ -97,7 +108,7 @@ public class Checker {
            SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName());
            List<String> extractedSentences = extractor.getSentences();  
            try {
                HashTableMaker manager = new HashTableMaker();
                HashTableMaker manager = new HashTableMaker("SQLite/hash_database_english.db");
                for (String sentence : extractedSentences) {
                    System.out.println("Sentence: " + sentence);
                    
@@ -143,7 +154,7 @@ public class Checker {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new HighlighterGUI();
                    new HighlighterGUI(argPars.isDutch());
                }
            });
        }
+73 −33
Original line number Diff line number Diff line
@@ -12,11 +12,12 @@ import util.JsonMaker;
import util.PhraseExtractor;
import util.SentenceExtractor;
import util.StringFileWriter;
import Translator.DirectTranslator;
import Translator.*;
import StateMachine.*;


public class Corrector implements GUIListener {
    ArgumentParser argParsGUI;
    SentenceExtractor extractorGUI;
    private String curSentenceGUI;
    private DBinterface dbInterfaceGUI;
@@ -26,7 +27,11 @@ public class Corrector implements GUIListener {
    private int senteceIndGUI;
    public void start() {
        
        this.dbInterfaceGUI = new DBinterface();
        if(!this.argParsGUI.isDutch()){
            this.dbInterfaceGUI = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt");
        }else{
            this.dbInterfaceGUI = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt");
        }
        this.graphGUI = new BasicGraph().getGraph();
        this.stringWriterGUI = StringFileWriter.of("corrected.txt");
        this.senteceIndGUI = 0;
@@ -79,7 +84,8 @@ public class Corrector implements GUIListener {
        return this.curSentenceGUI;

    }
    Corrector(SentenceExtractor extractor){
    Corrector(SentenceExtractor extractor, ArgumentParser argumentParser){
        this.argParsGUI = argumentParser;
        this.extractedSentencesGUI = extractor.getSentences();
    }
    public static void main(String[] args) {
@@ -87,27 +93,36 @@ public class Corrector implements GUIListener {
        
        ArgumentParser argPars = ArgumentParser.of(args);
        BasicGraph basicGraphClass = new BasicGraph();
        DBinterface dbInterface = new DBinterface();
        DBinterface dbInterface;
        if(!argPars.isDutch()){
            dbInterface = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt");
        }else{
            dbInterface = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt");
        }
        DirectedGraph graph = basicGraphClass.getGraph();
        StringFileWriter stringWriter = StringFileWriter.of("corrected.txt");
        StringFileWriter.deleteFile("correction_details.txt");
            
        
        StringFileWriter.deleteFile("correction_details.txt");
        if(argPars.isTranslateToDutch()){
            DirectTranslatorEnglishToDutch directTranslator = DirectTranslatorEnglishToDutch.make();
            directTranslator.loadWordMapFromFile("SQLite/DutchTranslation.txt");
            if(argPars.isCheckFile()){
            if(argPars.isCorrectionGUI()){    
                    Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getFileName()));
                    corrector.start();
            }else{
                SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName());
                List<String> extractedSentences = extractor.getSentences();
                for (String sentence : extractedSentences) {
                    System.out.println("Sentence: " + sentence);
                    String tempString = dbInterface.correctTokenInDatabase(sentence.toLowerCase(), graph, 2, true);
                    String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase());
                    stringWriter.appendString(tempString);

                    
                    System.out.println("##########################################################");
                }
            }else{
                
                System.out.println("Sentence: " + argPars.getSentence());
                String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase());
                stringWriter.appendString(tempString);
                System.out.println("Translation: "+tempString);
                System.out.println("##########################################################");
            }
            try {
                stringWriter.writeToFile();
@@ -115,45 +130,70 @@ public class Corrector implements GUIListener {
            } catch (IOException e) {
                System.err.println("An error occurred while writing to the file: " + e.getMessage());
            }
        }else if(argPars.isCheckSentence()){
            if(argPars.isCorrectionGUI()){  
                Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getSentence()));  
                corrector.start();
        }else if(argPars.isTranslateToEnglish()){
            DirectTranslatorDutchToEnglish directTranslator = DirectTranslatorDutchToEnglish.make();
            directTranslator.loadWordMapFromFile("SQLite/DutchTranslation.txt");
            if(argPars.isCheckFile()){
                SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName());
                List<String> extractedSentences = extractor.getSentences();
                for (String sentence : extractedSentences) {
                    System.out.println("Sentence: " + sentence);
                    String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase());
                    stringWriter.appendString(tempString);
                    System.out.println("##########################################################");
                }
            }else{
                
                System.out.println("Sentence: " + argPars.getSentence());
                stringWriter.appendString(dbInterface.correctTokenInDatabase(argPars.getSentence().toLowerCase(), graph, 2, true));
                String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase());
                stringWriter.appendString(tempString);
                System.out.println("Translation: "+tempString);
                System.out.println("##########################################################");
            }
            try {
                stringWriter.writeToFile();
                System.out.println("Corrected version has been written to the file.");
            } catch (IOException e) {
                System.err.println("An error occurred while writing to the file: " + e.getMessage());
            }
                System.out.println("##########################################################");
            }
        }else if(argPars.isTranslateDutch()){
            DirectTranslator directTranslator = DirectTranslator.make();
            directTranslator.loadWordMapFromFile("SQLite/word_map.txt");
            if(argPars.isCheckFile()){
        }else if(argPars.isCheckFile()){
            if(argPars.isCorrectionGUI()){    
                    
                    Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getFileName()), argPars);
                    corrector.start();
            }else{
                SentenceExtractor extractor = SentenceExtractor.of(argPars.getFileName());
                List<String> extractedSentences = extractor.getSentences();
                for (String sentence : extractedSentences) {
                    System.out.println("Sentence: " + sentence);
                    String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase());
                    String tempString = dbInterface.correctTokenInDatabase(sentence.toLowerCase(), graph, 2, true);
                    stringWriter.appendString(tempString);

                    
                    System.out.println("##########################################################");
                }
            }
            try {
                stringWriter.writeToFile();
                System.out.println("Corrected version has been written to the file.");
            } catch (IOException e) {
                System.err.println("An error occurred while writing to the file: " + e.getMessage());
            }
        }else if(argPars.isCheckSentence()){
            if(argPars.isCorrectionGUI()){  
                Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getSentence()), argPars);  
                corrector.start();
            }else{
                
                System.out.println("Sentence: " + argPars.getSentence());
                stringWriter.appendString(directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase()));
                System.out.println("##########################################################");
            }
                stringWriter.appendString(dbInterface.correctTokenInDatabase(argPars.getSentence().toLowerCase(), graph, 2, true));
                try {
                    stringWriter.writeToFile();
                    System.out.println("Corrected version has been written to the file.");
                } catch (IOException e) {
                    System.err.println("An error occurred while writing to the file: " + e.getMessage());
                }
                System.out.println("##########################################################");
            }
        }
          
    }
+20 −13
Original line number Diff line number Diff line
@@ -18,15 +18,21 @@ import util.StringProcessor;
import GUI.SelectCorrectionHandler;

public class DBinterface {
    String url;
    String dicFileName;
    public DBinterface(String url, String dicFileName){
        this.url = "jdbc:sqlite:./"+url;
        this.dicFileName = dicFileName;
    }
    public int checkTokenInDatabase(String sentence, DirectedGraph<State> graph){
        StateMachine SM = new StateMachine();
        sentence = sentence.replaceAll("\\p{Punct}", " $0");
        String[] tokens = sentence.split("\\s+");
        String url = "jdbc:sqlite:./SQLite/mydatabase.db";
        String dicFileName = "./SQLite/smallDic.txt";
        TypoCorrector typoChecker =  TypoCorrector.of(dicFileName);
        //String url = "jdbc:sqlite:./SQLite/mydatabase.db";
        //String dicFileName = "./SQLite/smallDic.txt";
        TypoCorrector typoChecker =  TypoCorrector.of(this.dicFileName);
        int initialConf = 0;
        try (Connection connection = DriverManager.getConnection(url)) {
        try (Connection connection = DriverManager.getConnection(this.url)) {

            // Lookup each token in the database and categorize it
            for (int i = 0; i < tokens.length; i++) {
@@ -112,14 +118,14 @@ public class DBinterface {
        String[] tokens = sentence.split("\\s+");
        String[] tokensCopy = tokens.clone();
        List<String> tokenList = new ArrayList<>(Arrays.asList(tokensCopy));
        String url = "jdbc:sqlite:./SQLite/mydatabase.db";
        String dicFileName = "./SQLite/smallDic.txt";
        TypoCorrector typoChecker =  TypoCorrector.of(dicFileName);
        //String url = "jdbc:sqlite:./SQLite/mydatabase.db";
        //this.dicFileName = "./SQLite/smallDic.txt";
        TypoCorrector typoChecker =  TypoCorrector.of(this.dicFileName);
        int initialConf = 0;
        int flagsCorrectioncnt = 0;
        boolean flagTypoCorrectionAccepted = true;
        StringFileWriter sfw = StringFileWriter.of("correction_details.txt", "\n", isNotGUI);
        try (Connection connection = DriverManager.getConnection(url)) {
        try (Connection connection = DriverManager.getConnection(this.url)) {

            // Lookup each token in the database and categorize it
            for (int i = 0; i < tokens.length; i++) {
@@ -330,9 +336,9 @@ public class DBinterface {
        List<String> tokenList = new ArrayList<>(Arrays.asList(tokensCopy));
        //String url       = "jdbc:sqlite:./SQLite/mydatabase.db";
        //String urlinsert = "jdbc:sqlite:./SQLite/newdatabase.db";
        String dicFileName = "./SQLite/smallDic.txt";
        //String dicFileName = "./SQLite/smallDic.txt";
        //String url = "jdbc:sqlite:./SQLite/newdatabase.db";
        TypoCorrector typoChecker =  TypoCorrector.of(dicFileName);
        TypoCorrector typoChecker =  TypoCorrector.of(this.dicFileName);
        int initialConf = 0;
        int cntMiss = 0;
            // Lookup each token in the database and categorize it
@@ -421,7 +427,7 @@ public class DBinterface {
    // Method to read data from SQLite database into HashMap
    public void readDataFromDatabase() {
        wordRolesMap = new HashMap<>();
        String dbUrl = "jdbc:sqlite:./SQLite/newdatabase.db";
        String dbUrl = "jdbc:sqlite:./"+this.url;//SQLite/newdatabase.db";
        try (Connection connection = DriverManager.getConnection(dbUrl)) {
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT * FROM word_roles");
@@ -438,8 +444,9 @@ public class DBinterface {
    }

    // Method to update SQLite database with updated HashMap
    public void updateDatabase() {
        String dbUrl = "jdbc:sqlite:./SQLite/newdatabase.db";
    public void updateDatabase(String urlS) {
        String dbUrl = "jdbc:sqlite:./"+urlS;
        //String dbUrl = "jdbc:sqlite:./SQLite/newdatabase.db";
        try (Connection connection = DriverManager.getConnection(dbUrl)) {
            // Clear existing data in the table
            Statement clearStatement = connection.createStatement();
+9 −12
Original line number Diff line number Diff line
@@ -16,8 +16,9 @@ import java.util.Random;
public class HighlighterGUI extends JFrame {
    private JTextArea textArea;
    private JButton highlightButton;

    public HighlighterGUI() {
    public boolean isDutch;
    public HighlighterGUI(boolean isDutch) {
        this.isDutch = isDutch;
        setTitle("Text Highlighter");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
@@ -65,7 +66,12 @@ public class HighlighterGUI extends JFrame {
    }

    private void highlightPhrases(List<String> phrases) {
        DBinterface dbInterface = new DBinterface();
        DBinterface dbInterface;
        if(!this.isDutch){
            dbInterface = new DBinterface("SQLite/token_database_english.db", "SQLite/smallDic.txt");
        }else{
            dbInterface = new DBinterface("SQLite/token_database_dutch.db", "SQLite/DutchTranslation.txt");
        }
        BasicGraph basicGraphClass = new BasicGraph();
        for (String phrase : phrases) {
            highlightPhrase(phrase, dbInterface.checkTokenInDatabase(phrase, basicGraphClass.getGraph()));
@@ -90,13 +96,4 @@ public class HighlighterGUI extends JFrame {
            index = text.indexOf(phrase, index + 1);
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new HighlighterGUI();
            }
        });
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -11,8 +11,8 @@ import util.PhraseExtractor;
public class HashTableMaker {
    private Connection connection;

    public HashTableMaker() throws SQLException {
        connection = DriverManager.getConnection("jdbc:sqlite:SQLite/hash_database.db");
    public HashTableMaker(String dbName) throws SQLException {
        connection = DriverManager.getConnection("jdbc:sqlite:SQLite/hash_database.db"+dbName);
        createTableIfNotExists();
    }

Loading