обновление правильного написания в проверке орфографии - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь создать приложение для проверки орфографии.Мой код работает с точки зрения того, что он способен обнаруживать ошибки орфографии, я сделал это с помощью текстового файла, который содержит большое количество слов, чтобы сравнить вводимые пользователем данные для правильного / неправильного написания.Проблема заключается в том, что я пытаюсь реализовать способ дать представление о том, каким может быть неправильное написание, а не просто заявить, что написание неверно.

public class SpellChecker2 {

    public static void main(String[] args) throws FileNotFoundException {

        Scanner input = new Scanner(System.in);
        System.out.println("Please enter a String"); 
        String userWord = input.nextLine();

        final String theDictionary = "dictionary.txt";
        String[] words = dictionary(theDictionary);
        boolean correctSpelling = checking(words, userWord);

        if (!correctSpelling) {
            System.out.println("Incorrect spelling");
        }
        else {
            System.out.println("The spelling is correct");
        }
    }

    public static String[] dictionary(String filename) throws FileNotFoundException {
        final String fileName = "dictionary.txt";
        int dictionaryLength = 0, i = 0;

        try (Scanner dictionary = new Scanner(new File(fileName))) {
            while (dictionary.hasNextLine()) {
                ++dictionaryLength;
                dictionary.nextLine();
            }
        }
        String[] theWords = new String[dictionaryLength];
        try (Scanner dictionary = new Scanner(new File(fileName))) {
            while (dictionary.hasNextLine()) {
                theWords[i] = dictionary.nextLine();
                i++;
            }
        }
        return theWords;
    }

    public static boolean checking(String[] dictionary, String userWord) {
        for ( int i =0; i < dictionary.length; i++) {
            if (userWord.equals(dictionary[i])) {
                return true;
            }
        }
        return false;
    }
}

в целом я доволен результатом, что он может обнаружить неправильное написание, но есть ли способ дать предложения для ввода пользователем, когда написание является неправильным.Заранее спасибо.

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете использовать меры расстояния строки, такие как расстояние редактирования или расстояние Левенштейна, чтобы найти, какие слова в вашем словаре наиболее близки к входному слову.Это очень базовая форма для проверки правописания, но она по-прежнему является отличным дополнением к вашей задаче.

Например, если входное слово «gat», ближайшими словами могут быть «mat», «cat»и т.д. Вы можете выбрать, чтобы отобразить не более n рекомендаций.Вы легко найдете несколько ресурсов, которые помогут вам реализовать эти алгоритмы.

Справка:

https://en.wikipedia.org/wiki/Edit_distance

https://en.wikipedia.org/wiki/Levenshtein_distance

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...