In [1]:
import cbtc_Pipe as Pipe  # eine von Kristall c-base Berlin entwickelte Software zur Analyse deutscher Texte.
from pprint import pp as pprint
from pprint import pp
w=300

from brat_widget import BratWidget
from brat_widget.cbtc_utils import cbtc_to_brat
In [2]:
Satz_1 = "Die nach § 20 Abs. 2 Nr. 1 gespeicherten Daten dürfen zur Erfüllung aller Zwecke des Verfassungsschutzes genutzt und übermittelt werden."
In [3]:
Erg_1 = Pipe.analysiere(Satz_1) # Erg ist Analyse-Erg-ebnis

Enthält Satz_1 eine oder zwei Verbphrasen (VP)? Und können beide Antworten gleichzeitig wahr sein oder handelt es sich um ein exklusives Oder?

Nehmen wir zuerst einmal an, es handele sich um zwei VP die durch das 'und' konnektiert sind. Da müssten sich beide VP sich Hilfs- (VA) und Modelverb (VM) teilen.

Aus diesem Grund wird der Konnektor 'und' Teil der VP_0, damit in der weiteren Analyse klar wird, das die konnektierten Verbphrasen sich VA und/oder VM teilen. Dies findet relativ früh in der Analyse statt.

In [4]:
for VP in Erg_1['Verbphrasen']:
    print(VP)
    pp(Erg_1['Verbphrasen'][VP]['Phrase'], width=300)
    print("===="* 50)
VP_0
[{'Lexem': 'dürfen', 'Span': (47, 53), 'Num': 10, 'pTag': 'VMFIN', 'Lemma': ['dürfen'], 'cTag': 'VP_0', 'sNum': 0, 'Flex': {'3PGKM', '3PGIM'}, 'sR': set()},
 {'Lexem': 'genutzt', 'Span': (105, 112), 'Num': 17, 'pTag': 'VVPP', 'Lemma': ['nutzen'], 'Flex': {'--P-I'}, 'cTag': 'VP_0', 'sNum': 0, 'sR': set()},
 {'Lexem': 'und', 'Span': (113, 116), 'Num': 18, 'pTag': 'KONN', 'Lemma': ['und'], 'cTag': 'VP_0', 'sNum': 0, 'sR': set()}]
========================================================================================================================================================================================================
VP_1
[{'Lexem': 'übermittelt', 'Span': (117, 128), 'Num': 19, 'pTag': 'VVPP', 'Lemma': ['übermitteln'], 'Flex': {'--P-I'}, 'cTag': 'VP_1', 'sNum': 0, 'sR': set()},
 {'Lexem': 'werden', 'Span': (129, 135), 'Num': 20, 'pTag': 'VAINF', 'Lemma': ['werden'], 'cTag': 'VP_1', 'sNum': 0, 'Flex': {'----I'}, 'sR': set()}]
========================================================================================================================================================================================================

Die sich gemeinsamen Teile der VP werden aber nicht direkt in der VP annotiert, sondern sind Teil der Syntaxanalyse, welche relativ spät in der Analyse stattfindet. Daher stehen diese in den Objekten und nicht den Verbprhasen.

In [6]:
for VP in Erg_1['Objekte']:
    print(VP)
    pp(Erg_1['Objekte'][VP]['Konn'], width=w)
VP_0
[{'Lexem': 'werden', 'Span': (129, 135), 'Num': 20, 'pTag': 'VAINF', 'Lemma': ['werden'], 'cTag': 'VP_1', 'sNum': 0, 'Flex': {'----I'}, 'sR': set()}]
VP_1
[{'Lexem': 'dürfen', 'Span': (47, 53), 'Num': 10, 'pTag': 'VMFIN', 'Lemma': ['dürfen'], 'cTag': 'VP_0', 'sNum': 0, 'Flex': {'3PGKM', '3PGIM'}, 'sR': set()}]

In der VP_0 muss also 'werden' ergänzt werden und in der VP_1 muss 'dürfen' ergänzt werden. Satz_1 enthielte demnach die (modifizierte) VP_0 "dürfen genutzt werden" und die (modifizierte) VP_1 "dürfen übermittelt werden". Diese haben dann das selbe Nominativobjekt (NO) und verbgebundenes Präposionalobjekt (POV).

In [7]:
pp(Erg_1['Objekte'], width=w)
{'VP_0': {'NO': [{'Lexem': 'Die', 'Span': (0, 3), 'Num': 0, 'pTag': 'ARTB+', 'sNum': 0, 'Flex': {'NPN'}, 'cTag': 'NP_54_0', 'Lemma': ['d'], 'sR': {'NO(VP_0)', 'NO(VP_1)'}},
                 {'Lexem': 'gespeicherten', 'Span': (27, 40), 'Num': 8, 'pTag': 'ADJPP', 'cTag': 'NP_54_0', 'Flex': {'NPNw'}, 'Lemma': ['gespeichert'], 'sNum': 0, 'sR': {'NO(VP_0)', 'NO(VP_1)'}},
                 {'Lexem': 'Daten', 'Span': (41, 46), 'Num': 9, 'pTag': 'NN', 'cTag': 'NP_54_0', 'Lemma': ['Daten'], 'sNum': 0, 'Flex': {'NPN'}, 'sR': {'NO(VP_0)', 'NO(VP_1)'}}],
          'POV': [[{'Lexem': 'zur', 'Span': (54, 57), 'Num': 11, 'pTag': 'APPRART', 'cTag': 'PP_0', 'Lemma': ['zur'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_1)', 'POV(VP_0)'}},
                   {'Lexem': 'Erfüllung', 'Span': (58, 67), 'Num': 12, 'pTag': 'NN', 'cTag': 'PNP_107_1', 'Lemma': ['Erfüllung'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_1)', 'POV(VP_0)'}}]],
          'Konn': [{'Lexem': 'werden', 'Span': (129, 135), 'Num': 20, 'pTag': 'VAINF', 'Lemma': ['werden'], 'cTag': 'VP_1', 'sNum': 0, 'Flex': {'----I'}, 'sR': set()}]},
 'VP_1': {'NO': [{'Lexem': 'Die', 'Span': (0, 3), 'Num': 0, 'pTag': 'ARTB+', 'sNum': 0, 'Flex': {'NPN'}, 'cTag': 'NP_54_0', 'Lemma': ['d'], 'sR': {'NO(VP_0)', 'NO(VP_1)'}},
                 {'Lexem': 'gespeicherten', 'Span': (27, 40), 'Num': 8, 'pTag': 'ADJPP', 'cTag': 'NP_54_0', 'Flex': {'NPNw'}, 'Lemma': ['gespeichert'], 'sNum': 0, 'sR': {'NO(VP_0)', 'NO(VP_1)'}},
                 {'Lexem': 'Daten', 'Span': (41, 46), 'Num': 9, 'pTag': 'NN', 'cTag': 'NP_54_0', 'Lemma': ['Daten'], 'sNum': 0, 'Flex': {'NPN'}, 'sR': {'NO(VP_0)', 'NO(VP_1)'}}],
          'POV': [[{'Lexem': 'zur', 'Span': (54, 57), 'Num': 11, 'pTag': 'APPRART', 'cTag': 'PP_0', 'Lemma': ['zur'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_1)', 'POV(VP_0)'}},
                   {'Lexem': 'Erfüllung', 'Span': (58, 67), 'Num': 12, 'pTag': 'NN', 'cTag': 'PNP_107_1', 'Lemma': ['Erfüllung'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_1)', 'POV(VP_0)'}}]],
          'Konn': [{'Lexem': 'dürfen', 'Span': (47, 53), 'Num': 10, 'pTag': 'VMFIN', 'Lemma': ['dürfen'], 'cTag': 'VP_0', 'sNum': 0, 'Flex': {'3PGKM', '3PGIM'}, 'sR': set()}]}}

Die syntaktischen Abhängigkeiten der Phrasen, lässt sich dann wie folgt visualisieren:

In [8]:
BratWidget(**(cbtc_to_brat(Erg_1, options={'entity_stack_order': ['phrases']}))).render()   
!! # Graphik ist interaktiv => mit der Maus über einen String hovern
# PEAdj => Präpositonale Ergänzung eines Adjektivs # VPE => Ergänzungselement einer VP # GO => Genitivobjekt # P$PPK => Präpositionale Paragraphenkette # NP => Nominalphrase PNP => NP mit Präposition, restlichen Abk. bereits eingeführt

Betrachten wir nun den Fall, dass der Satz_1 nur eine VP enthält.

Erreichen können wir dies einfach indem dem Chunker folgende Regel hingefügt wird:

In [11]:
Pipe.Chunker.Chunkregeln.append((['ADJPP|VV#', 'KONN#', 'ADJPP|VV#'], 'AZPPP'))

Vereinfacht gesagt, bewirkt diese Regel, dass 'genutzt und übermittelt' als Aufzählungsphrase von Partizipien markiert wird, und somit das 'und' als Konnektor "verbraucht" wurde und nicht mehr für die VP zur Verfügung steht.

In [12]:
Variante_1 = Pipe.analysiere(Satz_1)
In [13]:
BratWidget(**(cbtc_to_brat(Variante_1, options={'entity_stack_order': ['phrases']}))).render()
In [16]:
for VP in Variante_1['Verbphrasen']:
    print(VP)
    pp(Variante_1['Verbphrasen'][VP]['Phrase'], width=300)
    print("===="* 50)
VP_0
[{'Lexem': 'dürfen', 'Span': (47, 53), 'Num': 10, 'pTag': 'VMFIN', 'Lemma': ['dürfen'], 'cTag': 'VP_0', 'sNum': 0, 'Flex': {'3PGKM', '3PGIM'}, 'sR': set()},
 {'Lexem': 'genutzt', 'Span': (105, 112), 'Num': 17, 'pTag': 'VVPP', 'cTag': 'VP_0', 'Lemma': ['nutzen'], 'Flex': {'--P-I'}, 'sNum': 0, 'sR': set()},
 {'Lexem': 'übermittelt', 'Span': (117, 128), 'Num': 19, 'pTag': 'VVPP', 'cTag': 'VP_0', 'Lemma': ['übermitteln'], 'Flex': {'--P-I'}, 'sNum': 0, 'sR': set()},
 {'Lexem': 'werden', 'Span': (129, 135), 'Num': 20, 'pTag': 'VAINF', 'Lemma': ['werden'], 'cTag': 'VP_0', 'sNum': 0, 'Flex': {'----I'}, 'sR': set()}]
========================================================================================================================================================================================================

Auch wenn es vielleicht etwas konterintuitiv ist, so ist das 'und' nicht mehr Teil der VP (da keine Elemente mehr geteilt werden).

Außerdem ist das Objekte-Dict kleiner.

In [20]:
pp(Variante_1['Objekte'], width=w)
{'VP_0': {'NO': [{'Lexem': 'Die', 'Span': (0, 3), 'Num': 0, 'pTag': 'ARTB+', 'sNum': 0, 'Flex': {'NPN'}, 'cTag': 'NP_54_0', 'Lemma': ['d'], 'sR': {'NO(VP_0)'}},
                 {'Lexem': 'gespeicherten', 'Span': (27, 40), 'Num': 8, 'pTag': 'ADJPP', 'cTag': 'NP_54_0', 'Flex': {'NPNw'}, 'Lemma': ['gespeichert'], 'sNum': 0, 'sR': {'NO(VP_0)'}},
                 {'Lexem': 'Daten', 'Span': (41, 46), 'Num': 9, 'pTag': 'NN', 'cTag': 'NP_54_0', 'Lemma': ['Daten'], 'sNum': 0, 'Flex': {'NPN'}, 'sR': {'NO(VP_0)'}}],
          'POV': [[{'Lexem': 'zur', 'Span': (54, 57), 'Num': 11, 'pTag': 'APPRART', 'cTag': 'PP_0', 'Lemma': ['zur'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_0)'}},
                   {'Lexem': 'Erfüllung', 'Span': (58, 67), 'Num': 12, 'pTag': 'NN', 'cTag': 'PNP_107_1', 'Lemma': ['Erfüllung'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_0)'}}]]}}

Allerdings müsste man nun noch sicherstellen, dass die Handlungsoptionenaufzählung (dieser Modalpassivkonstruktion) entspechend weiterverarbeitet wird um sicherzustellen, dass im Ergebnis die semantische Abbildung gleich bleibt.

Mit Blick auf Sätze wie Satz_2 ist dies aber ohnehin nötig:

In [22]:
Satz_2 = "Sie dürfen nur noch mit Einwilligung der betroffenen Person genutzt, verändert, übermittelt und gelöscht werden."

Wir können also feststellen, dass man sowohl eine als auch zwei VP begründen und parsen kann. Mit Blick auf Satz_2 mag die Antwort es sei eine näherliegen, denn sonst wären es ja 4 in Satz_2, aber Satz_3 zeigt ein Beispiel in dem der erste Weg besser ist.

In [23]:
Satz_3 = "Der Grundsatz der Wirtschaftlichkeit rechtfertigt es dabei nicht, dass Grundprinzipien der Ordnungsmäßigkeit verletzt und die Zwecke der Buchführung erheblich gefährdet werden."

Zur Vollständigkeit noch die Tabellen der Analysergbnisse:

In [17]:
print(Erg_1)
Num:   0  sNum:  0  Lex: Die                        Lem: d                               PTK:      pTag: ARTB+                cTag: NP_54_0          sR: {'NO(VP_0)', 'NO(VP_1)'}          Flex: {'NPN'}                  
Num:   1  sNum:  0  Lex: nach                       Lem: nach                            PTK:      pTag: APPR                 cTag: PP_1             sR: {'PEAdj(t_8)'}                    Flex: {'DSM'}                  
Num:   2  sNum:  0  Lex: §                          Lem:                                 PTK:      pTag: $P                   cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex: {'DSM'}                  
Num:   3  sNum:  0  Lex: 20                         Lem:                                 PTK:      pTag: CARD                 cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex:                          
Num:   4  sNum:  0  Lex: Abs.                       Lem:                                 PTK:      pTag: $P                   cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex: {'NSM', 'GSM', 'DSM', 'ASM'}  
Num:   5  sNum:  0  Lex: 2                          Lem:                                 PTK:      pTag: CARD                 cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex:                          
Num:   6  sNum:  0  Lex: Nr.                        Lem:                                 PTK:      pTag: $P                   cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex: {'NSM', 'GSM', 'DSM', 'ASM'}  
Num:   7  sNum:  0  Lex: 1                          Lem:                                 PTK:      pTag: CARD                 cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex:                          
Num:   8  sNum:  0  Lex: gespeicherten              Lem: gespeichert                     PTK:      pTag: ADJPP                cTag: NP_54_0          sR: {'NO(VP_0)', 'NO(VP_1)'}          Flex: {'NPNw'}                 
Num:   9  sNum:  0  Lex: Daten                      Lem: Daten                           PTK:      pTag: NN                   cTag: NP_54_0          sR: {'NO(VP_0)', 'NO(VP_1)'}          Flex: {'NPN'}                  
Num:  10  sNum:  0  Lex: dürfen                     Lem: dürfen                          PTK:      pTag: VMFIN                cTag: VP_0             sR: set()                             Flex: {'3PGKM', '3PGIM'}       
Num:  11  sNum:  0  Lex: zur                        Lem: zur                             PTK:      pTag: APPRART              cTag: PP_0             sR: {'POV(VP_1)', 'POV(VP_0)'}        Flex: {'DSF'}                  
Num:  12  sNum:  0  Lex: Erfüllung                  Lem: Erfüllung                       PTK:      pTag: NN                   cTag: PNP_107_1        sR: {'POV(VP_1)', 'POV(VP_0)'}        Flex: {'DSF'}                  
Num:  13  sNum:  0  Lex: aller                      Lem: aller                           PTK:      pTag: PIDAT                cTag: NP_101_2         sR: {'GO(PNP_107_1)'}                 Flex: {'GPM', 'GSF'}           
Num:  14  sNum:  0  Lex: Zwecke                     Lem: Zweck|Zwecke                    PTK:      pTag: NN                   cTag: NP_101_2         sR: {'GO(PNP_107_1)'}                 Flex: {'GPM', 'GSF'}           
Num:  15  sNum:  0  Lex: des                        Lem: d                               PTK:      pTag: ARTB                 cTag: NP_81_3          sR: {'GO(NP_101_2)'}                  Flex: {'GSM'}                  
Num:  16  sNum:  0  Lex: Verfassungsschutzes        Lem: Verfassungsschutz               PTK:      pTag: NN                   cTag: NP_81_3          sR: {'GO(NP_101_2)'}                  Flex: {'GSM'}                  
Num:  17  sNum:  0  Lex: genutzt                    Lem: nutzen                          PTK:      pTag: VVPP                 cTag: VP_0             sR: set()                             Flex: {'--P-I'}                
Num:  18  sNum:  0  Lex: und                        Lem: und                             PTK:      pTag: KONN                 cTag: VP_0             sR: set()                             Flex:                          
Num:  19  sNum:  0  Lex: übermittelt                Lem: übermitteln                     PTK:      pTag: VVPP                 cTag: VP_1             sR: set()                             Flex: {'--P-I'}                
Num:  20  sNum:  0  Lex: werden                     Lem: werden                          PTK:      pTag: VAINF                cTag: VP_1             sR: set()                             Flex: {'----I'}                
Num:  21  sNum:  0  Lex: .                          Lem:                                 PTK:      pTag: $.                   cTag: $.               sR: set()                             Flex:                          
========================================================================================================================================================================================================
Num:  10  sNum:  0  Lex: dürfen                     Lem: dürfen                          PTK:      pTag: VMFIN                cTag: VP_0             sR: set()                             Flex: {'3PGKM', '3PGIM'}       
Num:  17  sNum:  0  Lex: genutzt                    Lem: nutzen                          PTK:      pTag: VVPP                 cTag: VP_0             sR: set()                             Flex: {'--P-I'}                
Num:  18  sNum:  0  Lex: und                        Lem: und                             PTK:      pTag: KONN                 cTag: VP_0             sR: set()                             Flex:                          
----------------------------------------------------------------------------------------------------------------------------------------------------------------
{'NO': [{'Lexem': 'Die', 'Span': (0, 3), 'Num': 0, 'pTag': 'ARTB+', 'sNum': 0, 'Flex': {'NPN'}, 'cTag': 'NP_54_0', 'Lemma': ['d'], 'sR': {'NO(VP_0)', 'NO(VP_1)'}},
        {'Lexem': 'gespeicherten', 'Span': (27, 40), 'Num': 8, 'pTag': 'ADJPP', 'cTag': 'NP_54_0', 'Flex': {'NPNw'}, 'Lemma': ['gespeichert'], 'sNum': 0, 'sR': {'NO(VP_0)', 'NO(VP_1)'}},
        {'Lexem': 'Daten', 'Span': (41, 46), 'Num': 9, 'pTag': 'NN', 'cTag': 'NP_54_0', 'Lemma': ['Daten'], 'sNum': 0, 'Flex': {'NPN'}, 'sR': {'NO(VP_0)', 'NO(VP_1)'}}],
 'POV': [[{'Lexem': 'zur', 'Span': (54, 57), 'Num': 11, 'pTag': 'APPRART', 'cTag': 'PP_0', 'Lemma': ['zur'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_1)', 'POV(VP_0)'}},
          {'Lexem': 'Erfüllung', 'Span': (58, 67), 'Num': 12, 'pTag': 'NN', 'cTag': 'PNP_107_1', 'Lemma': ['Erfüllung'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_1)', 'POV(VP_0)'}}]],
 'Konn': [{'Lexem': 'werden', 'Span': (129, 135), 'Num': 20, 'pTag': 'VAINF', 'Lemma': ['werden'], 'cTag': 'VP_1', 'sNum': 0, 'Flex': {'----I'}, 'sR': set()}]}
================================================================================================================================================================
Num:  19  sNum:  0  Lex: übermittelt                Lem: übermitteln                     PTK:      pTag: VVPP                 cTag: VP_1             sR: set()                             Flex: {'--P-I'}                
Num:  20  sNum:  0  Lex: werden                     Lem: werden                          PTK:      pTag: VAINF                cTag: VP_1             sR: set()                             Flex: {'----I'}                
----------------------------------------------------------------------------------------------------------------------------------------------------------------
{'NO': [{'Lexem': 'Die', 'Span': (0, 3), 'Num': 0, 'pTag': 'ARTB+', 'sNum': 0, 'Flex': {'NPN'}, 'cTag': 'NP_54_0', 'Lemma': ['d'], 'sR': {'NO(VP_0)', 'NO(VP_1)'}},
        {'Lexem': 'gespeicherten', 'Span': (27, 40), 'Num': 8, 'pTag': 'ADJPP', 'cTag': 'NP_54_0', 'Flex': {'NPNw'}, 'Lemma': ['gespeichert'], 'sNum': 0, 'sR': {'NO(VP_0)', 'NO(VP_1)'}},
        {'Lexem': 'Daten', 'Span': (41, 46), 'Num': 9, 'pTag': 'NN', 'cTag': 'NP_54_0', 'Lemma': ['Daten'], 'sNum': 0, 'Flex': {'NPN'}, 'sR': {'NO(VP_0)', 'NO(VP_1)'}}],
 'POV': [[{'Lexem': 'zur', 'Span': (54, 57), 'Num': 11, 'pTag': 'APPRART', 'cTag': 'PP_0', 'Lemma': ['zur'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_1)', 'POV(VP_0)'}},
          {'Lexem': 'Erfüllung', 'Span': (58, 67), 'Num': 12, 'pTag': 'NN', 'cTag': 'PNP_107_1', 'Lemma': ['Erfüllung'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_1)', 'POV(VP_0)'}}]],
 'Konn': [{'Lexem': 'dürfen', 'Span': (47, 53), 'Num': 10, 'pTag': 'VMFIN', 'Lemma': ['dürfen'], 'cTag': 'VP_0', 'sNum': 0, 'Flex': {'3PGKM', '3PGIM'}, 'sR': set()}]}
========================================================================================================================================================================================================
[(21, '$.')]
========================================================================================================================================================================================================
In [18]:
print(Variante_1)
Num:   0  sNum:  0  Lex: Die                        Lem: d                               PTK:      pTag: ARTB+                cTag: NP_54_0          sR: {'NO(VP_0)'}                      Flex: {'NPN'}                  
Num:   1  sNum:  0  Lex: nach                       Lem: nach                            PTK:      pTag: APPR                 cTag: PP_1             sR: {'PEAdj(t_8)'}                    Flex: {'DSM'}                  
Num:   2  sNum:  0  Lex: §                          Lem:                                 PTK:      pTag: $P                   cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex: {'DSM'}                  
Num:   3  sNum:  0  Lex: 20                         Lem:                                 PTK:      pTag: CARD                 cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex:                          
Num:   4  sNum:  0  Lex: Abs.                       Lem:                                 PTK:      pTag: $P                   cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex: {'NSM', 'GSM', 'DSM', 'ASM'}  
Num:   5  sNum:  0  Lex: 2                          Lem:                                 PTK:      pTag: CARD                 cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex:                          
Num:   6  sNum:  0  Lex: Nr.                        Lem:                                 PTK:      pTag: $P                   cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex: {'NSM', 'GSM', 'DSM', 'ASM'}  
Num:   7  sNum:  0  Lex: 1                          Lem:                                 PTK:      pTag: CARD                 cTag: P$PPK_0          sR: {'PEAdj(t_8)'}                    Flex:                          
Num:   8  sNum:  0  Lex: gespeicherten              Lem: gespeichert                     PTK:      pTag: ADJPP                cTag: NP_54_0          sR: {'NO(VP_0)'}                      Flex: {'NPNw'}                 
Num:   9  sNum:  0  Lex: Daten                      Lem: Daten                           PTK:      pTag: NN                   cTag: NP_54_0          sR: {'NO(VP_0)'}                      Flex: {'NPN'}                  
Num:  10  sNum:  0  Lex: dürfen                     Lem: dürfen                          PTK:      pTag: VMFIN                cTag: VP_0             sR: set()                             Flex: {'3PGKM', '3PGIM'}       
Num:  11  sNum:  0  Lex: zur                        Lem: zur                             PTK:      pTag: APPRART              cTag: PP_0             sR: {'POV(VP_0)'}                     Flex: {'DSF'}                  
Num:  12  sNum:  0  Lex: Erfüllung                  Lem: Erfüllung                       PTK:      pTag: NN                   cTag: PNP_107_1        sR: {'POV(VP_0)'}                     Flex: {'DSF'}                  
Num:  13  sNum:  0  Lex: aller                      Lem: aller                           PTK:      pTag: PIDAT                cTag: NP_101_2         sR: {'GO(PNP_107_1)'}                 Flex: {'GPM', 'GSF'}           
Num:  14  sNum:  0  Lex: Zwecke                     Lem: Zweck|Zwecke                    PTK:      pTag: NN                   cTag: NP_101_2         sR: {'GO(PNP_107_1)'}                 Flex: {'GPM', 'GSF'}           
Num:  15  sNum:  0  Lex: des                        Lem: d                               PTK:      pTag: ARTB                 cTag: NP_81_3          sR: {'GO(NP_101_2)'}                  Flex: {'GSM'}                  
Num:  16  sNum:  0  Lex: Verfassungsschutzes        Lem: Verfassungsschutz               PTK:      pTag: NN                   cTag: NP_81_3          sR: {'GO(NP_101_2)'}                  Flex: {'GSM'}                  
Num:  17  sNum:  0  Lex: genutzt                    Lem: nutzen                          PTK:      pTag: VVPP                 cTag: VP_0             sR: set()                             Flex: {'--P-I'}                
Num:  18  sNum:  0  Lex: und                        Lem: und                             PTK:      pTag: KONN                 cTag: KONNAZ           sR: set()                             Flex:                          
Num:  19  sNum:  0  Lex: übermittelt                Lem: übermitteln                     PTK:      pTag: VVPP                 cTag: VP_0             sR: set()                             Flex: {'--P-I'}                
Num:  20  sNum:  0  Lex: werden                     Lem: werden                          PTK:      pTag: VAINF                cTag: VP_0             sR: set()                             Flex: {'----I'}                
Num:  21  sNum:  0  Lex: .                          Lem:                                 PTK:      pTag: $.                   cTag: $.               sR: set()                             Flex:                          
========================================================================================================================================================================================================
Num:  10  sNum:  0  Lex: dürfen                     Lem: dürfen                          PTK:      pTag: VMFIN                cTag: VP_0             sR: set()                             Flex: {'3PGKM', '3PGIM'}       
Num:  17  sNum:  0  Lex: genutzt                    Lem: nutzen                          PTK:      pTag: VVPP                 cTag: VP_0             sR: set()                             Flex: {'--P-I'}                
Num:  19  sNum:  0  Lex: übermittelt                Lem: übermitteln                     PTK:      pTag: VVPP                 cTag: VP_0             sR: set()                             Flex: {'--P-I'}                
Num:  20  sNum:  0  Lex: werden                     Lem: werden                          PTK:      pTag: VAINF                cTag: VP_0             sR: set()                             Flex: {'----I'}                
----------------------------------------------------------------------------------------------------------------------------------------------------------------
{'NO': [{'Lexem': 'Die', 'Span': (0, 3), 'Num': 0, 'pTag': 'ARTB+', 'sNum': 0, 'Flex': {'NPN'}, 'cTag': 'NP_54_0', 'Lemma': ['d'], 'sR': {'NO(VP_0)'}},
        {'Lexem': 'gespeicherten', 'Span': (27, 40), 'Num': 8, 'pTag': 'ADJPP', 'cTag': 'NP_54_0', 'Flex': {'NPNw'}, 'Lemma': ['gespeichert'], 'sNum': 0, 'sR': {'NO(VP_0)'}},
        {'Lexem': 'Daten', 'Span': (41, 46), 'Num': 9, 'pTag': 'NN', 'cTag': 'NP_54_0', 'Lemma': ['Daten'], 'sNum': 0, 'Flex': {'NPN'}, 'sR': {'NO(VP_0)'}}],
 'POV': [[{'Lexem': 'zur', 'Span': (54, 57), 'Num': 11, 'pTag': 'APPRART', 'cTag': 'PP_0', 'Lemma': ['zur'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_0)'}},
          {'Lexem': 'Erfüllung', 'Span': (58, 67), 'Num': 12, 'pTag': 'NN', 'cTag': 'PNP_107_1', 'Lemma': ['Erfüllung'], 'sNum': 0, 'Flex': {'DSF'}, 'sR': {'POV(VP_0)'}}]]}
========================================================================================================================================================================================================
[(21, '$.')]
========================================================================================================================================================================================================