정규식(regular expression)은 특정한 패턴의 문자열을 표현하기 위한 문법입니다. 머신러닝에서도 텍스트 데이터를 다룰 때 정규식을 활용하여 데이터를 처리합니다. 텍스트 데이터를 처리할 때, 일관적인 패턴의 문자열을 추출해내는 등의 작업을 수행하기 위해 정규식을 사용합니다. 예를 들어, 이메일 주소를 추출할 때, 이메일의 패턴에 맞는 정규식을 사용하여 이메일 주소를 추출할 수 있습니다.
정규식 패턴을 만들 때는 다양한 메타문자(meta-character)를 사용합니다. 메타문자는 특정한 의미를 가지며, 이를 조합하여 패턴을 만들어냅니다. 예를 들어, ‘\d’는 숫자를 의미하며, ‘\w’는 알파벳 대소문자와 숫자를 의미합니다. 이 외에도 ‘^’는 문자열의 시작을 의미하며, ‘$’는 문자열의 끝을 의미합니다.
머신러닝에서는 CountVectorizer, TfidfVectorizer 등의 벡터화 기법에서도 정규식을 사용합니다. CountVectorizer의 경우, token_pattern 인자에 정규식을 지정하여, 문자열을 추출할 때 사용합니다. 예를 들어, token_pattern=r’\b\w+\b’는 알파벳 또는 숫자가 1개 이상인 문자열만 추출하여 단어로 사용합니다. 이렇게 추출한 단어들을 벡터화하여 머신러닝 모델의 입력으로 사용합니다.
r’\b\w+\b’는 정규식 패턴으로서, 단어를 추출할 때 고려되는 문자열의 패턴을 지정합니다. 이 패턴은 다음과 같이 구성됩니다.
- \b : 단어 경계를 의미합니다. 즉, 단어의 시작과 끝을 나타냅니다.
- \w+ : 알파벳 또는 숫자가 1개 이상인 문자열을 나타냅니다. 이 문자열은 단어로서 추출됩니다.
- r 은 “raw string”의 약자로서, 문자열을 해석할 때 escape 문자(예: \n, \t 등)를 무시하고 그대로 해석하도록 지정하는 파이썬의 문자열 리터럴 접두어입니다. 이를 사용하면 문자열 안에서 역슬래시를 사용할 때 일반적인 문자열 리터럴보다 편리하게 사용할 수 있습니다.예를 들어, 일반적인 문자열 리터럴에서는 역슬래시를 사용하려면 두 번 써야 합니다. 예를 들어, “\n”은 줄바꿈 문자를 나타냅니다. 그러나 r 접두어를 사용하면 “\n” 대신에 r”\n”으로 사용할 수 있습니다. 이렇게 하면 역슬래시를 두 번 쓰는 것보다 코드를 더욱 간결하게 작성할 수 있습니다.
따라서 r’\b\w+\b’는 “raw string”으로서, 백슬래시 문자를 특수문자로 해석하지 않고 문자열 그대로 해석하도록 하는 것을 의미합니다.
따라서 r’\b\w+\b’ 패턴을 적용하면, 알파벳 또는 숫자가 1개 이상인 문자열을 단어로서 추출할 수 있습니다.
예를 들어, 다음과 같은 문자열이 있다고 가정해보겠습니다.
string = "The quick brown fox jumps over the lazy dog. 12345"
이 문자열에서 CountVectorizer(token_pattern=r’\b\w+\b’)를 사용하면, 다음과 같은 단어들이 추출됩니다.
['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog', '12345']
숫자는 단어로 인식되며, 구두점 등은 단어로 인식되지 않습니다.