-
Notifications
You must be signed in to change notification settings - Fork 0
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;
}