Komplexe Aufzählungen¶

#SchrifttumsLinguistik¶

Das Schrifttum, insbesondere Gesetzestext, ist voll von komplexen Aufzählungen. Am Beispiel (Bsp) von § 119 III UrhG werden hier ein paar Probleme andiskutiert.

In [1]:
import cbtc_Pipe as Pipe  # Diese Zeile lädt ein von mir entwickeltes regelbasiertes Sprachmodell. (Es kommt keinerlei maschinelles Lernen vor).
from pprint import pp as pprint  # zur besseren Lesbarkeit 

Bsp = "Die Absätze 1 und 2 sind auf die nach den §§ 70 und 71 geschützten Ausgaben, die nach § 72 geschützten Lichtbilder, die nach § 77 Abs. 2 Satz 1, §§ 85, 87, 94 und 95 geschützten Bild- und Tonträger \
und die nach § 87b Abs. 1 geschützten Datenbanken entsprechend anzuwenden."

Vereinfacht könnte man diesen Satz als "<Aufzählung_1> ist auf <Aufzählung_2> entsprechend anzuwenden." schreiben. (Numerus vom finiten Teil der Verbphrase (VP) angepasst ("ist anzuwenden" statt "sind anzuwenden")). Das Adjektiv "entsprechend" gehört nicht direkt zur VP, sondern ist adverbiales Adjektiv (AdjA) der VP.

In diesem Satz ist <Aufzählung_1> das NominativObjekt (NO) der VP und <Aufzählung_2> ist ein PräpositionalObjekt (PO), wobei die Präposition "auf" eine 'stehende Phrase' mit dem Vollverb der Verbphrase ("anwenden") bildet ("anwenden auf"), daher kann es als verbgebundenes PO (POV) bezeichnet werden.

Im Bsp enthalten aber die Aufzählungselemente von <Aufzählung_2> teilweise wieder Aufzählungen (["den §§ 70 und 71", "§ 77 Abs. 2 Satz 1, §§ 85, 87, 94 und 95", "Bild- und Tonträger"]).

Alle Kommata im Bsp sind also Aufzählungskommata ("\$,,") und keine Verbphrasenkommata ("\$,"). Auch werden alle Konnektoren (KONN) ("und") durch die Aufzählungen 'verbraucht' und konnektieren daher also keine Verbphrasen (diese werden daher als "KONN-" getäggt).

Alle Elemente von <Aufzählung_2> haben den gleichen Aufbau, "<die|ARTB> <nach|APRR> <P$PPK> <geschützten|ADJPP> <NN>".
Dabei wird durch den bestimmten Artikel (ARTB) eine Nominalphrase (NP) 'geöffnet', in die eine präpositionale Ergänzung (PE) eingebettet ist ("nach <Paragrahpenkette>" (\$PPK, hier aber durch Präposition gebunden, daher P\$PPK)). Das "nach" als Präposition der PE bindet dabei an das ADJPP ("geschützt nach") der NP (daher "PEAdj") und beantwortet die für Juristen so wichtige Frage nach der Rechtsgrundlage. Angemerkt sei nochmal ausdrücklich, dass alle "die" im Satz bestimmte Artikel sind, die zur restlichen NP (<ADJPP> <NN>) gehören und somit keine Pronomen sind (im Gegensatz zum "die" nach dem letzten Komma in diesem Satz).

Ein Sprachmodell sollte alle diese Abhängigkeiten und Beziehungen abbilden können.

In [2]:
Erg = Pipe.analysiere(Bsp, default_GVO="UrhG")  # Das Bsp durch das Sprachmodell analysieren lassen, als zusätzliches Argument wird das Gesetzeskürzel ("UrhG") hier mit an die Funktion übergeben, dazu später mehr.
In [3]:
print('VP:\t', "sind anzuwenden")  # Der erhöhten Lesbarkeit wegen hier explizit angegeben
for k, v in Erg['Objekte']['VP_0'].items():  # Code zum Ausgeben der Objekte der ersten VP (VP_0) (hier auch die einzige VP im Satz) mit erhöhter Lesbarkeit der Ausgabe (dafür mit schwer leserlicher Eingabe)
    if not isinstance(v[0], list):
        print("%s:\t %s" % (k, Pipe.Chunker.bilde_Text_aus_Lexemen(v)))
    else:
        print("%s:\t %s" % (k, [Pipe.Chunker.bilde_Text_aus_Lexemen(e) for e in v]))
VP:	 sind anzuwenden
AdjA:	 entsprechend
NO:	 Die Absätze 1 und 2
POV:	 ['auf die geschützten Ausgaben', 'die geschützten Lichtbilder', 'die geschützten Bild- und Tonträger', 'die geschützten Datenbanken']

Wie man dieser vereinfachten Ausgabe entnehmen kann, wurde der Hauptstruktur des Satzes richtig analysiert (Die "[ ]" symbolisieren eine Liste, deren Elemente die Hauptelemente der <Aufzählung_2> sind).

Es wurden aber auch die Paragraphenketten richtig erkannt und verarbeitet:

In [4]:
Erg['Absätze'][0]['PPKn']  # Die genannten Paragraphenketten, hier wird das an die Analysefunktion übergegbene "UrhG" genutzt, da Verweise innerhalb eines Gesetzes ohne Nennung des Gesetzes stehen.
# Die $PPK_0 fehlt hier, da diese nicht vollständig im Satz steht, da nur III des § 119 UrhG hier als Beispiel genutzt wird. Wird das gesamte Gesetz analysiert, erkennt die Funktion das es sich um eine Referenz auf I & II des § 119 UrhG handelt.
# Diese Strings sollten als Keywords in eine Datenbank (bspw. ein Elasticsearch), daher ohne "§" und mit allen höheren Ebenen einzeln: 
# Genannt wurde nur "77 II 1", es sollte dann aber auch "77 II" und "77" in den Index, damit beim Suchen nach bspw. Referenzen auf "77 II" auch dieser Satz gefunden wird (obwohl die Referenz noch eine Ebene tiefer geht und auch den Satz nennt).
Out[4]:
['70 II UrhG',
 '70 UrhG',
 '71 UrhG',
 '72 UrhG',
 '77 II 1 UrhG',
 '77 II UrhG',
 '77 UrhG',
 '85 UrhG',
 '87 UrhG',
 '94 UrhG',
 '95 UrhG',
 '87b I UrhG',
 '87b UrhG']

Als Referenz folgt noch das komplexe Analyseergebnis, dabei gibt es folgende Spalten:
Num = Nummerierung der Token (Textschnipsel)
sNum = Nummerierung der Sätze (hier nur ein einziger Satz, daher immer 0 (Computer fangen das zählen nicht bei 1, sondern bei 0 an))
Lex = Lexem (der Text des Schnipsels wie er im Satz vorkam. Die 'Oberflächenform')
Lem = Lemma (die Grundform des Schnipseltextes, verbessert den Index und erleichtert damit das Suchen.)
pTag = Part-of-Speech Täg (die Wortklasse des Token, angelehnt an das STTS (Stuttgart Tübingen Täg Set))
cTag = Chunktäg (Elemente eine Satzgliedes tragen den selben cTag, aber auch Elemente einer Paragraphenkette)
sR = syntaktische Relation

Hinweise:

  • Die Spalten von oben nach unten lesen.
  • Das Lemma von "Bild-" ist "Bildträger", denn zum Lemma gehört der Kopf, der bei Komposita aber häufig nur durch ein "-" symbolisiert wird.
  • Innerhalb der () im sR-Key steht der Bezug: "NO(VP_0)" ist also das NominativObjekt der VP_0. Bei den PEAdj steht dort t_, dies ist zu lesen als: Bezug ist der Token mit der "Num" . Der Chunk P$PPK_1 bezieht sich also auf Token 14.
  • Nach der ersten "==" Zeile folgt nochmals eine komplexere Ausgabe, von dem was von "In [3]" geprintet wurde.
In [5]:
print(Erg)
Num:   0  sNum:  0  Lex: Die                        Lem: d                               pTag: ARTB+                cTag: $PPK_0           sR: {'NO(VP_0)'}                      
Num:   1  sNum:  0  Lex: Absätze                    Lem: Absatz                          pTag: $P                   cTag: $PPK_0           sR: {'NO(VP_0)'}                      
Num:   2  sNum:  0  Lex: 1                          Lem:                                 pTag: CARD                 cTag: $PPK_0           sR: {'NO(VP_0)'}                      
Num:   3  sNum:  0  Lex: und                        Lem: und                             pTag: KONN                 cTag: $PPK_0           sR: {'NO(VP_0)'}                      
Num:   4  sNum:  0  Lex: 2                          Lem:                                 pTag: CARD                 cTag: $PPK_0           sR: {'NO(VP_0)'}                      
Num:   5  sNum:  0  Lex: sind                       Lem: sein                            pTag: VAFIN                cTag: VP_0             sR: set()                             
Num:   6  sNum:  0  Lex: auf                        Lem: auf                             pTag: APPR                 cTag: PP_1             sR: {'POV(VP_0)'}                     
Num:   7  sNum:  0  Lex: die                        Lem: d                               pTag: ARTB                 cTag: PNP_39_0|AZ      sR: {'POV(VP_0)'}                     
Num:   8  sNum:  0  Lex: nach                       Lem: nach                            pTag: APPR                 cTag: PP_2             sR: {'PEAdj(t_14)'}                   
Num:   9  sNum:  0  Lex: den                        Lem: d                               pTag: ARTB                 cTag: P$PPK_1          sR: {'PEAdj(t_14)'}                   
Num:  10  sNum:  0  Lex: §§                         Lem:                                 pTag: $P                   cTag: P$PPK_1          sR: {'PEAdj(t_14)'}                   
Num:  11  sNum:  0  Lex: 70                         Lem:                                 pTag: CARD                 cTag: P$PPK_1          sR: {'PEAdj(t_14)'}                   
Num:  12  sNum:  0  Lex: und                        Lem: und                             pTag: KONN                 cTag: P$PPK_1          sR: {'PEAdj(t_14)'}                   
Num:  13  sNum:  0  Lex: 71                         Lem:                                 pTag: CARD                 cTag: P$PPK_1          sR: {'PEAdj(t_14)'}                   
Num:  14  sNum:  0  Lex: geschützten                Lem: geschützt                       pTag: ADJPP                cTag: PNP_39_0|AZ      sR: {'POV(VP_0)'}                     
Num:  15  sNum:  0  Lex: Ausgaben                   Lem: Ausgabe                         pTag: NN                   cTag: PNP_39_0|AZ      sR: {'POV(VP_0)'}                     
Num:  16  sNum:  0  Lex: ,                          Lem:                                 pTag: $,,                  cTag: $,,              sR: set()                             
Num:  17  sNum:  0  Lex: die                        Lem: d                               pTag: ARTB                 cTag: PNP_39_1|AZ      sR: {'POV(VP_0)'}                     
Num:  18  sNum:  0  Lex: nach                       Lem: nach                            pTag: APPR                 cTag: PP_3             sR: {'PEAdj(t_21)'}                   
Num:  19  sNum:  0  Lex: §                          Lem:                                 pTag: $P                   cTag: P$PPK_2          sR: {'PEAdj(t_21)'}                   
Num:  20  sNum:  0  Lex: 72                         Lem:                                 pTag: CARD                 cTag: P$PPK_2          sR: {'PEAdj(t_21)'}                   
Num:  21  sNum:  0  Lex: geschützten                Lem: geschützt                       pTag: ADJPP                cTag: PNP_39_1|AZ      sR: {'POV(VP_0)'}                     
Num:  22  sNum:  0  Lex: Lichtbilder                Lem: Lichtbild                       pTag: NN                   cTag: PNP_39_1|AZ      sR: {'POV(VP_0)'}                     
Num:  23  sNum:  0  Lex: ,                          Lem:                                 pTag: $,,                  cTag: $,,              sR: set()                             
Num:  24  sNum:  0  Lex: die                        Lem: d                               pTag: ARTB                 cTag: PNP_39+85_3|AZ   sR: {'POV(VP_0)'}                     
Num:  25  sNum:  0  Lex: nach                       Lem: nach                            pTag: APPR                 cTag: PP_4             sR: {'PEAdj(t_41)'}                   
Num:  26  sNum:  0  Lex: §                          Lem:                                 pTag: $P                   cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  27  sNum:  0  Lex: 77                         Lem:                                 pTag: CARD                 cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  28  sNum:  0  Lex: Abs.                       Lem:                                 pTag: $P                   cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  29  sNum:  0  Lex: 2                          Lem:                                 pTag: CARD                 cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  30  sNum:  0  Lex: Satz                       Lem: Satz                            pTag: $P                   cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  31  sNum:  0  Lex: 1                          Lem:                                 pTag: CARD                 cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  32  sNum:  0  Lex: ,                          Lem:                                 pTag: $,                   cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  33  sNum:  0  Lex: §§                         Lem:                                 pTag: $P                   cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  34  sNum:  0  Lex: 85                         Lem:                                 pTag: CARD                 cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  35  sNum:  0  Lex: ,                          Lem:                                 pTag: $,                   cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  36  sNum:  0  Lex: 87                         Lem:                                 pTag: CARD                 cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  37  sNum:  0  Lex: ,                          Lem:                                 pTag: $,                   cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  38  sNum:  0  Lex: 94                         Lem:                                 pTag: CARD                 cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  39  sNum:  0  Lex: und                        Lem: und                             pTag: KONN                 cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  40  sNum:  0  Lex: 95                         Lem:                                 pTag: CARD                 cTag: P$PPK_3          sR: {'PEAdj(t_41)'}                   
Num:  41  sNum:  0  Lex: geschützten                Lem: geschützt                       pTag: ADJPP                cTag: PNP_39+85_3|AZ   sR: {'POV(VP_0)'}                     
Num:  42  sNum:  0  Lex: Bild-                      Lem: Bildträger                      pTag: NN-                  cTag: PNP_39+85_3|AZ   sR: {'POV(VP_0)'}                     
Num:  43  sNum:  0  Lex: und                        Lem: und                             pTag: KONN-                cTag: PNP_39+85_3|AZ   sR: {'POV(VP_0)'}                     
Num:  44  sNum:  0  Lex: Tonträger                  Lem: Tonträger                       pTag: NN                   cTag: PNP_39+85_3|AZ   sR: {'POV(VP_0)'}                     
Num:  45  sNum:  0  Lex: und                        Lem: und                             pTag: KONN-                cTag: KONN|AZ          sR: set()                             
Num:  46  sNum:  0  Lex: die                        Lem: d                               pTag: ARTB                 cTag: PNP_39_4|AZ      sR: {'POV(VP_0)'}                     
Num:  47  sNum:  0  Lex: nach                       Lem: nach                            pTag: APPR                 cTag: PP_5             sR: {'PEAdj(t_52)'}                   
Num:  48  sNum:  0  Lex: §                          Lem:                                 pTag: $P                   cTag: P$PPK_4          sR: {'PEAdj(t_52)'}                   
Num:  49  sNum:  0  Lex: 87b                        Lem: 87b                             pTag: CARDBK               cTag: P$PPK_4          sR: {'PEAdj(t_52)'}                   
Num:  50  sNum:  0  Lex: Abs.                       Lem:                                 pTag: $P                   cTag: P$PPK_4          sR: {'PEAdj(t_52)'}                   
Num:  51  sNum:  0  Lex: 1                          Lem:                                 pTag: CARD                 cTag: P$PPK_4          sR: {'PEAdj(t_52)'}                   
Num:  52  sNum:  0  Lex: geschützten                Lem: geschützt                       pTag: ADJPP                cTag: PNP_39_4|AZ      sR: {'POV(VP_0)'}                     
Num:  53  sNum:  0  Lex: Datenbanken                Lem: Datenbank                       pTag: NN                   cTag: PNP_39_4|AZ      sR: {'POV(VP_0)'}                     
Num:  54  sNum:  0  Lex: entsprechend               Lem: entsprechend                    pTag: ADJPP                cTag: AP_0             sR: {'AdjA(VP_0)'}                    
Num:  55  sNum:  0  Lex: anzuwenden                 Lem: anwenden                        pTag: VVIZU                cTag: VP_0             sR: set()                             
Num:  56  sNum:  0  Lex: .                          Lem:                                 pTag: $.                   cTag: $.               sR: set()                             
========================================================================================================================================================================================================
Num:   5  sNum:  0  Lex: sind                       Lem: sein                            pTag: VAFIN                cTag: VP_0             sR: set()                             
Num:  55  sNum:  0  Lex: anzuwenden                 Lem: anwenden                        pTag: VVIZU                cTag: VP_0             sR: set()                             
----------------------------------------------------------------------------------------------------
{'AdjA': [{'Lexem': 'entsprechend', 'Span': (248, 260), 'Num': 54, 'pTag': 'ADJPP', 'Lemma': ['entsprechend'], 'Flex': {'P--'}, 'sNum': 0, 'cTag': 'AP_0', 'sR': {'AdjA(VP_0)'}}],
 'NO': [{'Lexem': 'Die', 'Span': (0, 3), 'Num': 0, 'pTag': 'ARTB+', 'Lemma': ['d'], 'cTag': '$PPK_0', 'sNum': 0, 'Flex': {'NSF', 'NPM', 'NPN', 'NPF'}, 'sR': {'NO(VP_0)'}},
        {'Lexem': 'Absätze', 'Span': (4, 11), 'Num': 1, 'pTag': '$P', 'cTag': '$PPK_0', 'Lemma': ['Absatz'], 'sNum': 0, 'Flex': {'NSM'}, 'sR': {'NO(VP_0)'}},
        {'Lexem': '1', 'Span': (12, 13), 'Num': 2, 'pTag': 'CARD', 'cTag': '$PPK_0', 'sNum': 0, 'sR': {'NO(VP_0)'}},
        {'Lexem': 'und', 'Span': (14, 17), 'Num': 3, 'pTag': 'KONN', 'Lemma': ['und'], 'cTag': '$PPK_0', 'sNum': 0, 'sR': {'NO(VP_0)'}},
        {'Lexem': '2', 'Span': (18, 19), 'Num': 4, 'pTag': 'CARD', 'cTag': '$PPK_0', 'sNum': 0, 'sR': {'NO(VP_0)'}}],
 'POV': [[{'Lexem': 'auf', 'Span': (25, 28), 'Num': 6, 'pTag': 'APPR', 'cTag': 'PP_1', 'Lemma': ['auf'], 'sNum': 0, 'Flex': {'APF'}, 'sR': {'POV(VP_0)'}},
          {'Lexem': 'die', 'Span': (29, 32), 'Num': 7, 'pTag': 'ARTB', 'Lemma': ['d'], 'sNum': 0, 'Flex': {'APF'}, 'cTag': 'PNP_39_0|AZ', 'sR': {'POV(VP_0)'}},
          {'Lexem': 'geschützten', 'Span': (55, 66), 'Num': 14, 'pTag': 'ADJPP', 'cTag': 'PNP_39_0|AZ', 'Flex': {'APFw'}, 'Lemma': ['geschützt'], 'sNum': 0, 'sR': {'POV(VP_0)'}},
          {'Lexem': 'Ausgaben', 'Span': (67, 75), 'Num': 15, 'pTag': 'NN', 'cTag': 'PNP_39_0|AZ', 'Lemma': ['Ausgabe'], 'sNum': 0, 'Flex': {'APF'}, 'sR': {'POV(VP_0)'}}],
         [{'Lexem': 'die', 'Span': (77, 80), 'Num': 17, 'pTag': 'ARTB', 'sNum': 0, 'Flex': {'APN', 'NPN'}, 'cTag': 'PNP_39_1|AZ', 'Lemma': ['d'], 'sR': {'POV(VP_0)'}},
          {'Lexem': 'geschützten', 'Span': (91, 102), 'Num': 21, 'pTag': 'ADJPP', 'cTag': 'PNP_39_1|AZ', 'Flex': {'APNw', 'NPNw'}, 'Lemma': ['geschützt'], 'sNum': 0, 'sR': {'POV(VP_0)'}},
          {'Lexem': 'Lichtbilder', 'Span': (103, 114), 'Num': 22, 'pTag': 'NN', 'cTag': 'PNP_39_1|AZ', 'Lemma': ['Lichtbild'], 'sNum': 0, 'Flex': {'APN', 'NPN'}, 'sR': {'POV(VP_0)'}}],
         [{'Lexem': 'die', 'Span': (116, 119), 'Num': 24, 'pTag': 'ARTB', 'sNum': 0, 'Flex': {'NPM', 'NPN', 'APF', 'APM', 'APN', 'NPF'}, 'cTag': 'PNP_39+85_3|AZ', 'Lemma': ['d'], 'sR': {'POV(VP_0)'}},
          {'Lexem': 'geschützten', 'Span': (166, 177), 'Num': 41, 'pTag': 'ADJPP', 'cTag': 'PNP_39+85_3|AZ', 'Flex': {'NPFw', 'APFw', 'APMw', 'NPMw', 'APNw', 'NPNw'}, 'Lemma': ['geschützt'], 'sNum': 0, 'sR': {'POV(VP_0)'}},
          {'Lexem': 'Bild-', 'Span': (178, 183), 'Num': 42, 'pTag': 'NN-', 'cTag': 'PNP_39+85_3|AZ', 'Lemma': ['Bildträger'], 'sNum': 0, 'Flex': {'NPM', 'NPN', 'APF', 'APM', 'APN', 'NPF'}, 'sR': {'POV(VP_0)'}},
          {'Lexem': 'und', 'Span': (184, 187), 'Num': 43, 'pTag': 'KONN-', 'Lemma': ['und'], 'cTag': 'PNP_39+85_3|AZ', 'sNum': 0, 'sR': {'POV(VP_0)'}},
          {'Lexem': 'Tonträger', 'Span': (188, 197), 'Num': 44, 'pTag': 'NN', 'cTag': 'PNP_39+85_3|AZ', 'Lemma': ['Tonträger'], 'sNum': 0, 'Flex': {'NPM', 'ASM', 'GPM', 'DSM', 'APM', 'NSM'}, 'sR': {'POV(VP_0)'}}],
         [{'Lexem': 'die', 'Span': (202, 205), 'Num': 46, 'pTag': 'ARTB', 'sNum': 0, 'Flex': {'NPF', 'APF'}, 'cTag': 'PNP_39_4|AZ', 'Lemma': ['d'], 'sR': {'POV(VP_0)'}},
          {'Lexem': 'geschützten', 'Span': (224, 235), 'Num': 52, 'pTag': 'ADJPP', 'cTag': 'PNP_39_4|AZ', 'Flex': {'NPFw', 'APFw'}, 'Lemma': ['geschützt'], 'sNum': 0, 'sR': {'POV(VP_0)'}},
          {'Lexem': 'Datenbanken', 'Span': (236, 247), 'Num': 53, 'pTag': 'NN', 'cTag': 'PNP_39_4|AZ', 'Lemma': ['Datenbank'], 'sNum': 0, 'Flex': {'NPF', 'APF'}, 'sR': {'POV(VP_0)'}}]]}
========================================================================================================================================================================================================

Sie haben Fragen, Anmerkungen oder Kritik? Oder Sie brauchen Unterstützung bei komplexen Textanalysen? Zögern Sie nicht und kontaktieren Sie mich!