2016-08-23 11 views
1

Spacy는 자연스러운 음성 처리를위한 강력한 파이썬 모듈이라고 들었으므로 지금은 명사 이상으로 단어를 그룹화하는 방법을 필사적으로 찾고 있습니다. 가장 중요한 것은 전치사구입니다. Spacy 함수가 있다고 의심 스럽지만 SpacySpaCy 가져 오기가 이미 내 프로젝트에서 구현 된 것 같습니다. 그럼에도 불구하고 나는 문구 인식/청킹의 가능성에 대해 열려 있습니다.파이썬 : Spacy 등을 사용한 명사구 (예 : 전치사) 이외의 청크

+0

당신이 특별히 원하는의 예를 들어 주실 수 있습니까? 어쩌면 이에 상응하는 원하는 출력을 가진 예제 입력과 같습니다. – Harrison

+1

물론. 독일어 입력을 번역 할 때 "대학까지 운전하려면 얼마나 걸립니까?"와 같은 문장을 사용하십시오. (독일어로 "Wie lange brauche ich bis zur Uni?"). 나는 전치사 구가 무엇을 구성 하는지를 아는 것 또는 다른 사람들이 사용하는 것과 같은 정확한 규칙 (PP -> PREP + NP)을 말함으로써 전치사 단계로 분류 될 [DET] 대학 [노]을 [PREP] 파이썬 모듈. SpaCy는 내 프로그램에서 태그를 지정하는 데 사용되며 명사 청크 만 지원하는 것처럼 보입니다. 지원 모듈이 있거나 추가 청크를 인식하는 기능이 있습니다. –

답변

0

여기 PP를 얻을 수있는 해결책이 있습니다. 일반적으로 subtree을 사용하여 문구를 얻을 수 있습니다.

def get_pps(doc): 
    "Function to get PPs from a parsed document." 
    pps = [] 
    for token in doc: 
     # Try this with other parts of speech for different subtrees. 
     if token.pos_ == 'ADP': 
      pp = ' '.join([tok.orth_ for tok in token.subtree]) 
      pps.append(pp) 
    return pps 

사용법 :

ex = 'A short man in blue jeans is working in the kitchen.' 
doc = nlp(ex) 

get_pps(doc) 

이 인쇄 :

['in blue jeans', 'in the kitchen']