Schrift
[thread]7720[/thread]

Buchstaben und Ziffern zählen



<< >> 10 Einträge, 1 Seite
corpswalker
 2006-02-20 15:00
#63095 #63095
User since
2006-02-20
5 Artikel
BenutzerIn
[default_avatar]
Hi, bin neu hier.
Ich versuche seit ein paar wochen aus einer Text-Datei einzelne Elemente zu zählen und später deren Entropie zu bestimmen, leider sind meine beschrenkten Kenntnisse nur zum Wörter-zählen gut! ???
Hab bis jetzt versucht den ganzen Text ohne Trennzeichen in einer Array zu speichern und mit den Substring weiter zu kommen leider hatte Perl ziemlich viele Einwende dagegen... :angry: und leider klappt auch nix was mit Wörter-zählen gleichkommt.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
open (INFILE, "Reuters_Topnews.txt");
while(<INFILE>) {
    chop;              &nbsp
; 
    tr/A-Z/a-z/;             # convert to lower case
    tr/.,:-;!?"(){}//d;       # strip out punctuation
    foreach $word (split) {  # split line into words 
        $count{$word}++;     # count words, put count into hash (word is key, count is value)
    } 
}
foreach $word (sort keys %count) {   # sort hash by the value of the key
   print "$word $count{$word}\n";    # print out the hash in key order
}



Danke in voraus für eure Tipps!
M.f.G.
Corpswalker
Crian
 2006-02-20 15:35
#63096 #63096
User since
2003-08-04
5867 Artikel
ModeratorIn
[Homepage]
user image
bau ein:

Code: (dl )
1
2
3
for my $char (split //) {
++$charcount{$char};
}
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
corpswalker
 2006-02-20 16:23
#63097 #63097
User since
2006-02-20
5 Artikel
BenutzerIn
[default_avatar]
Vielen Dank!
Dachte nicht das das so einfach geht!
Könntest du mir ein Tipp geben wie ich die einzelne Werte rekursiv aufrufen kann und anschließend bearbeiten kann? Mir fallt nur ein wie ich die Werte einzeln aufrufen kann oder aus dem Output-Text filtern kann. Kannst du mir gegebenfalls ein link geben wo ich eine wirklich komplette perl-anleitung finde? Hab bis mich bis jetzt mit der perlWiki und der perldoc beschäftigt aber deine angegebene methode hab ich nirgends herausgelesen:( ...

Dankend im voraus,
Corpswalker
esskar
 2006-02-20 16:45
#63098 #63098
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
inwiefern rekursiv?
wie willst du sie denn verarbeiten?
Crian
 2006-02-20 17:04
#63099 #63099
User since
2003-08-04
5867 Artikel
ModeratorIn
[Homepage]
user image
split // steht in perldoc -f split

Eine gute Einführung ist auf strats Seite zu finden (www.fabiani.net).
Ansonsten kann ich nur das Kamel und/oder Lamabuch empfehlen, siehe Bpcherempfehlungen im Wiki.

Zu deiner anderen Frage kann ich mich nur esskar anschließen, was genau willst du machen?\n\n

<!--EDIT|Crian|1140447944-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
corpswalker
 2006-02-20 17:41
#63100 #63100
User since
2006-02-20
5 Artikel
BenutzerIn
[default_avatar]
Ich versuche in meinem Script die Entropie der einzelnen Chars zu berechnen und mit der rekursiven Bearbeitung meinte ich eine Schlaufe dammit. Sorry für meine ungenaue Fragestellung.

M.f.G.
Corpswalker
frodus
 2006-02-20 18:42
#63101 #63101
User since
2003-09-26
147 Artikel
BenutzerIn
[default_avatar]
Hi,

versuch es mal so:
Code: (dl )
1
2
3
4
5
6
foreach my $sign (keys %charcount) {
# Hier Dein code:
# Zugriff auf die einzelnen counter mit:
my $cnt = $charcount{$sign};
.....
}


/Frodus
corpswalker
 2006-02-20 19:24
#63102 #63102
User since
2006-02-20
5 Artikel
BenutzerIn
[default_avatar]
Danke vielmals für den Tipp! Das ich mein Ziel mit so wenig Zeilen erreichen kann hätte ich nicht gedacht!

Noch ne kleine Frage am Rande: wie kann ich den logarithmus dualis berechnen? log($x) ist das natürliche wenn ich mich nicht täusch.

M.f.G.
Corpswalker\n\n

<!--EDIT|corpswalker|1140456632-->
nepos
 2006-02-20 21:09
#63103 #63103
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, war das nicht was von wegen
Code (perl): (dl )
 $ln = log($x)/log(2)
?
corpswalker
 2006-02-21 09:07
#63104 #63104
User since
2006-02-20
5 Artikel
BenutzerIn
[default_avatar]
Klappt!:p
Dankeschön, nun funktioniert entlich mein Script!

M.f.G.
Corpswalker
<< >> 10 Einträge, 1 Seite



View all threads created 2006-02-20 15:00.