6.2
 Chunking

Einfache Chunking-Regel 

Chunking mit Longest-Matching-Strategie

[BEESLEY und KARTTUNEN 2003b, 74] geben eine einfache Regel zur NP-Erkennung (d=Det; a= Adj; n=Noun; v=Verb):

read regex [ (d) a* n+ @-> %[ ... %] ] ;  
xfst[1]: down dannvaan  
[dann]v[aan]

Problem

Wie kann man aus dieser Idee einen richtigen Chunker machen?

Input für getaggten Text im Penn-Treebank-Format 

Input-Klammerformat: ( POS-TAG SPACE WORD )

(JJ U.K.)(NN base)(NNS rates)(VBP are)(IN at)(PRP$ their)(JJS highest)(NN level)(IN in)(CD eight)(NNS years)(. .)

Output-Klammerformat mit zusätzlicher Klammerung

(NP (JJ U.K.)(NN base)(NNS rates))(VBP are)(IN at) (NP (PRP$ their)(JJS highest)(NN level) )(IN in) (NP (CD eight)(NNS years) )(. .)

Schützen von wörtlichen Klammern

Für eine korrekte Verarbeitung müssen alle Klammern, welche im Text als Interpunktion oder als Teil von POS-Tags vorkommen, geschützt werden. Konventionell wird in der Penn-Treebank “-RRB-” für “)” und “-LRB-” für “(” verwendet.

POS-Tags, Wörter und Input-Sprache ▸▸▸ 

# Penn-Treebank-Tags  
define PTBT ["#" | "$" | "’’" | "-LRB-" | "-RRB-" | "," | "." | ":" |  
  "CC" | "CD" | "DT" | "EX" | "FW" | "IN" | "JJ" | "JJR" |  
  "JJS" | "MD" | "NN" | "NNP" | "NNPS" | "NNS" | "PDT" |  
  "POS" | "PRP" | "PRP$" | "RB" | "RBR" | "RBS" | "RP" |  
  "SYM" | "TO" | "UH" | "VB" | "VBD" | "VBG" | "VBN" |  
  "VBP" | "VBZ" | "WDT" | "WP" | "WP$" | "WRB" | "‘‘" ] ;  
 
# Mögliche Wörter (mit vorangehendem Leerzeichen)  
define WORD [ " " [ ?* - [$ [" " | "(" | ")"]]] ] ;  
 
# Input-Sprache  
define INPUT [ "(" PTBT WORD ")" ]+;

NP-Chunk-Regel formulieren 

define DET [ "(" "DT" WORD ")" ];  
 
define ADJ [ "(" ["CD"|"JJ"|"JJR"|"JJS"] WORD ")" ];  
 
define NOUN [ "(" ["NN"|"NNS"|"NNP"|"NNPS"] WORD ")"];  
 
define RuleNP [  
     [ ( DET ) ADJ* NOUN+ @-> "(" "NP " ... ")" ]  
];

Chunking 

# lookup-tool liest lower-language, deshalb Inversion  
read regex  [INPUT .o. RuleNP].i ;  
 
# Transduktor in binärem Format speichern  
save stack RuleNP.fst;  
 
# Aufruf aus xfst mit optimierten Optionen für lange Wörter  
# und deterministischem Output  
system lookup RuleNP.fst -flags "v1cxmbLLTTI10000" < conll00-penn-tag.txt \  
       > conll00-penn-chunk.txt  
system head -n 10 conll00-penn-chunk.txt  

Automatische Evaluation des Chunkers 
Um die Qualität des Chunkers quantifizieren zu können, empfiehlt sich eine automatische Evaluation gegenüber einem sog. Gold-Standard.

! Automatische Evaluation  
system lookup RuleNP.fst -flags "v1xmbLLTTI10000" < conll00-penn-tag.txt \  
       | penn-chk-to-chk.perl -c3 > result.txt  
system lam conll00-gold.chk -s ’ ’ result.txt | conlleval.perl

Resultate der Chunking-Shared-Task der CoNLL 2000 


pict

Abbildung 6.1: Resultate der Chunking-Shared-Task der CoNLL 2000 [TJONG KIM SANG und BUCHHOLZ 2000, 131]

Vertiefung