1. 파이썬 기본 코드를 이용한 영어 텍스트 토큰화 및 전처리

1-A) tokenizer 구현

<aside> 💡 토큰화기 구현 설명 공백으로 토큰을 구분하되 . , ! ? 문장 부호는 별개의 토큰으로 처리되어야 합니다. 영문에서 Apostrophe에 해당하는 ' 는 두가지 경우에 대해 처리해야합니다. 1. not의 준말인 n't은 하나의 토큰으로 처리되어야 합니다: don't ==> do n't 2. 다른 Apostrophe 용법은 뒤의 글자들을 붙여서 처리합니다: 's 'm 're 등등 그 외 다른 문장 부호는 고려하지 않으며, 작은 따옴표는 모두 Apostrophe로 처리합니다. 모든 토큰은 소문자로 변환되어야 합나다.

힌트: 정규표현식을 안다면 re 라이브러리를 사용해 보세요!

예시: 'I don't like Jenifer's work.'
==> ['i', 'do', 'n\\'t', 'like', 'jenifer', '\\'s', 'work', '.']

</aside>

방법1) append를 사용해 무지성 for문으로 구현

from typing import List

def tokenize(sentence: str) -> List[str]:
    """ 
    Arguments:
    sentence -- 토큰화할 영문 문장
    
    Return:
    tokens -- 토큰화된 토큰 리스트
    """

    ### YOUR CODE HERE 
    tokens: List[str] = list()
    tokens = sentence.lower().split()
    res = []
    punc = ['.', ',', '!', '?']

    # 방법1 - append 사용
    for token in tokens:
        if token[-1] in punc:
            res.append(token[:-1])
            res.append(token[-1])
        elif token[-3:] == "n't":
            res.append(token[:-3])
            res.append(token[-3:])
        elif len(token)>=2 and token[-2] == "'":
            # 's 'm
            res.append(token[:-2])
            res.append(token[-2:])
        elif len(token)>=3 and token[-3] == "'":
            # 're 've
            res.append(token[:-3])
            res.append(token[-3:])
        else:
            res.append(token)
    # ### END YOUR CODE

    return res

방법2) extend를 사용해 무지성 for문으로 구현

def tokenize2(sentence: str) -> List[str]:
    tokens: List[str] = list()
    tokens = sentence.lower().split()
    res = []
    punc = ['.', ',', '!', '?']
    
    # 방법2 - extend 사용
    for token in tokens:
        if token[-1] in punc:
            res.extend([token[:-1], token[-1]])
        elif token[-3:] == "n't":
            res.extend([token[:-3], token[-3:]])
        elif len(token)>=2 and token[-2] == "'":
            # 's 'm
            res.extend([token[:-2], token[-2:]])
        elif len(token)>=3 and token[-3] == "'":
            # 're 've
            res.extend([token[:-3], token[-3:]])
        else:
            res.append(token)

    return res

방법3) 정규표현식 re 사용