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

Merge branch 'Reza' into 'master'

fixApostrohpe

See merge request ec504/ec504_projects/group6!36
parents 16627834 c6f3c1af
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ public class Checker {
                for (String sentence : extractedSentences) {
                    i++;
                    //dbInterface.updateTokenInDatabase(sentence.toLowerCase(), graph);
                    sentence = StringProcessor.handleApostrophe(sentence.toLowerCase());
                    PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence, 3, 5);
                    List<String> phrases = extractorPhrase.getPhrases();
                    for (String phrase : phrases) {
@@ -71,7 +72,7 @@ public class Checker {
                System.out.println("\n-------------------------------------------\n"+ "Number of update: "+ cntUpdate);
            }else if(argPars.isCheckSentence()){
                //dbInterface.updateTokenInDatabase(argPars.getSentence().toLowerCase(), graph);
                for (String phrase : PhraseExtractor.fromSentence(argPars.getSentence(),3, 5).getPhrases()) {
                for (String phrase : PhraseExtractor.fromSentence(StringProcessor.handleApostrophe(argPars.getSentence()),3, 5).getPhrases()) {
                    dbInterface.updateTokenInDatabase(phrase.toLowerCase(), graph);                    
                }
            }
@@ -93,6 +94,7 @@ public class Checker {
                        manager = new HashTableMaker("SQLite/hash_database_english.db");
                    }
                    for (String sentence : extractedSentences) {
                        sentence = StringProcessor.handleApostrophe(sentence.toLowerCase());
                        manager.updateDatabase(sentence.toLowerCase());
                        PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence, 1, 4);
                        List<String> phrases = extractorPhrase.getPhrases();
@@ -107,8 +109,8 @@ public class Checker {
            }else if(argPars.isCheckSentence()){
                try {
                    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(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()));
                    for (String phrase : PhraseExtractor.fromSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()),1, 4).getPhrases()) {
                        manager.updateDatabase(phrase.toLowerCase());                      
                    }
                    manager.closeConnection();
@@ -123,7 +125,7 @@ public class Checker {
                HashTableMaker manager = new HashTableMaker("SQLite/hash_database_english.db");
                for (String sentence : extractedSentences) {
                    System.out.println("Sentence: " + sentence);
                    
                    sentence = StringProcessor.handleApostrophe(sentence.toLowerCase());
                    System.out.println("*********************************************************");
                    PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(sentence);
                    List<String> phrases = extractorPhrase.getPhrases();
@@ -151,9 +153,9 @@ public class Checker {
        }else if(argPars.isCheckSentence()){

            System.out.println("Sentence: " + argPars.getSentence());
            jsonMaker.addSentence(argPars.getSentence().toLowerCase(), dbInterface.checkTokenInDatabase(argPars.getSentence().toLowerCase(), graph));
            jsonMaker.addSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()), dbInterface.checkTokenInDatabase(argPars.getSentence().toLowerCase(), graph));
            System.out.println("*********************************************************");
            PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(argPars.getSentence().toLowerCase());
            PhraseExtractor extractorPhrase = PhraseExtractor.fromSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()));
            List<String> phrases = extractorPhrase.getPhrases();
            for (String phrase : phrases) {
                System.out.println("Phrase: " + phrase);
+11 −4
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ import util.JsonMaker;
import util.PhraseExtractor;
import util.SentenceExtractor;
import util.StringFileWriter;
import util.StringProcessor;
import Translator.*;
import StateMachine.*;

@@ -36,6 +37,7 @@ public class Corrector implements GUIListener {
        this.stringWriterGUI = StringFileWriter.of("corrected.txt");
        this.senteceIndGUI = 0;
        this.curSentenceGUI = extractedSentencesGUI.get(0);
        this.curSentenceGUI = StringProcessor.handleApostrophe(this.curSentenceGUI.toLowerCase());
        String tempString = dbInterfaceGUI.correctTokenInDatabase(this.curSentenceGUI.toLowerCase(), graphGUI, 1, false);
        SelectCorrectionGUI gui = new SelectCorrectionGUI(this, this.curSentenceGUI);
    }
@@ -59,6 +61,7 @@ public class Corrector implements GUIListener {
            this.curSentenceGUI = tempString;
            String tempSentenceGUI = dbInterfaceGUI.correctTokenInDatabase(this.curSentenceGUI.toLowerCase(), graphGUI, 1, false);
        }
        this.curSentenceGUI = StringProcessor.handleApostrophe(this.curSentenceGUI.toLowerCase());
        return this.curSentenceGUI;
    }

@@ -80,6 +83,7 @@ public class Corrector implements GUIListener {
        }
        
        this.curSentenceGUI = extractedSentencesGUI.get(senteceIndGUI);
        this.curSentenceGUI = StringProcessor.handleApostrophe(this.curSentenceGUI.toLowerCase());
        String tempSentenceGUI = dbInterfaceGUI.correctTokenInDatabase(this.curSentenceGUI.toLowerCase(), graphGUI, 1, false);
        return this.curSentenceGUI;

@@ -112,6 +116,7 @@ public class Corrector implements GUIListener {
                List<String> extractedSentences = extractor.getSentences();
                for (String sentence : extractedSentences) {
                    System.out.println("Sentence: " + sentence);
                    sentence = StringProcessor.handleApostrophe(sentence.toLowerCase());
                    String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase());
                    stringWriter.appendString(tempString);
                    System.out.println("##########################################################");
@@ -119,7 +124,7 @@ public class Corrector implements GUIListener {
            }else{
                
                System.out.println("Sentence: " + argPars.getSentence());
                String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase());
                String tempString = directTranslator.replaceWordsInSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()));
                stringWriter.appendString(tempString);
                System.out.println("Translation: "+tempString);
                System.out.println("##########################################################");
@@ -138,6 +143,7 @@ public class Corrector implements GUIListener {
                List<String> extractedSentences = extractor.getSentences();
                for (String sentence : extractedSentences) {
                    System.out.println("Sentence: " + sentence);
                    sentence = StringProcessor.handleApostrophe(sentence.toLowerCase());
                    String tempString = directTranslator.replaceWordsInSentence(sentence.toLowerCase());
                    stringWriter.appendString(tempString);
                    System.out.println("##########################################################");
@@ -145,7 +151,7 @@ public class Corrector implements GUIListener {
            }else{
                
                System.out.println("Sentence: " + argPars.getSentence());
                String tempString = directTranslator.replaceWordsInSentence(argPars.getSentence().toLowerCase());
                String tempString = directTranslator.replaceWordsInSentence(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()));
                stringWriter.appendString(tempString);
                System.out.println("Translation: "+tempString);
                System.out.println("##########################################################");
@@ -166,6 +172,7 @@ public class Corrector implements GUIListener {
                List<String> extractedSentences = extractor.getSentences();
                for (String sentence : extractedSentences) {
                    System.out.println("Sentence: " + sentence);
                    sentence = StringProcessor.handleApostrophe(sentence.toLowerCase());
                    String tempString = dbInterface.correctTokenInDatabase(sentence.toLowerCase(), graph, 2, true);
                    stringWriter.appendString(tempString);

@@ -181,11 +188,11 @@ public class Corrector implements GUIListener {
            }
        }else if(argPars.isCheckSentence()){
            if(argPars.isCorrectionGUI()){  
                Corrector corrector = new Corrector(SentenceExtractor.of(argPars.getSentence()), argPars);  
                Corrector corrector = new Corrector(SentenceExtractor.of(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase())), argPars);  
                corrector.start();
            }else{
                System.out.println("Sentence: " + argPars.getSentence());
                stringWriter.appendString(dbInterface.correctTokenInDatabase(argPars.getSentence().toLowerCase(), graph, 2, true));
                stringWriter.appendString(dbInterface.correctTokenInDatabase(StringProcessor.handleApostrophe(argPars.getSentence().toLowerCase()), graph, 2, true));
                try {
                    stringWriter.writeToFile();
                    System.out.println("Corrected version has been written to the file.");
+52 −0
Original line number Diff line number Diff line
@@ -19,4 +19,56 @@ public class StringProcessor {
            return "";
        }
    }
    public static String handleApostrophe(String text) {
        String[][] contractions = {
            {"won't", "will not"},
            {"can't", "cannot"},
            {"isn't", "is not"},
            {"aren't", "are not"},
            {"wasn't", "was not"},
            {"weren't", "were not"},
            {"haven't", "have not"},
            {"hasn't", "has not"},
            {"hadn't", "had not"},
            {"doesn't", "does not"},
            {"don't", "do not"},
            {"didn't", "did not"},
            {"shouldn't", "should not"},
            {"couldn't", "could not"},
            {"mustn't", "must not"},
            {"mightn't", "might not"},
            {"wouldn't", "would not"},
            {"it's", "it is"},
            {"he's", "he is"},
            {"she's", "she is"},
            {"that's", "that is"},
            {"who's", "who is"},
            {"what's", "what is"},
            {"there's", "there is"},
            {"here's", "here is"},
            {"let's", "let us"},
            {"they're", "they are"},
            {"we're", "we are"},
            {"you're", "you are"}

        };
        for (String[] contraction : contractions) {
            text = text.replaceAll("\\b" + contraction[0] + "\\b", contraction[1]);
        }
        String regex = "(\\w+)'s\\s+(\\w+)";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);
        StringBuilder result = new StringBuilder();
        int lastEnd = 0;
        while (matcher.find()) {
            result.append(text, lastEnd, matcher.start());
            result.append(matcher.group(2)).append(" of ").append(matcher.group(1));
            lastEnd = matcher.end();
        }
        result.append(text.substring(lastEnd));
        text = result.toString();
        text = text.replaceAll("[\\'’]", "");

        return text;
    }
}