Thread Erkennung von Abkürzungen (3 answers)
Opened by kimmy at 2011-02-25 17:11

kimmy
 2011-02-25 17:11
#146043 #146043
User since
2010-09-10
87 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe ein kleines Perl-Skript erstellt, das zwei Listen vergleicht und Kandidaten von Abkürzungen extrahiert. Das Skript läuft ja schon, aber ich möchte euch fragen, ob es noch effizientere Programm-Logik (Geschwindigkeit, Programmstruktur, usw.)gibt.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/perl

use strict;
use warnings;
use Encode;

binmode(STDOUT,":utf8");

my @arr_abk = <>; # Liste von Abkürzungen

open(my $lex, "<:encoding(UTF8)", "lexikon.txt") or die "kann das Lexikon nicht öffnen: $!";
while(<$lex>){
        chomp;
        my $line = $_;
        foreach my $abk(@arr_abk){
                chomp;
                $abk =~ s/[\r\n]//;
                my @ele_abk = split (/\./, $abk);
                if($abk =~ /^[^\.]{2,}\.$/){
                        if($line =~ /^$ele_abk[0]/i){
                                print "$abk\t$line\n";
                        }
                }
                elsif($abk =~ /^[^\.]{2,}\.[^\.]{2,}\.?$/){
                        if($line =~ /^$ele_abk[0]/i){
                                if($line =~ /$ele_abk[1]/i){
                                        print "$abk\t$line\n";
                                }
                        }
                }
                elsif($abk =~ /^[^\.]{2,}\.[^\.]{2,}\.[^\.]{2,}\.?$/){
                        if($line =~ /^$ele_abk[0]/i){
                                if($line =~ /$ele_abk[1]/i){
                                        if($line =~ /$ele_abk[2]/i){
                                                print "$abk\t$line\n";
                                        }
                                }
                        }
                }
                elsif($abk =~ /^[^\.]{2,}\.[^\.]{2,}\.[^\.]{2,}\.[^\.]{2,}\.?$/){
                        if($line =~ /^$ele_abk[0]/i){
                                if($line =~ /$ele_abk[1]/i){
                                        if($line =~ /$ele_abk[2]/i){
                                                if($line =~ /$ele_abk[3]/i){
                                                        print "$abk\t$line\n";
                                                }
                                        }
                                }
                        }
                }
        }

}


Liste von Abkürzungen
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
F.FUSZ
BANDMOT.
TREIB.ROLLE
GESCHL.BA
BEFEST.WINKEL
LICHTSCHR.SENKR.
LICHTSCHR.HALT.KPL.
F.LICHTGITTE
UNTERT.
M.SPEICHER
SCHNELLENTL.MANSCH.
GENIET.
e-pol.
VERP.
BEF.SCHELLE
WH.
GETEILT.BA
BEFESTIG.WINKEL
SCHRITTMOT.
STEMP.ETI.
ZENTRIERST.
GETEI.BAND
...


Lexikon ist eine Liste von String wie z.B.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
abfall
abfallband
abfalleimer
abfalleinsatz
abfallentsorgung
abfallkiste
abfallkorb
abfallsack
abfallsaecke
abfallsäcke
abflussrohr
abfluszrohr
abflußreiniger
abflußrohr
abfrageset
abfragungsset
abfuellventil
abführventil
abfüllungsdienstleistung

Vielen Dank im Voraus.

View full thread Erkennung von Abkürzungen