Hat irgend wer eine Häufigkeitstabelle der ASCII - Zeichen in der Deutschen Sprache bei der Hand, bzw. auf der Platte? Würde Sie dringend für eine Huffman Kompression brauchen.
Hat irgend wer eine Häufigkeitstabelle
der ASCII - Zeichen in der Deutschen
Sprache bei der Hand, bzw. auf der
Platte? Würde Sie dringend für eine
Huffman Kompression brauchen.
Am besten ermittelst du die Häufigkeit anhand der vorliegenden Texte selbst, denn „den“ deutschen Text gibt es nicht, und die publizierten Häufigkeitsangaben unterscheiden meist nicht zwischen Gross- und Kleinbuchstaben, lassen die Leerzeichen und Formatierungszeichen weg usw.
Mit dieser Routine kannst du die Häufigkeiten leicht selbst ermitteln. (Vorausgesetzt, du hast irgendwo VB(A):
Function Zeichenstatistik(FName As String)
Static Cnt(256) As Long, Lin As String, Res As String, \_
L As Long, I As Long, J As Long, N As Long, Ch As String \* 1, \_
MerkI As Long, VMax As Double, V As Double
Open FName For Input As #1
N = 0
Do While Not EOF(1)
Line Input #1, Lin
L = Len(Lin)
For I = 1 To L
Ch = Mid(Lin, I, 1)
Cnt(Asc(Ch)) = Cnt(Asc(Ch)) + 1
Next I
N = N + L
Loop
Res = ""
Do
MerkI = 0
VMax = 0#
For I = 1 To 255
If Cnt(I) \> 0 Then
V = Cnt(I) / N
If V \> VMax Then
VMax = V
MerkI = I
End If
End If
Next I
If MerkI = 0 Then Exit Do
Res = Res & vbCrLf & Chr(MerkI) & " (" & Format(MerkI, "000") & ") " & Format(VMax, "0.0000%")
Cnt(MerkI) = 0
Loop
Zeichenstatistik = Mid(Res, 3)
Close #1
End Function
Ein deutscher Beispieltext - ca 100 kByte Grimm, Heine, Grimmelshausen und Fontane aus http://gutenberg.aol.de - ergibt folgende Häufigkeiten:
(032) 15,0852%
e (101) 13,6435%
n (110) 8,2989%
i (105) 6,3114%
r (114) 5,4784%
s (115) 4,5574%
t (116) 4,5141%
a (097) 4,1927%
d (100) 3,9907%
h (104) 3,9277%
l (108) 3,0094%
u (117) 2,9911%
c (099) 2,6237%
g (103) 1,9980%
m (109) 1,9560%
o (111) 1,8248%
, (044) 1,5428%
b (098) 1,3762%
w (119) 1,1728%
f (102) 1,0272%
z (122) 0,9354%
- (045) 0,8055%
k (107) 0,8002%
. (046) 0,6192%
p (112) 0,5313%
S (083) 0,5169%
ü (252) 0,5129%
v (118) 0,4920%
ä (228) 0,4303%
ß (223) 0,3542%
H (072) 0,3148%
A (065) 0,2768%
D (068) 0,2676%
K (075) 0,2676%
ö (246) 0,2558%
B (066) 0,2427%
F (070) 0,2178%
G (071) 0,2165%
E (069) 0,2138%
W (087) 0,2099%
M (077) 0,1981%
T (084) 0,1600%
V (086) 0,1391%
L (076) 0,1220%
R (082) 0,1181%
j (106) 0,1128%
Z (090) 0,1076%
P (080) 0,1063%
; (059) 0,1036%
U (085) 0,0971%
I (073) 0,0892%
« (171) 0,0892%
» (187) 0,0892%
’ (039) 0,0787%
N (078) 0,0695%
J (074) 0,0551%
O (079) 0,0472%
x (120) 0,0328%
! (033) 0,0302%
(058) 0,0249%
? (063) 0,0197%
C (067) 0,0157%
( (040) 0,0144%
) (041) 0,0144%
y (121) 0,0144%
Q (081) 0,0079%
q (113) 0,0066%
‹ (139) 0,0066%
› (155) 0,0066%
Ü (220) 0,0066%
é (233) 0,0052%
1 (049) 0,0026%
Ä (196) 0,0026%
2 (050) 0,0013%
3 (051) 0,0013%
Ein längerer englischer Beispieltext ergibt folgende relativen Häufigkeiten:
(032) 17,1673%
e (101) 9,7561%
t (116) 7,2040%
a (097) 6,3052%
o (111) 5,9017%
n (110) 5,4158%
h (104) 5,2389%
i (105) 5,1169%
s (115) 5,0849%
r (114) 4,3206%
d (100) 3,4580%
l (108) 3,2055%
u (117) 2,2427%
m (109) 1,8716%
w (119) 1,7815%
f (102) 1,7624%
c (099) 1,7275%
g (103) 1,5221%
, (044) 1,4910%
y (121) 1,4395%
p (112) 1,2493%
b (098) 1,0556%
. (046) 0,8199%
v (118) 0,7252%
k (107) 0,5610%
" (034) 0,4028%
I (073) 0,3675%
- (045) 0,2946%
’ (039) 0,2537%
T (084) 0,2043%
A (065) 0,1815%
H (072) 0,1419%
B (066) 0,1101%
; (059) 0,1039%
S (083) 0,1012%
M (077) 0,0975%
x (120) 0,0926%
C (067) 0,0871%
W (087) 0,0856%
L (076) 0,0714%
? (063) 0,0691%
G (071) 0,0685%
j (106) 0,0669%
! (033) 0,0655%
q (113) 0,0626%
F (070) 0,0580%
O (079) 0,0553%
P (080) 0,0544%
N (078) 0,0532%
E (069) 0,0453%
D (068) 0,0428%
[ (091) 0,0377%
] (093) 0,0377%
Y (089) 0,0316%
R (082) 0,0304%
1 (049) 0,0283%
z (122) 0,0278%
J (074) 0,0236%
(058) 0,0208%
V (086) 0,0197%
2 (050) 0,0152%
U (085) 0,0092%
K (075) 0,0083%
0 (048) 0,0069%
3 (051) 0,0068%
4 (052) 0,0043%
X (088) 0,0040%
( (040) 0,0038%
) (041) 0,0038%
5 (053) 0,0035%
6 (054) 0,0033%
8 (056) 0,0026%
_ (095) 0,0020%
Q (081) 0,0020%
7 (055) 0,0016%
9 (057) 0,0016%
Z (090) 0,0013%
{ (123) 0,0003%
} (125) 0,0003%
Ä (196) 0,0001%
Guten Rutsch
Reinhard
Danke Reinhard,
aber wenn die Häufigkeit jedes mal neu festgestellt wird, muß die Codetabelle mitgespeichert werden. Und weil ich aber in der Fachbereichsarbeit die Kompressionsrate durch zusätzliche Tabellen nicht verfälschen will, gehe ich den Weg mit einer fixen Häufigkeitstablle. Weniger effektiv aber zu Demonstrationszwecken durchaus geeignet.
Gruß
Bernh@rd