Neustrukturierung der Python Skripte als Paket.
[wortliste.git] / skripte / python / spell / spellcheck.py
blobd43d7c23a4efde6766e2f96980f65e3cb81d3d77
1 #!/usr/bin/env python
2 # -*- coding: utf8 -*-
3 # :Copyright: © 2014 Günter Milde.
4 # Released without warranty under the terms of the
5 # GNU General Public License (v. 2 or later)
6 # :Id: $Id: $
8 # "Korporavergleich (Wortliste vs. diverse Rechtschreibprüfprogramme)
9 # ===================================================================
11 # Liste Differenz der Stichproben in der "wortliste" und dem "Dumping" von
12 # aspell/hunspell.
14 # ::
16 import re, sys, codecs, copy
17 from wortliste import WordFile, WordEntry, join_word, udiff
18 # from abgleich_teilwoerter import wortliste_to_teilwoerter
20 # Konfiguration
21 # -------------
23 # Sprachvarianten
24 # ~~~~~~~~~~~~~~~
25 # Sprach-Tag nach [BCP47]_::
27 # sprachvariante = 'de-1901' # "traditionell"
28 sprachvariante = 'de-1996' # Reformschreibung
29 # sprachvariante = 'de-1901-x-GROSS' # ohne ß (Schweiz oder GROSS)
30 # sprachvariante = 'de-1996-x-GROSS' # ohne ß (Schweiz oder GROSS)
31 # sprachvariante = 'de-CH-1901' # ohne ß (Schweiz) ("süssauer")
33 # Vergleichsbasis
34 # ~~~~~~~~~~~~~~~
36 # ::
38 spelldatei = '../../spell/aspell-de-1996-compact'
40 korrekturdatei = '../../spell/korrekturen'
42 # Funktionen
43 # -----------
44 # ::
46 if __name__ == '__main__':
48 # sys.stdout mit UTF8 encoding.
49 sys.stdout = codecs.getwriter('UTF-8')(sys.stdout)
51 # `Wortliste` einlesen::
53 wordfile = WordFile('../../wortliste')
54 words = wordfile.asdict()
56 # Korrekturen einlesen::
58 korrekturen = []
59 for line in open(korrekturdatei, 'r'):
60 if not line.startswith('-'):
61 continue
62 # Dekodieren, Zeilenende entfernen
63 line = line.decode('utf8')
64 korrekturen.append(line[1:].strip())
66 # Vergleichswörter einlesen::
68 for line in open(spelldatei, 'r'):
69 # if line.startswith('#'):
70 # continue
71 # Dekodieren, Zeilenende entfernen
72 line = line.decode('utf8').strip()
73 # Tags entfernen (bei "-compact")
74 key = line.split(u'/')[0]
76 # kurze Wörter haben wir nicht:
77 if len(key) < 4:
78 continue
80 # Ausgabe "neuer" Wörter::
82 if (key not in words
83 and key.lower() not in words
84 and key.title() not in words
85 and key not in korrekturen
87 print key