전처리에서 정규 표현식 모듈(re) 을 토큰화와 정제, 정규화 등에 사용할 수 있으며, NLTK 를 통한 정규 표현식 사용도 가능하다.



re 모듈을 사용한 토큰화


import re
 
pattern = re.compile("a+")
result = pattern.match("abc")
# equal : pattern.match("a+", "abc)
# result : <re.Match object; span=(0, 1), match='a'>
 
text = "Let's write RegEx! Won't that be fun? I sure think so. Can you find 4 sentences?"
 
# 단어별로 분리 (특수문자 제외)
print(re.findall(r"\w+", text))
# 공백으로 분리
print(re.split(r"\s+", text))
# 문장 끝 부호로 분리
print(re.split(r"[.!?]\s+", text))
# 기호와 1~2자 단어 제거
print(re.sub(r"\W*\b\w{1,2}\b"'', text))
 
""" 출력
['Let', 's', 'write', 'RegEx', 'Won', 't', 'that', 'be', 'fun', 'I', 'sure', 'think', 'so', 'Can', 'you', 'find', '4', 'sentences']
["Let's", 'write', 'RegEx!', "Won't", 'that', 'be', 'fun?', 'I', 'sure', 'think', 'so.', 'Can', 'you', 'find', '4', 'sentences?']
["Let's write RegEx", "Won't that be fun", 'I sure think so', 'Can you find 4 sentences?']
Let write RegEx! Won that fun sure think. Can you find sentences?
"""
cs



NLTK 의 RegexpTokenizer 를 사용한 토큰화


from nltk.tokenize import RegexpTokenizer
from nltk.tokenize import regexp_tokenize
 
text = "Good muffins cost $3.88\nin New York. Please buy me\ntwo of them.\n\nThanks."
tokenizer = RegexpTokenizer(r"[\w]+")
print(tokenizer.tokenize(text))
print(regexp_tokenize(text, r"[\s]+", gaps=True))
# 위의 gaps 는 정규표현식을 토큰으로 나눌 것인지 여부
 
""" 출력
['Good', 'muffins', 'cost', '3', '88', 'in', 'New', 'York', 'Please', 'buy', 'me', 'two', 'of', 'them', 'Thanks']
['Good', 'muffins', 'cost', '$3.88', 'in', 'New', 'York.', 'Please', 'buy', 'me', 'two', 'of', 'them.', 'Thanks.']
"""
cs



WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,