Как сгенерировать матрицу частоты последовательных символов из txt файла в java? - PullRequest
0 голосов
/ 17 мая 2019

У меня большой текстовый файл (2 ГБ). Я прочитал весь текстовый файл символ за символом, чтобы узнать частоту каждого символа во всем текстовом файле, используя следующий фрагмент кода.

BufferedReader reader = new BufferedReader(
                new InputStreamReader(
                        new FileInputStream(file),
                        Charset.forName("UTF-8")));
        int c;
        while ((c = reader.read()) != -1) {
            char ch = (char) c;
            // rest of the code
        }

Теперь мне нужно сгенерировать матрицу с частотой последовательных символов. Например, сколько раз символ «b» существует после символа «a» (последовательный, прямой символ) и наоборот.

Предположим, у меня есть строка ввода (из файла): cad bed abed dada

частотная матрица, будет как Пожалуйста, нажмите здесь, чтобы увидеть изображение

Как это сделать? Буду признателен за любую помощь и предложение. Спасибо.

1 Ответ

0 голосов
/ 17 мая 2019

Следите за последним прочитанным символом. если lastchar == '' продолжить. используйте карту для хранения значений. затем вы можете перебрать комбинации и извлечь значение из карты, или вы можете обратиться к 2d-массиву напрямую, вычитая значение int для char 'a' из текущих пар символов.

    Map<String, Integer> table = new HashMap<>();
    String last = "";
    for (char c : input.toCharArray()) {
        if (last.isEmpty()) {
            last = String.format("%c", c);
            continue;
        }
        String thing = last + c;
        Integer count = table.getOrDefault(thing, 0);
        table.put(thing, count + 1);
        last = String.format("%c", c);
    }
...