소개
이 프로젝트에서는 Python 을 사용하여 텍스트 토큰화 시스템을 구현하는 방법을 배우게 됩니다. 텍스트 토큰화는 자연어 처리의 기본적인 작업으로, 주어진 텍스트를 토큰이라고 하는 더 작은 단위로 분해하는 것입니다. 이러한 토큰은 단어, 숫자, 구두점 또는 텍스트의 다른 의미 있는 요소를 나타낼 수 있습니다. 텍스트를 토큰화하는 능력은 컴파일러의 어휘 분석, 감성 분석, 텍스트 분류 등 많은 응용 프로그램에 필수적입니다.
👀 미리보기
## text = 'total = 1 + 2 * 3'
tokens = [Token(type='NAME', value='total'), Token(type='WS', value=' '), Token(type='EQ', value='='), Token(type='WS', value=' '), Token(type='NUM', value='1'), Token(type='WS', value=' '), Token(type='ADD', value='+'), Token(type='WS', value=' '), Token(type='NUM', value='2'), Token(type='WS', value=' '), Token(type='MUL', value='*'), Token(type='WS', value=' '), Token(type='NUM', value='3')]
🎯 과제
이 프로젝트에서는 다음을 배우게 됩니다:
- 텍스트의 토큰을 나타내는
Token클래스를 정의하는 방법 - 입력 텍스트를 받아 토큰 스트림을 생성하는
generate_tokens함수를 구현하는 방법 - 샘플 텍스트로 토큰화 프로세스를 테스트하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- 텍스트 토큰화의 개념과 자연어 처리에서의 중요성을 이해합니다.
- Python 을 사용하여 기본적인 텍스트 토큰화 시스템을 구현합니다.
- 다양한 토큰 유형과 해당 정규 표현식을 정의하여 토큰화 프로세스를 사용자 정의합니다.
- 다양한 입력 텍스트로 토큰화 시스템을 테스트하고 디버깅합니다.
토큰 클래스 정의
이 단계에서는 텍스트 토큰화 프로세스에서 토큰을 나타낼 Token 클래스를 정의하는 방법을 배우게 됩니다.
텍스트 편집기에서
/home/labex/project/texttokenizer.py파일을 엽니다.파일 시작 부분에서
collections모듈에서namedtuple함수를 가져옵니다:from collections import namedtupleToken클래스를type과value의 두 가지 속성을 가진 named tuple 로 정의합니다.Token = namedtuple("Token", ["type", "value"])
generate_tokens 함수 구현
이 단계에서는 입력 텍스트를 받아 토큰 스트림을 생성하는 generate_tokens 함수를 구현합니다.
texttokenizer.py파일에서generate_tokens함수를 정의합니다:def generate_tokens(text): ## Define token types and corresponding regular expressions token_specification = { "NAME": r"[a-zA-Z_][a-zA-Z_0-9]*", "NUM": r"\d+", "ADD": r"\+", "SUB": r"-", "MUL": r"\*", "DIV": r"/", "EQ": r"=", "WS": r"\s+", } ## Combine regular expressions into one large regular expression regex = "|".join("(?P<%s>%s)" % pair for pair in token_specification.items()) scanner = re.finditer(regex, text) for m in scanner: type = m.lastgroup value = m.group() yield Token(type, value)generate_tokens함수는 먼저 토큰 유형을 해당 정규 표현식에 매핑하는token_specification딕셔너리를 정의합니다.그런 다음
|연산자를 사용하여 모든 정규 표현식을 단일 큰 정규 표현식으로 결합합니다.이 함수는
re.finditer함수를 사용하여 입력 텍스트에서 모든 일치 항목을 찾고, 토큰 유형과 값을 가진 각 일치 항목에 대해Token객체를 생성합니다.
토큰화 테스트
이 단계에서는 샘플 텍스트를 파싱하여 generate_tokens 함수를 테스트합니다.
texttokenizer.py파일의 끝에 다음 코드를 추가합니다:if __name__ == "__main__": text = "total = 1 + 2 * 3" tokens = list(generate_tokens(text)) print(tokens)texttokenizer.py파일을 저장합니다./home/labex/project디렉토리에서texttokenizer.py스크립트를 실행합니다:python texttokenizer.py출력 결과는 입력 텍스트의 토큰을 나타내는
Token객체의 목록이어야 합니다:[Token(type='NAME', value='total'), Token(type='WS', value=' '), Token(type='EQ', value='='), Token(type='WS', value=' '), Token(type='NUM', value='1'), Token(type='WS', value=' '), Token(type='ADD', value='+'), Token(type='WS', value=' '), Token(type='NUM', value='2'), Token(type='WS', value=' '), Token(type='MUL', value='*'), Token(type='WS', value=' '), Token(type='NUM', value='3')]
축하합니다! generate_tokens 함수를 성공적으로 구현하고 샘플 텍스트로 테스트했습니다. 다음 단계에서는 generate_tokens 함수를 사용하여 더 큰 텍스트를 토큰화하는 방법을 배우게 됩니다.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



