Sommerferien… ich habe Hunger, aber das will ich noch schnell schreiben.
Ich bin Fan von einem lokal installiertem Dict Server. Auf Englisch gibt es ja einige! Auf 2019-01-29 Dictionary habe ich Werbung für den Webster 1913 gemacht (”An American Dictionary of the English Language”). Aber was macht man auf Deutsch?
Hier mal ein erster Versuch, um aus dem OpenThesaurus.de Projekt einen lokalen Thesaurus zu erstellen.
Was folgt ist ein Makefile:
SHELL=/bin/bash help: @echo make Deutscher-Thesaurus oder make Schweizer-Thesaurus? install: @test -d /usr/share/dictd || echo "The directory /usr/share/dictd does not exist, where should the files go?" && exit sudo mv *.dict.dz *.index /usr/share/dictd/ sudo dictdconfig --write sudo systemctl restart dictd Deutscher-Thesaurus: Deutscher-Thesaurus.dict.dz Schweizer-Thesaurus: Schweizer-Thesaurus.dict.dz %.dict.dz: %.dict dictzip {body}lt; %.dict: %.jargon dictfmt --utf8 --allchars -j $(basename {body}lt; .dic) \ -u https://www.openthesaurus.de/about/download \ -s $(basename {body}lt; .dic) \ < {body}lt; %.jargon: %.dat perl open-thesaurus-to-jargon < {body}lt; > $@ %.dat: %.oxt unzip {body}lt; th_de_DE_v2.dat && mv th_de_DE_v2.dat $@ %.oxt: wget https://www.openthesaurus.de/export/$@
Das Programm open-thesaurus-to-jargon ist ein Perl Programm:
#!/usr/bin/env perl use Modern::Perl; use utf8; my $encoding = <STDIN>; binmode(STDIN, ":encoding($encoding)"); binmode(STDOUT, ":encoding(UTF-8)"); print << 'EOT'; Title: OpenThesaurus Edition: 1.0 OpenThesaurus ist ein freies deutsches Wörterbuch für Synonyme, bei dem jeder mitmachen kann. Die Wörter aus OpenThesaurus lassen sich hier in verschiedenen Formaten herunterladen. Sie stehen unter der Creative Commons Attribution-ShareAlike 4.0 oder GNU Lesser General Public License zur Verfügung (Sie können wählen, welche Lizenz für Sie gilt). Das bedeutet vereinfacht gesagt, dass die Daten kostenlos genutzt, verarbeitet, geändert und weiterverbreitet werden können, solange die weiterverbreiteten Daten ebenfalls für den User klar erkennbar unter der LGPL stehen und openthesaurus.de als Quelle verlinkt wird - https://creativecommons.org/licenses/by-sa/4.0/legalcode.de - http://creativecommons.org/licenses/LGPL/2.1/deed.de EOT my $count = 0; my $max = 0; my $headword = ''; while(<STDIN>) { chomp; if (/^-\|(.*)/) { $count++; warn "More definitions for $headword found than expected\n" if $count > $max; my @lines = split(/\|/, $1); say " $count. " . join("\n ", @lines); } elsif (/^([^|]*)\|(\d+)$/) { warn "Not enough definitions for $headword found\n" if $count < $max; $headword = $1; $max = $2; $count = 0; print "\n"; say ":$headword:"; say "$max Bedeutungen im OpenThesaurus für \"$headword\":" if $max > 1; say "Eine Bedeutung im OpenThesaurus für \"$headword\":" if $max == 1; } }
Nun kann man sich die .dict.dz und .index Dateien bauen:
$ make Schweizer-Thesaurus wget https://www.openthesaurus.de/export/Schweizer-Thesaurus.oxt --2023-07-19 15:18:05-- https://www.openthesaurus.de/export/Schweizer-Thesaurus.oxt Resolving www.openthesaurus.de (www.openthesaurus.de)... 116.203.71.126 Connecting to www.openthesaurus.de (www.openthesaurus.de)|116.203.71.126|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 12813845 (12M) [application/octet-stream] Saving to: ‘Schweizer-Thesaurus.oxt’ Schweizer-Thesaurus.oxt 100%[====================================================================>] 12.22M 9.54MB/s in 1.3s 2023-07-19 15:18:07 (9.54 MB/s) - ‘Schweizer-Thesaurus.oxt’ saved [12813845/12813845] unzip Schweizer-Thesaurus.oxt th_de_DE_v2.dat && mv th_de_DE_v2.dat Schweizer-Thesaurus.dat Archive: Schweizer-Thesaurus.oxt inflating: th_de_DE_v2.dat perl open-thesaurus-to-jargon < Schweizer-Thesaurus.dat > Schweizer-Thesaurus.jargon dictfmt --utf8 --allchars -j Schweizer-Thesaurus \ -u https://www.openthesaurus.de/about/download \ -s Schweizer-Thesaurus \ < Schweizer-Thesaurus.jargon 159971 headwords dictzip Schweizer-Thesaurus.dict rm Schweizer-Thesaurus.dat Schweizer-Thesaurus.oxt Schweizer-Thesaurus.jargon
Sollte sich der Speicherort der Datei einmal ändern, oder der Name der Datei im .oxt Archiv, dann muss man das entsprechend anpassen.
Installation:
$ make install sudo mv *.dict.dz *.index /usr/share/dictd/ sudo dictdconfig --write sudo systemctl restart dictd
Verwendung:
$ dict -d Schweizer-Thesaurus "cliffhanger" 1 definition found From Schweizer-Thesaurus [Schweizer-Thesaurus]: cliffhanger Eine Bedeutung im OpenThesaurus für "cliffhanger": 1. Cliffhanger (Jargon, engl.) Handlungsunterbrechung an der spannendsten Stelle aufhören, wenn es (gerade) am spannendsten ist (ugs.)
Funktioniert!
#Dict #Deutsch
(Please contact me if you want to remove your comment.)
⁂
Danke, das ist nett! Ein kleiner Ärger aber ist, dass es wiederholt Entragen hat, z.B. 5 Eintragen für “denken”.
– 2023-07-20 06:40 UTC
---
Das ist richtig, aber es scheint im Original auch so zu sein. Leider.
– Alex 2023-07-20 07:37 UTC