1. 학습
  2. /
  3. 강의
  4. /
  5. Python으로 챗봇 만들기

Connected

연습 문제

기본 부정 처리

사용자는 종종 자신이 원하지 않는 것을 말하곤 합니다. 이런 정보도 꼭 이해해야 해요! 일반적으로, 부정 탐지는 NLP에서 어려운 문제입니다. 여기서는 많은 경우에 통하는 아주 단순한 접근을 사용해 보겠습니다.

tests라는 테스트 목록이 이미 정의되어 있어요. 셸에서 살펴보면, 각 테스트는 다음으로 구성된 튜플입니다.

  • 개체가 포함된 메시지 문자열
  • 개체명을 키로 하고, 그 개체가 부정되었는지를 나타내는 Boolean 값을 값으로 가지는 사전

여러분의 과제는 메시지에서 부정된 개체를 찾는 negated_ents() 함수를 정의하는 것입니다.

지침

100 XP
  • 리스트 컴프리헨션을 사용해 메시지에 "south" 또는 "north"가 등장하는지 확인하고 해당 개체를 추출하세요.
  • 각 개체로 끝나는 문장 조각(chunks)으로 문장을 분할하세요. 이를 위해 다음을 수행합니다.
    • phrase의 .index() 메서드로 각 개체 e의 시작 인덱스를 찾고, 여기에 개체 길이를 더해 개체의 끝 인덱스를 구하세요.
    • start=0에서 시작해, 각 end에 대해 문자열을 start부터 end까지 슬라이스하여 리스트 chunks에 추가하세요. 각 반복마다 시작 위치를 업데이트하는 것을 잊지 마세요.
  • 각 개체에 대해, 해당 chunk에 "not" 또는 "n't"가 나타나면 그 개체가 부정된 것으로 간주하세요.