Skip to content

TextAnalyzer

Leon edited this page Oct 27, 2017 · 6 revisions

Der TextAnalyzer zerteilt den Text in SÀtze und Wörter. Desweiter berechnet er die durchschnittliche WortlÀnge und jeder Satz wird individuell analysiert.

Alle SĂ€tze werden zerteilt und in ein String Array geladen.

String[] sentencesList = splitSentences(text);

Danach wird die durchschnittliche WortlÀnge berechnet.

 for (int i = 0; i < sentences.length; i++) {
            this.sentences[i] = new Sentence(sentencesList[i]);
            float avg = sentences[i].getAvgWordLength();
            this.avgWordLength[i] = Float.isFinite(avg) ? avg : 0;
}

Die Methode splitSentences(String text) zerteilt den Text in einzelne SĂ€tze. DafĂŒr wird der BreakIterator genutzt. Jeder Satz wird in die ArrayList senteceList hinzugefĂŒgt. Am Ende wird die ArrayList in ein String Array konvertiert und zurĂŒckgegeben.

private String[] splitSentences(String text) {
        BreakIterator iterator = BreakIterator.getSentenceInstance(Locale.GERMAN);
        iterator.setText(text);
        ArrayList<String> sentenceList = new ArrayList<>(text.length() / 6); // Avg word length in german is 5.7
        int start = iterator.first();
        for (int end = iterator.next();
             end != BreakIterator.DONE;
             start = end, end = iterator.next()) {

            String sentence = text.substring(start, end).trim();
            // Exclude empty sentences
            if (sentence.length() > 0) {
                Stream.of(sentence.split("\n"))
                        .filter(s -> s.length() > 0 && !s.equals("\r"))
                        .forEach(sentenceList::add);
            }
        }
        sentenceList.trimToSize(); // Remove unused indices

        // Convert ArrayList to array
        String[] sentences = new String[sentenceList.size()];
        sentenceList.toArray(sentences);
        return sentences;
}

Clone this wiki locally