자연어 전처리

Jeonghyun·2022년 11월 14일
0

NLP

목록 보기
8/8

자연어 처리의 단계

  • Task 설계
  • 필요 데이터 수집
  • 통계학적 분석
    • Token 개수 → 아웃라이어 제거
    • 빈도 확인 → 사전(dictionary) 정의
  • 전처리
    • 개행, 특수문자, 공백, 중복표현, 이메일(링크), 불용어, 조사 제거, 띄어쓰기, 문장분리 보정
  • Tagging
  • Tokenizing
    • 어절
    • 형태소
    • WordPiece
  • 모델 설계
  • 모델 구현
  • 성능 평가

텍스트 크롤링 후 Normalizing

  • 이메일, 해쉬태그, 멘션(@), url 제거
  • 언론정보(기자, 언론사) 제거
  • 저작권 관련 텍스트(ⓒ)
  • 이미지 label 제거
  • 위키피디아 : 문자(괄호) 제거
  • 특수문자 제거
  • 연속 공백 제거

Filtering

  • 올바르지 않은 문장 제외(형태소 분석)
  • 특정 단어 포함 문장 제외
  • 불용어 제외
  • 문장 길이로 필터링(아웃라이어)
  • 유니코드 기반으로 다른 언어 필터링

자연어 처리 라이브러리

newspaper3k : 뉴스 기사 크롤링

import newpaper
from newpaper import Article
article = Article(news_url, language='ko')
article.download()
article.parse()
print(article.title)
print(article.text)

kss : 한국어 문장 분리기, 마침표를 기준으로 문장 구분

kss.split_sentences(sent)

soynlp : 반복 문자 제거

from soynlp.normalizer import *
repeat_normalize('ㅋㅋㅋㅋㅋㅋㅋㅋ', num_repeats=2)
>>> ㅋㅋ

OrderedDict : 중복 문장 제거

from collections import OrderedDict
list(OrderedDict.fromkeys(texts))

PyKoSpacing : 한국어 띄어쓰기 처리 👉 일반적인 문장에는 불필요한 띄어쓰기가 생길 수 도 있음
https://github.com/haven-jeon/PyKoSpacing.git

from pykospacing import Spacing
spacing = Spacing()
spacing("ㅁㄴㄹㅇ")

hanspell : 맞춤법 검사기
https://github.com/ssut/py-hanspell.git

from hanspell import spell_checker
spell_checker.check(sent)
>>> Checked(result=True, original = "", checked = "", errors=2, words=OrderedDict()
spell_sent.checked

konlpy : 한국어 형태소 분석기

from konlpy.tag import Mecab
mecab = Mecab()
morphs = mecab.pos("", join=False)

👉 명사(NN), 동사(V), 형용사(J)의 포함 여부에 따라 문장 필터링. 3개가 중 하나라도 없으면 제외

hgtk : 한글 자소 분리

import hgtk
list(hgtk.text.decompose("text"))

한국어 tokenizing

어절 단위 : split, padding, truncation
형태소 단위 : konlpy
음절 단위
자소 단위 : hgtk
WordPiece 단위 : transformer tokenizers의 BertWordPieceTokenizer


자료
한국어 욕설 사전
https://github.com/LDNOOBW/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words
https://github.com/doublems/korean-bad-words
https://github.com/organization/Gentleman/

0개의 댓글