2009-12-13 3 views
1

NLTK 서적에 따르면, 먼저 문법을 적용하고 구문 분석합니다.이 정보는 어떻게 Python에서 사용합니까? 이 데이터 형식을 사용하는 방법을 모르겠습니다.

grammar = r""" 
      NP: {<DT|PP\$>?<JJ>*<NN>} 
       {<NNP>+} 
       """ 
cp = nltk.RegexpParser(grammar) 
chunked_sent = cp.parse(sentence) 

나는 인쇄 chunked_sent,이 얻을 때 :

(S 
    i/PRP 
    use/VBP 
    to/TO 
    work/VB 
    with/IN 
    you/PRP 
    at/IN 
    (NP match/NN) 
    ./.) 

난 그냥보고 싶지 않아요. 실제로 "NP"명사구를 꺼내고 싶습니다.

"일치"를 어떻게 인쇄 할 수 있습니까? 명사구는 무엇입니까? 그 모든 chunked_sent에서 "NP"를 얻고 싶습니다.

for k in chunked_sents: 
    print k 

(u'i', 'PRP') 
(u'use', 'VBP') 
(u'to', 'TO') 
(u'work', 'VB') 
(u'with', 'IN') 
(u'you', 'PRP') 
(u'at', 'IN') 
(NP match/NN) 
(u'.', '.') 


for k in chunked_sents: 
    print k[0] 

i 
use 
to 
work 
with 
you 
at 
(u'match', 'NN') 

"NP"를 잃어 버렸습니다.
또한 k [0]이 문자열 또는 튜플인지 (위의 경우처럼) 결정할 수 있습니까?

+0

참고 : (NP 경기/NN)는 <클래스 'nltk.tree.Tree'>는 – TIMEX

+0

는 구문 분석 정보가없는 명사구의 목록을 얻을 수 있었습니까? 궁극적으로 당신은 무엇을 했습니까? – MyopicVisage

답변

0

글쎄, 이미 답을 찾았을 수도 있습니다. 앞으로이 시나리오에 직면하게 될 사람들을 위해 게시하고 있습니다.

for subtree in chunked_sent.subtrees(): 
    if subtree.node == 'NP': print subtree 
관련 문제