[Dresden-pm] Fwd: Re: [Erlangen-pm] perl - die Frage von Toni Stadler

Steffen Winkler steffen at steffen-winkler.de
Fr Mär 20 01:01:04 PDT 2015


Hier die Antwort vom Helmut (Erlangen.pm) auch zum Mitlesen für 
Dresden.pm, weil die Antwort doch recht interessant ist.

Hi,

da gibt es prinzipiell 3 Möglichkeiten:

- ein halbswegs passendes Paket benutzen, Stichwort Textindizierung und Relevanz, ist Teil von Suchmaschinen z.B. SOLR, ElasticSearch
- einmal ordentlich Publikationen zu dem Thema durchackern, Ausgangspunkt z.B. Ted Pedersen https://metacpan.org/author/TPEDERSE
- selber herumbasteln, weils Spass macht und/oder Existenzberechtigung generiert

Zum Basteln:

Grundfrage ist schon mal, was ein Wort ist. Der String: ein, eines, eine, einer sind dann 4 verschiedene Wörter, aber der selbe Stamm.
Der Sinn (Bedeutung, Semantik): Alkohol, Äthanol, z.T. Bier, Wein, Schnaps, alkoholhältiges Getränk; Alkoholkonsum, Konsum von Alkohol …

Die Wörter eines Textes zählen funktioniert mal grundsätzlich so:

#!perl
use strict;
use warnings;

use utf8;

binmode(STDIN, ':utf8');
binmode(STDOUT,':utf8');

my $words = {};

my $stopwords;
$stopwords->{$_} = () for qw(
in
die
von
und
ich
eine
es
der
dann
);

while (my $line = <STDIN>) {
   chomp($line);
   my @tokens =
     grep { !exists $stopwords->{$_} } # ist kein stopword
     grep { $_ !~ /\d/ }               # Worte ohne Ziffern
     map {lc}                          # lowercase
     $line =~ /(\w{2,})/g;             # tokens - alphanumerisch, mind. 2 Zeichen
   for my $token (@tokens) {
     $words->{$token}++;
   }
}

# sort descending (highest value first)
my @keys = sort { $words->{$b} <=> $words->{$a} } keys(%$words);
for my $key ( @keys ) {
   printf "%-20s %6d\n", $key, $words->{$key};
}

Da kommt dann auf den Text dieser Originalmail angewandt etwa folgendes raus:

drug                      4
medikamenten              4
mischkonsum               3
funktion                  3
aspirin                   3
texte                     3
wörter                    3
einzeltexte               2
helfen                    2
alkohol                   2
...

HTH

Helmut Wollmersdorfer


Am 18.03.2015 um 19:44 schrieb Steffen Winkler <steffen at steffen-winkler.de>:

> Helmut, da kennst Du Dich sicher gut mit aus.
> Grüße von Steffen Winkler.




Mehr Informationen über die Mailingliste Dresden-pm