2011-10-01 31 views
11

चल रहा है मैं टैग किए गए टोकन से संज्ञा समूह और क्रियान्वयन निकालने के लिए एनएलटीके रेगेक्सपर्सर का उपयोग कर रहा हूं।एनएलटीके चंकिंग और परिणाम पेड़

मैं परिणामस्वरूप पेड़ को एनपी या वी समूहों के केवल हिस्सों को खोजने के लिए कैसे चलूं?

from nltk.chunk import RegexpParser 

grammar = ''' 
NP: {<DT>?<JJ>*<NN>*} 
V: {<V.*>}''' 
chunker = RegexpParser(grammar) 
token = [] ## Some tokens from my POS tagger 
chunked = chunker.parse(tokens) 
print chunked 

#How do I walk the tree? 
#for chunk in chunked: 
# if chunk.??? == 'NP': 
#   print chunk 

(एस (एनपी कैरियर/एनएन) के लिए/में ऊतक/जे जे और/सीसी सेल संस्कृति/जे जे के लिए/ में (एनपी/डीटी तैयारी/एनएन) की/ (एनपी प्रत्यारोपण/NNS) में और/सीसी (एनपी प्रत्यारोपण/एनएन) (वी युक्त/VBG) (एनपी/डीटी वाहक/एनएन) ./।)

उत्तर

11

यह काम करना चाहिए :

for n in chunked: 
    if isinstance(n, nltk.tree.Tree):    
     if n.label() == 'NP': 
      do_something_with_subtree(n) 
     else: 
      do_something_with_leaf(n) 
+0

मुझे देता है AttributeError: 'टपल' ऑब्जेक्ट कोई विशेषता 'नोड' n <प्रकार 'टपल'> –

+0

संपादित जवाब ... –

+1

वर्क्स एक आकर्षण की तरह की है - धन्यवाद! –

0

token

में छोटे गलती
from nltk.chunk import RegexpParser 
grammar = ''' 
NP: {<DT>?<JJ>*<NN>*} 
V: {<V.*>}''' 
chunker = RegexpParser(grammar) 
token = [] ## Some tokens from my POS tagger 
//chunked = chunker.parse(tokens) // token defined in the previous line but used tokens in chunker.parse(tokens) 
chunked = chunker.parse(token) // Change in this line 
print chunked 
0

सेविनो के जवाब महान है, लेकिन यह भी ध्यान देने योग्य है कि subtrees रूप में अच्छी तरह सूचकांक द्वारा पहुँचा जा सकता है, उदाहरण के लायक है

for n in range(len(chunked)): 
    do_something_with_subtree(chunked[n])