데이터분석

(6) 데이터분석_형태소 분석

빠스무 2023. 6. 13. 11:35
728x90

1. 자연어

  • 일상에서 사용하는 언어
  • 컴퓨터는 자연어를 직접적으로 이해할 수 없음 -> 컴퓨터가 자연어 의미를 분석해 처리할 수 있도록 하는 일을 "자연어처리(Natural Langguage Processing)"라고 부름

2. 토크나이징

  • 문장을 의미가 있는 가장 작은 단어들로 나눔
  • 나눠진 단어들을 이용해 의미를 분석
  • 가장 기본이 되는 단어들을 "토큰"이라고 부름
  • 문장 형태의 데이터를 처리하기 위해 제일 처음 수행해야 하는 기본적인 작업
  • 토크나이징을 어떻게 하느냐에 따라 성능의 차이가 날 수 있음

3. 형태소 분석

  • 자연어의 문장을 형태소라는 최소 단위로 분할하고 품사를 판별하는 작업
  • 영어 형태소 분석은 형태소마다 띄어쓰기를 해서 문장을 구성하는 것이 기본(분석이 쉬운편)
  • 아시아 계열의 언어분석은 복잡하고 많은 노력이 필요
  • 한국어 형태소 분석 라이브러리: KoNLPy

KoNLPy를 쓰기 위해 다운로드와 import를 해준다.

!pip install KoNLPy
from konlpy.corpus import kolaw
kolaw.fileids()

law = kolaw.open('constitution.txt').read()

# KoNLPy에는 kobill(국회법안 파일)을 제공
from konlpy.corpus import kobill
 
kobill.fileids()

bill = kobill.open('1809895.txt').read()

4. KoNLPy

  • 기본적인 한국어 자연어 처리를 위한 파이썬 라이브러리
    • 명사, 대명사, 수사, 동사, 형용사, 관형사, 부사, 조사, 감탄사 총 9가지를 분석
  • 분석기
    • Hannanum: 한나눔. KAIST Semantic Wen Research Center 에서 개발
    • Kkma: 꼬꼬마. 서울대학교 IDS 연구실에서 개발
    • Komorand: 코모란. Shineware에서 개발
    • OKT(Open Korean Text): 오픈소스 한국어 분석기. 과거 트위터 형태소 분석기
from konlpy.tag import *
hannanum = Hannanum()
kkma = Kkma()
komoran = Komoran()
okt = Okt()
law[:50]

# nouns() : 명사를 추출
hannanum.nouns(law[:50])

kkma.nouns(law[:50])

komoran.nouns(law[:50])

okt.nouns(law[:50])

# morphs(): 모든 품사를 추출
hannanum.morphs(law[:50])

# pos: 모든 품사를 부탁
hannanum.pos(law[:50])

okt.pos(law[:50])

# tagset: 부착되는 품사 태그와 기호에 대한 의미를 반환
okt.tagset