|
@@ -0,0 +1,100 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+
|
|
|
+import sys
|
|
|
+import re
|
|
|
+import os
|
|
|
+import platform
|
|
|
+import collections
|
|
|
+
|
|
|
+Regex_Worte = "[a-zA-ZäüöÄÜÖß]+"
|
|
|
+Regex_Saetze = "[.!?][ \"\n\r\f]"
|
|
|
+
|
|
|
+count_min = 0
|
|
|
+count_max = 0
|
|
|
+count_mittel = 0.0
|
|
|
+count_liste = []
|
|
|
+woerterbuch = []
|
|
|
+
|
|
|
+# Loeschen des Bildschirms
|
|
|
+if platform.system() == 'Windows':
|
|
|
+ os.system('cls')
|
|
|
+else:
|
|
|
+ os.system('clear')
|
|
|
+
|
|
|
+# Erklaerung der Programmfunktion
|
|
|
+print("Text-Statistik")
|
|
|
+print("-" * 85)
|
|
|
+print("Die angegebene Datei wird auf die Anzahl von Sätzen und auf Worthäufigkeit analysiert.")
|
|
|
+print("-" * 85)
|
|
|
+print("\n")
|
|
|
+
|
|
|
+# Datei einlesen
|
|
|
+try:
|
|
|
+ dateiname = raw_input("Name der zu analysierenden Datei: ")
|
|
|
+ datei = open(dateiname)
|
|
|
+ text = datei.read()
|
|
|
+ datei.close()
|
|
|
+ print("\n")
|
|
|
+except:
|
|
|
+ print("Die angegebene Datei existiert leider nicht! Bitte Programm neu starten ...\n")
|
|
|
+ sys.exit(0)
|
|
|
+
|
|
|
+# Anzahl der Worte in der Datei
|
|
|
+anzahl_worte = len(re.findall(Regex_Worte, text))
|
|
|
+
|
|
|
+# Anzahl der Sätze in der Datei - Problem: Ordnungszahlen, Punkt am Textende
|
|
|
+anzahl_saetze = len(re.findall(Regex_Saetze, text))
|
|
|
+
|
|
|
+# min., max. und mittlere Anzahl von Worten in einem Satz
|
|
|
+saetze = re.split(Regex_Saetze, text)
|
|
|
+
|
|
|
+for i in saetze:
|
|
|
+ count_worte = len(re.findall(Regex_Worte, i))
|
|
|
+
|
|
|
+ # sortierte Liste bilden, erstes und letztes Element = min und max
|
|
|
+ if count_worte <> 0:
|
|
|
+ count_liste.append(count_worte)
|
|
|
+
|
|
|
+count_liste.sort()
|
|
|
+count_min = count_liste[0]
|
|
|
+count_max = count_liste[len(count_liste)-1]
|
|
|
+count_mittel = "%.1f" % (float(anzahl_worte) / len(count_liste))
|
|
|
+
|
|
|
+# Häufigkeit von auftretenden Worten absteigend sortiert
|
|
|
+for i in saetze:
|
|
|
+ i = i.replace("\n", "")
|
|
|
+ i = i.replace(",", "")
|
|
|
+ i = i.replace('"', "")
|
|
|
+ i = i.replace("(", "")
|
|
|
+ i = i.replace(")", "")
|
|
|
+ i = i.replace(":", "")
|
|
|
+
|
|
|
+ woerter = i.split(" ")
|
|
|
+ woerterbuch = woerterbuch + woerter
|
|
|
+
|
|
|
+for i in woerterbuch:
|
|
|
+ if not re.findall(Regex_Worte, i):
|
|
|
+ woerterbuch.remove(i)
|
|
|
+
|
|
|
+woerterbuch = [i.lower() for i in woerterbuch]
|
|
|
+wordcount = collections.Counter(woerterbuch)
|
|
|
+
|
|
|
+
|
|
|
+# Ausgabe der Werte
|
|
|
+print("Ergebnis der Analyse:\n")
|
|
|
+print("Die Datei '" + dateiname + "' enthält " + str(anzahl_worte) +
|
|
|
+ " Worte in " + str(anzahl_saetze) + " Sätzen. \n")
|
|
|
+
|
|
|
+print("Der kürzeste Satz besteht aus " + str(count_min) +
|
|
|
+ " Worten und der längste Satz aus " + str(count_max) + " Worten.")
|
|
|
+print("Im Mittel habe die Sätze dieses Textes " +
|
|
|
+ str(count_mittel) + " Worte. \n")
|
|
|
+
|
|
|
+print("Häufigkeit der Worte im Text: \n")
|
|
|
+# for key, value in wordcount.iteritems():
|
|
|
+# print('{0:>2}'.format(value) + " " + key)
|
|
|
+
|
|
|
+for key, value in sorted(wordcount.iteritems(), key=lambda (k, v): (v, k), reverse=True):
|
|
|
+ print('{0:>4}'.format(value) + " " + key)
|
|
|
+
|
|
|
+print("\n\n-- Ende des Analyseberichts -- \n")
|