전처리에서 정규 표현식 모듈(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
- 손가락귀신
정신 못차리면, 벌 받는다.
,