한국어 전처리

황준하·2024년 1월 5일
0

나중에 사용하기 위한 용도로 남기는 코드

특수문자, 숫자, 한글만 남기기

SPECIALS = "".join(["?", "!", "'", '"',
                    '&',' '])  # 허용할 특수 문자

SPECIALS = re.escape(SPECIALS)

def preprocess(text: str):
    
    # 특수 문자, 숫자 및 한글만 남기기
    text = re.sub(f"[^0-9|{SPECIALS}|ㄱ-ㅣ|가-힣]+", "", text)  # f-문자열을 적용시켜 SPECIALS를 넣어줌.
    
    # 연속 공백 제거
    text = re.sub(" +", " ", text)
    
    # 좌우 불필요한 공백 제거
    return text.strip()
  • 한글에 해당하는 유니 코드 범위

    • ㄱ ~ ㅎ: 0x3131 ~ 0x314e
    • ㅏ ~ ㅣ: 0x314f ~ 0x3163
    • 가 ~ 힣: 0xac00 ~ 0xd7a3



자음, 모음 반복 -> 1번으로 수정하기

def test(text: str):
    text = re.sub(f'(\\S{{{1},}}?)\\1+', '\\1', text)  # 한글 자음, 모음 반복 -> 1번으로 수정
    return text

URL 검출

URL 검출하는 2가지 함수

def remove_URL(sen):
    # URL 필터링
    url = re.compile(r'https?://\S+|www\.\S+')
    text = url.sub(r'', sen)
    return text
    
def url_encode(sen):
    "url 검출"
    
    # URL 추출할 정규표현식 생성
    url_regex = r"(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)"

    reg = re.compile(url_regex)
    
    text = reg.sub(r'', sen)
    
    return text

이모지 필터링

def remove_emoji(sen):
    # 이모지 필터링
    emoji_pattern = re.compile("["
                           u"\U0001F600-\U0001F64F"  # emoticons
                           u"\U0001F300-\U0001F5FF"  # symbols & pictographs
                           u"\U0001F680-\U0001F6FF"  # transport & map symbols
                           u"\U0001F1E0-\U0001F1FF"  # flags (iOS)
                       #    u"\U00002702-\U000027B0"  # 한국어 전처리 시 이 부분을 쓰면 안됨
                       #    u"\U000024C2-\U0001F251"
                           "]+", flags=re.UNICODE)
    
    text = emoji_pattern.sub(r'', sen)
    return text

html 필터링

def html_unescape(sen):
    text = html.unescape(sen)
    
    return text
    
def remove_html(sen):
    html=re.compile(r'<.*?>')
    text = html.sub(r'', sen)
    return text

잘 필터링 됐는지 확인하기

 def find_something(text):
    something = re.compile(r'[a-zA-Z]')
    something2 = re.compile(r'[a-zA-Z]+')
    hashtag = re.compile(r'#')
    
    if hashtag.search(text) == None:
        pass
        return 0
    else:
        return 1

Ref

0개의 댓글

관련 채용 정보