정규표현식(Regex)으로 NLP 텍스트 처리 방법

정규표현식(Regex)을 활용한 자연어 처리(NLP)

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

인공지능, 머신러닝

대상자

자연어 처리(NLP)나 텍스트 전처리 작업에 관심 있는 개발자, Python의 re 모듈을 사용하는 중급 이상의 프로그래머

핵심 요약

  • re.search() 함수는 특정 패턴을 텍스트에서 첫 번째로 발견된 위치만 반환한다.
  • re.findall()모든 패턴 일치 항목을 리스트 형태로 반환하며, 예를 들어 'are''area'는 모두 'are' 패턴에 매칭된다.
  • re.finditer()각 일치 항목의 인덱스를 반복적으로 추출할 수 있으며, 텍스트 내 여러 위치를 확인할 때 유용하다.
  • 정규표현식 패턴 예시: \d{2}-\d{4}-\d{4}10자리 전화번호 형식(예: 88-9944-6677)을 정확히 매칭한다.

섹션별 세부 요약

1. 기본 문자열 검색

  • in 연산자를 사용한 검색은 대소문자 구분이 발생하며, 'How''how'는 다르게 처리된다.
  • re.search() 함수는 첫 번째 일치 항목의 인덱스를 반환하고, span() 메서드로 범위를 확인할 수 있다.
  • 예: 'you'의 위치는 (8, 11)으로 반환되며, 중복된 경우에도 첫 번째만 반환된다.

2. `findall()`과 패턴 매칭

  • findall()모든 일치 항목을 반환하며, 'are''area'는 모두 'are' 패턴에 포함된다.
  • 패턴 'are'를 적용했을 때 'Hello how are area are you?'에서 'are'3회 매칭된다.

3. `finditer()`와 인덱스 추출

  • finditer()모든 일치 항목의 인덱스를 반복하여 추출할 수 있다.
  • 예: 'hello''hello world hello earth hello universe'에서 3회 발견되며, 각 위치는 (0,5), (12,17), (24,29)로 반환된다.

4. 정규표현식을 활용한 전화번호 추출

  • \d{2}-\d{4}-\d{4} 패턴은 전화번호 형식(예: 88-9944-6677)을 정확히 매칭한다.
  • re.search()group() 메서드를 결합하여 매칭된 값을 직접 추출할 수 있다.

결론

  • 정규표현식은 텍스트 전처리 및 패턴 매칭에 필수적이며, re 모듈의 search(), findall(), finditer()를 활용해 효율적으로 사용할 수 있다.
  • 전화번호 등 구조화된 데이터 추출\d{2}-\d{4}-\d{4}와 같은 정규표현식 패턴을 사용하는 것이 실무적이고 확장 가능한 방법이다.