MS Word files auf eigene Regeln überprüfen

Hallo,

Ich suche gerade nach eine einfachen Möglichkeit MS Word Dokumente basierend auf eignen selbst definierten regeln zu untersuchen.
Die Idee ist es nicht als Makro innerhalb nur eines Dokumentes (es soll auf mehrere angewendet werden können) und nicht als Plugin installiert werden müssen.

Dabei geht es um einfache regeln wie:

  • Vorgegebene Worte / Wortkombinationen sollen nicht genutzt werden
  • personal pronouns sollen nicht verwendet werden
  • Wird schreib Prüfung verwendet
  • Sind wort Kombination nach einem bestimmten format (DOC-REF-ID-XYZ) als Bookmark eingefügt
  • Sind wort kombination nach einem bestimmten format (PRJ-REF-ID-XYZ) zu einer tabelle eingefügt (Table of references)
  • Gibt es keine spezial Formate (nur vom default / template vorgegebene)

Als Resultat sollten Fundstellen mit comment versehen werden oder ein report angelegt werden mit den funden.

Gibt es sowas in diese Richtung?

Hallo,
also ich fände eine solche Funktion sehr nützlich Allerdings stelle ich mir das Formulieren der Regeln sehr schwierig (bis unmöglich) vor.

Ohne weit abzuschweifen: Für maschinenlesbare Dokumente (z.B. RDF oder JSON-LD) gibt es sogenannte Shape-Sprachen (z.B. SHACL oder ShEx), die im Prinzip das machen, was Du vorschlägst. Aber vorsichtig ausgedrückt sind das kein Tools für den Endanwender, sondern eher für Data Scientists und Programmierer.

Was Dir als Mensch so leicht fällt zu formulieren und zu überprüfen, setzt eine Unmenge an Formalismus und Semantik voraus, wenn Du das einer Maschine beibringen willst. Den Prüfungsplan effizient aus- und abzuarbeiten ist Gegenstand aktueller Forschung. Das wird wohl noch mal 20 Jahre dauern, bis so etwas beim Endanwender in halbwegs brauchbarer Form ankommt.

Naja - also ich habe das jetzt schon an mehreren Stellen gesehen wo sowas echt nützlich ist.
Und muss sagen das sowas auch nicht zu komplex sein muss: denn bei einfachen sachen können auch leihen sehr gut funktionale regeln erstellen - dazu muss aber die Basis da - schon vor entwickelt sein.

Wie gesagt, für ausgezeichnete Sprachen (RDF, JSON-LD, z.T. XML) gibt es SHACL. Du müßtest also „nur“ Deine Word-Datei in ein Metadaten-Dokument umwandeln, Shapes definieren und dann mit einer Shape-Engine überprüfen.

Der erste Punkt ist das, was schwierig und voller Formalismus ist. Für die Personalpronomen z.B. brauchst Du POS-Tagging, was eine NLP-Engine voraussetzt. Das Dokument geht vorab durch verschiedene Bearbeitungsschritte (Pre-processing), Language detection (welche Sprache wird analysiert, könnte man aus den Dokumenteigenschaften ablesen), Segmentation (Zusammengehörige Blöcke, z.B. Kapitel, Sektionen, Absätze, das ist bei Word z.T. fertig), Satzerkennung, eventuell NER (um zwischen Ente, dem Vogel, oder Ente, dem Spitznamen eines Automobils zu unterscheiden). Danach werden die Ergebnisse des POS-Tagging in einem Metadokument festgehalten, z.B. mittels OLiA (Ontology of Linguistic Annotation). Dann via Shape die Verwendung oder Vermeidung (z.B. durch Auslassung) nachzuweisen, ist wiederum einfach.

Für die Aufgabe mit den vorgegebenen Wörtern bietet sich N-Gram-Analyse an, aber auch hier bräuchte man für ein allgemeines Tool viel Pre-processing, mindestens wieder Spracherkennung, eventuell Segmentation und Satzerkennung sowie einen Stemmer. Für den Abgleich hilft ein einfaches Nachschlagen (z.B. Hash-Join).

Die restichen Punkte sind technischer Natur und durchaus einfach zu implementieren.

Wenn ich die Vorgabe jetzt umsetzen sollte, würde ich zu allererst versuchen, die Allgemeinheit des Tools einzuschränken (soll es z.B. Support (irgendwann) für Japanisch geben, wenn ja, alle Höflichkeitsformen?), dann würde ich klären, ob die Prüfung inkrementell/online erfolgen muß oder im Batch, wie viel Rechenleistung darf ich benutzen. Zur Erklärung: Inkrementell zu prüfen, zwingt mich viel Interna mitzuschleppen, das Metadokument wird laufend im Hintergrund umgeschrieben, so wie der Nutzer Wörter einfügt und wieder löscht. Diese Interna kann ich aber nicht in der Word-Datei abspeichern, sondern eventuell in einer eigenen Datei oder gar nicht. Ich muß also den Batch-Modus (das Dokument so wie es ist in ein Metadokument umschreiben) ohnehin programmieren.

Desweiteren kostet NLP Daten- und Rechenleistung, viel Datenleistung, wenn es gut sein soll. Ich selbst betreue eine Datenbank aller gelisteten Firmen, und das noch nichtmal speziell für NER-Zwecke (Named Entity Recognition), aber ich weiß, daß sie von NER-Diensten verwendet wird. Diese ist aktuell knapp 1.5 TB (on-disk) groß, nicht gerade tauglich für den Desktop-Einsatz. DBpedia, ein Abzug von Wikipedia mit semantischen Annotationen, ist knapp 800 GB (on-disk) und je nach Bereich, mußt Du noch hunderte anderer Datenbanken hinzufügen, nur um z.B. Ich (der Spitzname der Krankheit Ichthyophthirius multifiliis) von Ich (dem Personalpronomen) zu unterscheiden.

Wie Du schon festgestellt hast, irgendwas zum Laufen zu kriegen, ist nicht schwer. Aber auch nicht gerade gut. Lösungen sind bereits fertig, aber eben nicht für Endanwender-Software wie Word.