Einfache Terminologieprüfung

Ich suche nach einem einfachen Tool, das Text anhand einer Ersetzungsliste auf Terminologie überprüft.

Beispiel für eine Ersetzungsdefinition:

  • erlaubt: Anwendung
  • unzulässig: App; überlegen: Anwendung
  • unzulässig: Programm; überlegen: Anwendung
  • erlaubt: Bonusprogramm
  • nicht erlaubt: Bounty-Programm; Beachten Sie: Bonusprogramm

Beispieltext:

Unsere App unterstützt das Prämienprogramm.

Ergebnisse:

Fehler: App-
Fehler: Kopfgeldprogramm

Textvorschlag:

Unsere Anwendung unterstützt das Bonusprogramm.

Nicht-Finden:

Fehler: Programm

Beachten Sie, dass die Software längere Laufzeiten über kurze Laufzeiten berücksichtigen muss, da es sonst zu viele Fehlalarme geben würde.

Anforderungen:

  • Einfache Bearbeitung der Ersatzliste mit kostenlosen Tools oder Microsoft Office
  • maschinenlesbares Format der Ersatzliste, damit wir Tools schreiben können, die den Workflow unterstützen
  • unter Windows laufen
  • ist kostenlos / Open Source
  • findet Fehler wie oben beschrieben
  • farbliche Hervorhebung
    • rot: Fehler
    • grün: anerkannter Begriff
    • Ich suche nach einer Art Bericht, nicht nach einer Änderung der Originaldatei. Es kann sich um einen temporären Bericht handeln, der auf dem Bildschirm angezeigt wird. Es muss nicht gespart werden.
  • macht Vorschläge wie oben beschrieben
  • Wenn mehrere Vorschläge zutreffen, lassen Sie den Benutzer auswählen, welchen er nehmen möchte

Ich habe bereits versucht:

  • TermXAct (deutsch), aber a) es ist kommerziell und b) bevorzugt keine langen Laufzeiten gegenüber kurzen und c) ist nicht funktionskomplett
„Farbhervorhebung“ – Fordern Sie ein Ausgabedokument (einen Bericht) mit dieser Hervorhebung an oder soll das Originaldokument geändert werden, um diese Hervorhebung zu verwenden?
@Kodiologe: Danke für die Frage. Ich suche eine Art Bericht. Es kann sich um einen temporären Bericht handeln, der auf dem Bildschirm angezeigt wird. Es muss nicht gespart werden.

Antworten (1)

So geht's in Python 3. Dieses Programm hat alle geforderten Features außer der Farbhervorhebung, weil die Win32-Konsole erst ab dem Threshold 2 Update für Windows 10 Farbe unterstützt. Der größte Teil der Komplexität des Programms liegt in der Fallbearbeitung von mehreren Vorschlägen.

 import sys, re, collections

 context_size = 30

 defs_path, doc_path = sys.argv[1:]

 defs = collections.defaultdict(list)
 with open(defs_path, 'rt') as o:
     for l in o:
         bad, _, good = l.strip().partition(' -> ')
         defs[bad].append(good)

 with open(doc_path, 'rt') as o:
     doc = o.read()

 def replacement_f(m):
     print('\nerror:', m.group())
     candidates = defs[m.group()]
     if len(candidates) == 1:
         print('Replacing with:', candidates[0])
         return candidates[0]
     print('There are multiple possible replacements.')
     print('Context:', re.sub(r'\s+', ' ', doc[
         max(m.start() - context_size, 0) :
         min(m.start() + context_size, len(doc))]))
     print('Candidates:', dict(enumerate(candidates)))
     while True:
        n = input('Enter a number: ')
        if n.isdigit() and int(n) < len(candidates):
            return candidates[int(n)]
 doc = re.sub(
     '|'.join(re.escape(bad) for bad in
         sorted(defs.keys(), key = len, reverse = True)),
     replacement_f,
     doc)

 print('\nResult:\n')
 print(doc)

Angenommen, Sie haben eine Datei defs.txtwie diese:

app -> application
program -> application
bounty program -> bonus program
supports -> can use
supports -> has support for

und eine Datei input.txtwie diese:

Our app supports the bounty program.

Wenn das Python-Programm den Namen script.pyträgt, können Sie es mit dem folgenden Befehl ausführen:

python3 script.py defs.txt input.txt

Das Ergebnis sieht so aus:

error: app
Replacing with: application

error: supports
There are multiple possible replacements.
Context: Our app supports the bounty program. 
Candidates: {0: 'can use', 1: 'has support for'}
Enter a number: 0

error: bounty program
Replacing with: bonus program

Result:

Our application can use the bonus program.
Wow, ich wusste, dass es nicht so schwer zu implementieren ist, aber ich bin überrascht, wie kurz es tatsächlich sein kann. Ich bin die nächsten 3 Tage im Training. Ich werde die Lösung ausprobieren, wenn ich wieder im Büro bin,