import java.util.HashMap; import java.util.HashSet; import java.util.Map.Entry; /** * Zaehlt die Anzahl Vorkommnisse von Woertern ueber mehrere Zeichenketten. Es * lassen sich eine beliebige Anzahl an Zeichenketten uebergeben. Die Statistik * wird fortlaufend gefuehrt. Die Wortzaehlung laesst sich jederzeit ausgeben. * Die Satzeichen . , ? ! " : ; werden entfernt. Alle Buchstaben werden in * Kleinbuchstaben umgewandelt um beispielsweise das Wort 'die' inmitten eines * Satzes und das Wort 'Die' am Anfang eines Satzes als gleiches Wort werten zu * koennen. * * @version 1.0 * @author tebe */ public class Worthaeufigkeitsanalyse { private static HashSet satzzeichen = new HashSet(); static { satzzeichen.add("."); satzzeichen.add(","); satzzeichen.add("?"); satzzeichen.add("!"); satzzeichen.add("''"); satzzeichen.add(":"); satzzeichen.add(";"); } private HashMap woerterHaeufigkeit = new HashMap(); /** * Nimmt die uebergebene Zeichenkette in die Worthaeufigkeitsanalyse auf. * * @param text zu verarbeitende Zeichenkette */ public void verarbeiteText(String text) { String[] woerter = text.split(" "); for (int i = 0; i < woerter.length; i++) { String wort = woerter[i].trim(); wort = wort.toLowerCase(); wort = entferneSatzzeichen(wort); if (!satzzeichen.contains(wort)) { if (woerterHaeufigkeit.containsKey(wort)) { Integer zaehler = woerterHaeufigkeit.get(wort); woerterHaeufigkeit.put(wort, zaehler++); } else { woerterHaeufigkeit.put(wort, 1); } } } } private String entferneSatzzeichen(String wort) { boolean satzzeichenGefunden; do { satzzeichenGefunden = false; for (String zeichen : satzzeichen) { if (wort.startsWith(zeichen)) { satzzeichenGefunden = true; wort = wort.substring(1, wort.length()); } if (wort.endsWith(zeichen)) { satzzeichenGefunden = true; wort = wort.substring(0, wort.length() - 1); } } } while (satzzeichenGefunden); return wort; } /** * Ausgabe der Worthaeufigkeitsanalyse auf der Konsole. */ public void druckeStatistik() { for (Entry wortHaeufigkeit : woerterHaeufigkeit .entrySet()) { System.out.println(wortHaeufigkeit.getKey() + "\t" + wortHaeufigkeit.getValue()); } } public static void main(String[] args) { Worthaeufigkeitsanalyse hauefigkeitsanalyse = new Worthaeufigkeitsanalyse(); hauefigkeitsanalyse .verarbeiteText("Fritz sagt: \"Die Softwareentwicklung ist meine Leidenschaft!\""); hauefigkeitsanalyse .verarbeiteText("Hans meint, er teile die Leidenschaft mit Fritz."); hauefigkeitsanalyse .verarbeiteText("John fuegt hinzu, dass die Softwareentwicklung nicht nur aus Programmieren bestehe, sondern es sich dabei um einen komplexen Prozess, bestehend aus vielen kleinen Komponenten, handelt.\""); hauefigkeitsanalyse.druckeStatistik(); } }