[자연어 처리 스터디 기록] 3월 11일~3월 16일(1주차)

김수빈·2022년 4월 14일
0

자연어 공부하기

목록 보기
4/4

[자연어 처리 입문과정 공부하는 기록입니다.]

전문가가 아닌 학부 1학년이 혼자 공부하고 남기는 기록이다 보니 잘못된 정보가 다소 포함되어 있을수도 있습니다. 잘못된 부분이 있다면 댓글로 알려주시면 감사하겠습니다.

  • PC환경에서 읽어주시면 감사하겠습니다.*

  1. 자연어란? 그리고 자연어 처리를 하는 이유.
  • 자연어는 인간(Human)이 사용하는 언어로 영어,중국어,한국어와 같이 일상에서 쓰이는 언어를 말합니다. 그러한 자연어를 분석하고 파악함으로 기계(computer)를 이용하여 각종 산업효율 또는 편의를 증진하기 위해 활용되고 있습니다. 더 나아가 미래 산업에서 이런 인간과 기계와의 관계가 더 줄어들것이기 때문에 더욱 더 활용도가 높은 기술중 하나입니다.

  1. 자연어 처리가 이용되는 분야.
  • 쉽게 접하고 있는 인공지능 비서(빅스비,시리), 스팸 메일 필터링, 리뷰 감정 분석, 챗봇과 같이 충분히 우리의 일상에 흡수되어있는 기술입니다.

  1. 자연어 처리에 이용되는 API 및 오픈소스
  • 텐서플로우(Tensorflow): 구글에서 개발한 머신러닝 오픈소스 라이브러리로 머신러닝에 사용되는 소스를 대표하는 오픈소스.

  • 케라스(Keras): 텐서플로우 위에서 동작하는 라이브러리로 텐서플로우보다 사용자 친화적이지만 신경망의 디테일한 부분을 조정하기 어려운 점이 있음.

  • 젠심(Gensim): 토픽모델링(LDA)와 추상화처리를 도와주는 라이브러리.

-사이킷런 (scikit-learn, 이하 sklearn): 머신러닝 분석 모듈 라이브러리

  • NLTK: 언어 전처리 및 문서 분석용 파이썬 패키지

  • KoNLPy: 한국어 자연어 처리를 위한 형태소 분석 패키지

  • 판다스(Pandas): 파이썬 데이터 분석 및 처리 패키지

  • 판다스 프로파일링(Pandas-profiling): 데이터의 성격 분석

  • Numpy : 수치데이터를 다루는 패키지, ndarray를 함께 사용하여 벡터 및 행렬을 사용하는 선형대수 계산에 사용

  • kss : 한국어 문장 분리기

  • Okt(Open korean Text) : 트위터에서 만든 Tkt를 이어받아 계속 발전중인 라이브러리

  • 꼬꼬마(Kkma): 한국어 형태소 분석 라이브러리

  1. Pandas Library
  • Pandas Library에는 3가지 데이터 구조가 존재*

4-1) 시리즈(Series): 1차원 배열로 값에 해당하는 인덱스를 부여

4-2) 데이터프레임(DataFrame): 2차원 리스트를 매개변수로 전달, 따라서 행과 열로 표 생성 가능

4-3) 패널(Pannel): 3차원 데이터를 다룰때 사용, 잘 사용하지 않음

  1. 맷플롯립(Matplotlib)
  • 데이터를 시각화 하는 패키지, 데이터 분석하기 이전 또는 이후에 데이터를 이해하기에 도움을 주기 위해 시각화.

5-1) 플롯(plot): 그래픽으로 렌더링하여 가상 공간에 미리 차트를 그려봄

5-2)Line plot: 데이터를 기준으로 X와 Y값에 대입하여 선으로 이어지게 시각화

  • 여러개의 데이터를 한 차트안에 표시할수있음

  1. 데이터 프로파일링(Data-profiling)
  • 데이터 내 값의 분포, 변수간의 관계, 결측값 등을 파악하게 되는데 이와 같이 데이터의 성격을 파악하는 과정을 탐색적 분석(Exploratory Data Analysis, EDA)라고 함.

[EX] 스팸 메일 분류 챕터

import pandas as pd
import pandas_profiling
data = pd.read_csv('spam.csv',encoding='latin1') #spam.csv이라는 데이터셋을 준비, 본인은 로컬 환경에 csv파일을 바로 다운로드
data[:5] #사용 할 데이터 '5'개만 추출
pr=data.profile_report() #pr이라는 변수에 추출값 담기
data.profile_report() #결과보기
아래와 같은 리포트 생성

스팸 분류 리포트

· ham은 정상 메일, spam은 스팸메일 결측값 없이 깔끔하게 분류가 되었음을 확인, 다만 이 결과는 spam.csv파일이 매우 깔끔하게 가공된 데이터이기에 이런 수치가 나올수있는 것 입니다.

  1. Okt vs Kkma 뭐가 더 좋은 라이브러리인가?
  • 위에서 언급했던 한국어 형태소 분석 라이브러리 두가지이다. 이 두가지를 같은 환경에서 비교를 한 결과는 아래와 같다. 그래프의 y축은 형태소를 분석하는데 걸린 시간으로 y축의 값이 작을수록 좋은 라이브러리이다.

출처: https://blog.naver.com/PostView.nhn?blogId=wideeyed&logNo=221337575742

-뉴스기사, 상품평, 영화평 세가지 경우를 동일한 환경에서 처리한 결과, 전반적으로 Okt가 Kkma보다 더 빠른 속도고 정확하게 구분한것으로 보인다. 다만 자료에 의하면 띄어쓰기가 제대로 되어있지않은 문장에서는 Kkma가 더 빠를수도 있다고 한다.

  1. 머신러닝 워크플로우 (Machine-learning workFlow)
  • 머신러닝은 크게 6가지 단계로 진행된다.

8-1) 수집: 자연어에 사용되는 데이터를 말뭉치나 코퍼스(corpus)라고 부르는데 이 코퍼스는 조사나 분석에 사용되는 특정한 데이터의 집합이라고 한다. 텍스트 데이터의 형식은 txt파일, xml파일, csv파일 등 다양하다.

8-2) 점검 및 탐색: 데이터가 수집이 되었다면 그 데이터가 어떤 데이터인지, 어떻게 정제하여야하는지를 파악하는 단계이다. 이때 위에서 말한 탐색적 데이터 분석(EDA)가 사용되게 되는데 이과정에서 시각화와 통계 테스트를 진행 한다.

8-3) 전처리 및 정제: 탐색단계에서 데이터에 대한 파악이 완료됐다면, 워크 플로우에서 가장 까다롭고 어려운 단계인 전처리 단계에 들어가게 된다. 전처리의 과정에는 토큰화, 정제, 정규화, 불용어 제거 등 많은 단계가 있다.(이 부분은 아래, 9. 텍스트 전처리에서 자세하게 다루도록 하겠다. )

8-4) 모델링 및 훈련: "제가 가장 흥미롭게 느낀 단계입니다." , 데이터 성격에 따라 알맞는 알고리즘을 선택하여 기계에 학습을 시키게 된다. 이때 중요한 점은 학습을 시키기 이전에 전체 데이터를 세가지 용도에 따라 나누게 된다. 훈련용, 검증용, 테스트용으로 나눠지게 되는데 훈련용데이터는 선택한 알고리즘으로 기계가 학습하게 되는데 적절히 학습되었는지를 확인하기 위해 검증용 데이터를 사용하여 실험하게 된다. 만약 이때 실제의 정답과 거리가 멀다면 다른 방법을 사용하여 진행해보고 최종적으로 테스트 데이터를 통해서 배포단계로 넘어가게 된다.

8-5) 평가 : 테스트용 데이터를 이용하여 모델을 평가한다. 이때 훈련과정에서 언급한것과 같이 실제 정답과 얼마나 유사한지 결측값은 어떤지와 같은 정보를 측정한다.

8-6) 배포 : 성공적인 모델로 훈련이 되었다면 위의 과정을 피드백함과 동시에 배포하게 된다.

본격적으로 텍스트 전처리 과정에 적용되는 개념에 대해서는 2주차에 함께 정리해서 올리도록 하겠습니다. 나름 하다보니 재미도 있긴한데 공부하고 정리하고 글로 옮겨 쓰려고 하다보니 좀 어렵네요 ,, !

0개의 댓글

관련 채용 정보