[Trennmuster] Vergleich alte und neue patgen-Parameter

Werner LEMBERG wl at gnu.org
Di Apr 7 19:51:16 CEST 2020


> Es handelt sich offenbar um die Ausgabe des Skripts
> hyphenate_neueintraege.py, wobei als Eingabe eine Liste bereits
> getrennter Wörter verwendet wurde.  Wie bist du an diese Liste
> gekommen?

Einen Link zur Liste habe ich vor ein paar Tagen gepostet, allerdings
ist das nicht mehr verfügbar, weil WeTransfer nach sieben Tagen wieder
alles löscht...

Ich habe folgendes Skript verwendet (noch mit commit b8af1627); rechne
mit einer Ausführzeit von etwas mehr als einer Stunde.

  cat german.dic \
  | dos2unix \
  | iconv -f cp1252 -t utf8 \
  | perl entferne-dopplungen.pl .../wortliste/wortliste \
  | .../wortliste/skripte/python/edit_tools/abgleich_neueintraege.py \
  > german.dic.reduced

Das Skript »entferne-dopplungen.pl« ist angehängt; »german.dic«
findest Du hier:

  https://sourceforge.net/projects/germandict/files/german.7z/download


    Werner
-------------- nächster Teil --------------
#! /usr/bin/perl -w
#
# entferne-dopplungen.pl
#
# Dieses Perl-Skript entfernt alle Wörter, die bereits in einer Wortliste
# vorhanden sind, sowie zweibuchstabige Wörter.
#
# Es erwartet als erstes Argument eine Wortlistendatei im Langformat.  Die
# restlichen Argumente sind Dateien mit ungetrennten Wörtern (ein Wort pro
# Zeile); auch stdin kann verwendet werden.
#
# Die Eingabedaten brauchen nicht sortiert sein, und die Groß- und
# Kleinschreibung wird beim Test auf Vorhandensein ignoriert.
#
# Die Ausgabe erfolgt unsortiert auf stdout.

use strict;
use warnings;
use utf8;                              # String-Literals direkt als UTF-8.
use open qw(:std :utf8);
use feature 'unicode_strings';

my $prog = $0;
$prog =~ s at .*/@@;


my $wortlistendatei = shift;
if (!defined $wortlistendatei) {
  die "Aufruf:  $prog wortlistendatei [eingabedatei1 ...]\n";
}


my %wortliste;

open WORTLISTE, '<', $wortlistendatei
|| die "$prog: Kann Wortlistendatei `$wortlistendatei' nicht öffnen: $!\n";

while (<WORTLISTE>) {
  chop;

  # Entferne Leer- und Kommentarzeilen.
  next if (/^ \s* (?: \# | $)/x);

  # Entferne alles nach dem ersten Strichpunkt.
  s/;.*//;

  $wortliste{lc $_} = $_;
}

close WORTLISTE;


my %wörter;

while (<>) {
  chop;

  # Entferne Leerzeilen.
  next if (/^ \s* $/x);

  # Entferne Leerzeichen am Anfang und Ende.
  s/^ \s+ | \s+ $//gx;

  # Entferne zweibuchstabige Wörter.
  next if (/^..$/);

  $wörter{lc $_} = $_;
}


foreach my $schlüssel (keys %wörter) {
  print "$wörter{$schlüssel}\n" unless exists $wortliste{$schlüssel};
}

# eof


Mehr Informationen über die Mailingliste Trennmuster