정규표현식(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}
와 같은 정규표현식 패턴을 사용하는 것이 실무적이고 확장 가능한 방법이다.