2017-12-20 6 views
1

주어진 단어 구가 NN으로 구성되어 있는지 확인하고 싶습니다. 모두가 NN이면 count 값이 증가합니다.파이썬에서 포스트 태그 패턴을 확인하십시오.

예를 들어, 내 워드 프레이즈가 [('micro', 'NN'), ('blog', 'NN'), ('texts', 'NN')] 인 경우, 해당 단어 수가 1 씩 증가해야합니다.

현재 코드는 다음과 같습니다.

w='micro blog texts' 
postag = nltk.pos_tag(w.split()) 
      print(postag) 
      count_inside = 0 
      for ele in postag: 
       if ele[1] == 'NN': 
        count_inside = count_inside + 1 
      if count_inside == len(w.splits()): 
       count = count + 1 

올바르게 작동하지만, 파이썬에서 한 줄로 처리 할 수 ​​있는지 알고 싶습니다. 그렇다면 알려 주시기 바랍니다.

답변

1

이 경우 all 함수에서 생성기 식을 사용할 수 있습니다. 여기에 짧은 데모가 있습니다.

count = 0 
postag = [('micro', 'NN'), ('walk', 'V'), ('texts', 'NN')] 
count += all(u[1] == 'NN' for u in postag) 
print(count) 

postag = [('micro', 'NN'), ('blog', 'NN'), ('texts', 'NN')] 
count += all(u[1] == 'NN' for u in postag) 
print(count) 

출력

0 
1 

all 기능과 관련 any 함수는 매우 효율적이며, 이들이 즉시이 일정한 결과를 가지고 검사를 중지 수단들이 단락. 따라서 all은 잘못된 결과를 감지하자마자 생성자 표현 루프를 중지합니다.