Hallo, gibt es ein Unix bzw. Linux-Tool welches mir die Buchstabenverteilung einer Textdatei ausgibt? Ich muss wissen mit welcher Häufigkeit einzelne Zeichen in einem Text auftreten. Schöne Grüße aus Bremen hartmut
Hi Hartmut Meyer, *, Hartmut Meyer wrote on Sun Aug 01, 2004 at 09:06:22AM +0200:
Ich muss wissen mit welcher Häufigkeit einzelne Zeichen in einem Text auftreten.
grep X ausdatei -c ^^ "Just count, dont show" -- so long, Rainer Bendig aka mindz PGP/GPG key (ID: 0xCC7EA575) http://DigitallyImpressed.com Get it from wwwkeys.de.pgp.net for contacting me take a look on http://digitallyimpressed.com/contact ---------------------------------------------------------------------- Don't reply to this e-mail address and please don't cc to me on lists. If we meet on a list, you can be sure that i am already on the list.
Rainer Bendig wrote: [Sunday 01 August 2004 10:44]
Hartmut Meyer wrote on Sun Aug 01, 2004 at 09:06:22AM +0200:
Ich muss wissen mit welcher Häufigkeit einzelne Zeichen in einem Text auftreten.
grep X ausdatei -c ^^ "Just count, dont show"
Das würde zählen, in wie vielen Zeilen der Buchstabe X vorkommt, nicht wie oft er insgesamt vorkommt. Es ist übrigens stilistisch besser, die Optionen vor den Filenamen zu schreiben. Ad hoc fällt mir zu Lösung des Problems z.B. das hier ein: cat ${FILE}|sed 's/\(.\)/\1\n/g'|sort|uniq -c|sort -nr Für große Datenmengen vielleicht nicht optimal... Thomas.
Hi Thomas Hofer, *, Thomas Hofer wrote on Sun Aug 01, 2004 at 11:18:35AM +0200:
Das würde zählen, in wie vielen Zeilen der Buchstabe X vorkommt, nicht wie oft er insgesamt vorkommt. Es ist übrigens stilistisch besser, die Optionen vor den Filenamen zu schreiben.
dan saeh das so aus?: grep -o X dateiname | grep -c X
Für große Datenmengen vielleicht nicht optimal... dito -- so long, Rainer Bendig aka mindz PGP/GPG key (ID: 0xCC7EA575) http://DigitallyImpressed.com Get it from wwwkeys.de.pgp.net for contacting me take a look on http://digitallyimpressed.com/contact
Don't reply to this e-mail address and please don't cc to me on lists. If we meet on a list, you can be sure that i am already on the list.
Rainer Bendig wrote: [Sunday 01 August 2004 11:59]
Thomas Hofer wrote on Sun Aug 01, 2004 at 11:18:35AM +0200:
Das würde zählen, in wie vielen Zeilen der Buchstabe X vorkommt, nicht wie oft er insgesamt vorkommt. Es ist übrigens stilistisch besser, die Optionen vor den Filenamen zu schreiben.
dan saeh das so aus?: grep -o X dateiname | grep -c X
Nein, ich hatte folgendes im Sinn: grep -c X dateiname Laut Manpage hat grep prinzipiell folgende Parameter-Liste: grep [options] PATTERN [FILE...] Thomas.
Hi Thomas Hofer, *, Thomas Hofer wrote on Sun Aug 01, 2004 at 12:28:46PM +0200:
grep -o X dateiname | grep -c X
Nein, ich hatte folgendes im Sinn:
grep -c X dateiname
Laut Manpage hat grep prinzipiell folgende Parameter-Liste:
grep [options] PATTERN [FILE...] gleicht sich doch mit obrigen .... grep -o X dateiname schreibt alle X'se in je eine Zeile ... | grep -c X bekommt das via stdin zugefuettert und wirft die Anzahl raus ...
-- so long, Rainer Bendig aka mindz PGP/GPG key (ID: 0xCC7EA575) http://DigitallyImpressed.com Get it from wwwkeys.de.pgp.net for contacting me take a look on http://digitallyimpressed.com/contact ---------------------------------------------------------------------- Don't reply to this e-mail address and please don't cc to me on lists. If we meet on a list, you can be sure that i am already on the list.
Rainer Bendig wrote: [Sunday 01 August 2004 12:58]
gleicht sich doch mit obrigen ....
Achso, da haben wir aneinander vorbeigeredet.
grep -o X dateiname schreibt alle X'se in je eine Zeile ...
Stimmt, wenn man nur ein einzelnes Zeichen sucht, ist das einfacher als mit sed. Ich hatte die Aufgabe aber so verstanden, daß die Verteilung aller vorkommenden Zeichen gefragt war, und habe daher die Suche nach einem bestimmten Zeichen nicht in Betracht gezogen. Thomas.
Hallo, On Sunday 01 August 2004 10:44, Rainer Bendig wrote:
Hartmut Meyer wrote on Sun Aug 01, 2004 at 09:06:22AM +0200:
Ich muss wissen mit welcher Häufigkeit einzelne Zeichen in einem Text auftreten.
grep X ausdatei -c ^^ "Just count, dont show"
Das gibt mir nur die absolute (ich brauche relative) Häufigkeit und auch nur für ein gegebenes Zeichen statt für alle. Es wäre natürlich ein Ansatz für eine Selbstbaulösung. Schöne Grüße aus Bremen hartmut
Hartmut Meyer wrote: [Sunday 01 August 2004 11:28]
Hartmut Meyer wrote on Sun Aug 01, 2004 at 09:06:22AM +0200:
Ich muss wissen mit welcher Häufigkeit einzelne Zeichen in einem Text auftreten.
Das gibt mir nur die absolute (ich brauche relative) Häufigkeit und auch nur für ein gegebenes Zeichen statt für alle.
Dann würde ich es einfach ausprogrammieren, z.B. in awk: cat ${FILE}|awk '{for(i=1;i<=length($0);i++){c[substr($0,i,1)]++;s++}} \ END{for(i in c){print c[i]/s, i}}' Thomas.
Hallo, On Sunday 01 August 2004 12:38, Thomas Hofer wrote:
Hartmut Meyer wrote: [Sunday 01 August 2004 11:28]
Das gibt mir nur die absolute (ich brauche relative) Häufigkeit und auch nur für ein gegebenes Zeichen statt für alle.
Dann würde ich es einfach ausprogrammieren, z.B. in awk:
cat ${FILE}|awk '{for(i=1;i<=length($0);i++){c[substr($0,i,1)]++;s++}} \ END{for(i in c){print c[i]/s, i}}'
Sehr schön! Ich meinte mich zu erinnern, so etwas gäbe es schon fertig. Aber anscheinend war das falsch. Schöne Grüße aus Bremen hartmut
Hartmut Meyer wrote:
gibt es ein Unix bzw. Linux-Tool welches mir die Buchstabenverteilung einer Textdatei ausgibt?
Ich muss wissen mit welcher Häufigkeit einzelne Zeichen in einem Text auftreten.
http://www.cs.dal.ca/%7Evlado/srcperl/Ngrams/ ==> Text-Ngrams-1.2.tar.gz Beispiel: $> ./ngrams.pl --n=1 --type=byte /etc/passwd BEGIN OUTPUT BY Text::Ngrams version 1.2 1-GRAMS (total count: 906) FIRST N-GRAM: r LAST N-GRAM: \n -------------------------- \n 18 _ 18 - 2 / 78 0 12 1 14 2 7 3 8 4 9 5 16 6 6 7 3 8 1 9 2 : 108 A 1 B 1 C 1 D 2 F 1 G 1 H 2 M 3 N 2 P 5 S 2 T 3 U 2 W 3 a 59 b 45 c 14 d 14 e 40 f 12 g 4 h 24 i 37 j 2 k 1 l 21 m 24 n 52 o 41 p 16 q 1 r 24 s 48 t 28 u 14 v 12 w 13 x 23 y 6 END OUTPUT BY Text::Ngrams Gruesse, Th.
Moin moin Hartmut On Sunday 01 August 2004 09:06, Hartmut Meyer wrote: [...]
gibt es ein Unix bzw. Linux-Tool welches mir die Buchstabenverteilung einer Textdatei ausgibt?
Ich muss wissen mit welcher Häufigkeit einzelne Zeichen in einem Text auftreten. E N I R S T D A U H L War der Merkspruch zur Zipf'schen Häufigkeits-Verteilung der Buchstaben in deutschen Texten unseres damaligen Messtechnik und Statistik Inquisitors. So'n Schwachfug merkt man sich... (c:
Die Häufigkeits-Verteilung der einzelnen Buchstaben in einem deutschen Text konvergiert gegen eine endliche Größe. Falls man so was selber programmieren muss, und ich denke es wird wohl kaum anders gehen, dann würd' ich den Buchstaben-Salat mit 'nem Shell Sort Algorithmus sortieren und dann die Buchstaben zählen. Das dürfte am schnellsten gehen. http://de.wikipedia.org/wiki/Deutsches_Alphabet#Buchstabenverteilung_im_deut... http://de.wikipedia.org/wiki/Zipfsches_Gesetz Rang Wort relative Häufigkeit zipfsche Häufigkeit 1 E 0.13678 0.23955 2 Leerz. 0.13048 0.11977 3 N 0.09034 0.07985 4 I 0.06908 0.05989 5 R 0.06501 0.04791 6 S 0.05426 0.03992 7 T 0.05386 0.03422 8 D 0.04119 0.02994 9 A 0.04011 0.02662 10 U 0.03947 0.02395 11 H 0.03565 0.02178 12 L 0.03449 0.01996 13 G 0.02820 0.01843 14 C 0.02565 0.01711 15 O 0.02016 0.01597 16 M 0.01938 0.01497 17 B 0.01743 0.01409 18 F 0.01663 0.01331 19 W 0.01409 0.01261 20 K 0.01230 0.01198 21 Z 0.01032 0.01141 22 . 0.00818 0.01089 23 , 0.00790 0.01042 24 V 0.00755 0.00998 25 Ü 0.00613 0.00958 26 P 0.00560 0.00921 27 Ä 0.00537 0.00887 28 Ö 0.00289 0.00856 29 J 0.00064 0.00826 30 Q 0.00033 0.00798 31 Y 0.00027 0.00773 32 X 0.00014 0.00749 Oder wenns gebunden sein soll: Informationstheorie, Rolf Johanneson, ISBN 3-8931-9465-7, Addison-Wesley Verlag Tschüss, Thomas
participants (5)
-
Hartmut Meyer
-
Rainer Bendig
-
Thomas Hertweck
-
Thomas Hofer
-
Thomas Templin