[NLP] 텍스트 전처리 - (5) 정규 표현식

김규리·2022년 6월 9일
0

NLP

목록 보기
5/33
post-thumbnail

파이썬 정규 표현식 모듈 re 지원

: 특정 규칙이 있는 텍스트 데이터 빠르게 정제

*실습
1. re.complie()에 정규 표현식 컴파일
2. re.search()를 통해서 해당 정규 표현식이 입력 텍스트와 매치되는지 확인
3. 매치 > Match Object 리턴

  • .: 한 개의 임의의 문자
  • ?: 앞의 문자가 존재할 수도 있고 존재하지 않을 수도 있는 경우
  • : 바로 앞의 문자가 0개 이상일 경우
  • +: 바로 앞의 문자가 1개 이상일 경우
  • ^: 시작되는 문자열 지정
  • {숫자}: 해당 문자를 숫자만큼 반복
  • {숫자1, 숫자2}: 해당 문자를 숫자1 이상 숫자2 이하만큼 반복
  • {숫자,}: 해당 문자를 숫자 이상만큼 반복
  • []: 문자들 중 한 개의 문자와 매치, [a-zA-Z]는 알파벳 전부를 의미, [0-9]는 숫자 전부를 의미
  • [^문자]: ^기호 뒤에 붙은 문자들을 제외한 모든 문자 매치

정규 표현식 모듈 함수 예제

1) re.match()와 re.search()의 차이

search(): 정규 표현식 전체에 대해서 문자열이 매치하는지 확인
match(): 문자열의 첫 부분부터 정규 표현식과 매치하는지 확인

2) re.split()

: 입력된 정규 표현식을 기준으로 문자열들을 분리하여 리스트로 리턴

# 공백 기준 분리
text = "사과 딸기 수박 메론 바나나"
re.split(" ", text)
['사과', '딸기', '수박', '메론', '바나나'] 

3) re.findall()

: 정규 표현식과 매치되는 모든 문자열들을 리스트로 리턴

text = """이름 : 김철수
전화번호 : 010 - 1234 - 1234
나이 : 30
성별 : 남"""

re.findall("\d+", text)
['010', '1234', '1234', '30']

4) re.sub()

: 정규 표현식 패턴과 일치하는 문자열을 찾아 다른 문자열로 대체

text = "Regular expression : A regular expression, regex or regexp[1] (sometimes called a rational expression)[2][3] is, in theoretical computer science and formal language theory, a sequence of characters that define a search pattern."

preprocessed_text = re.sub('[^a-zA-Z]', ' ', text)
print(preprocessed_text)

'Regular expression   A regular expression  regex or regexp     sometimes called a rational expression        is  in theoretical computer science and formal language theory  a sequence of characters that define a search pattern '  

정규 표현식을 이용한 토큰화

  • NLTK: RegexpTokenizer()
from nltk.tokenize import RegexpTokenizer

text = "Don't be fooled by the dark sounding name, Mr. Jone's Orphanage is as cheery as cheery goes for a pastry shop"

tokenizer1 = RegexpTokenizer("[\w]+")
tokenizer2 = RegexpTokenizer("\s+", gaps=True)

print(tokenizer1.tokenize(text))
print(tokenizer2.tokenize(text))

['Don', 't', 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', 'Mr', 'Jone', 's', 'Orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop']
["Don't", 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name,', 'Mr.', "Jone's", 'Orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop']
profile
connecting the dots

0개의 댓글