텍스트 분석 Note #1. 개요


아래는 텍스트 분석에 대해 공부하면서 개괄식으로 정리한 노트입니다. 이화여대 송민채 교수님 수업강의와 여러가지 참고자료(아래 표기)를 참고하였습니다. 

[텍스트 분석 Note #1]
  • 개요
    • 텍스트 분석, 텍스트 마이닝은 반정형 또는 비정형 텍스트 데이터의 분석과 처리를 위한 다양한 기술을 일컫는 포괄적 용어
    • 스키마형태와 연산가능 상태에 따라 반정형, 비정형으로 분류
      • 정형 : 관계형 DB, Spreadsheet
      • 반정형 : XML, HTML 
      • 비정형: 텍스트, 영상, 음성
    • 텍스트 마이닝은 텍스트를 수리적 분석이 가능하도록 구조화 : 텍스트 전처리, 워드임베딩
  • 과정 개요
  • 텍스트 마이닝?
    • 인터넷 데이터, 소셜 미디어 데이터와 같이 자연언어로 구성된 비정형 데이터에서 정보나 지식을 추출하는 기술
    • 대용량의 데이터속에서 값어치 있는 숨겨진 패턴을 발견하고 특정 주제와 연관된 데이터를 검색하는 데 사용
    • 정보검색, 기계학습, 통계학, 자연언어처리, 그리고 데이터 마이닝과 같이 여러분야의 연구들에 기반을 두고 있음. 
  • 자연어 처리 : NLP
    • 자연어: 프로그래밍 언어와 차별적으로, 인간이 말하고, 쓰고, 읽고, 듣는 자연어 형태
    • 자연어 처리 : 자연어를 처리하기 위한 계산기술, 계산 언어학(전산언어학)
    • 목표 : 컴퓨터에 모형화하여 자연언어로 정보전달을 재생, 자연언어를 사용해서 자유롭게 정보소통을 할 수 있는 인지기계의 구축을 의미.. (Houser, R)
  • 분야
    • 문서군집
    • 문서분류
    • 정보추출
    • 자연언어처리
    • 개념추출
    • 웹마이닝
    • 정보검색
  • 핵심 데이터 처리 기술
    • 데이터 마이닝 기술 : Regression, Clustering, Association rule, Classification
    • 인공지능/기계학습, 데이터베이스, 문헌정보학(키워드추출,정보검색기법), 통계학
  • 분석방법
    • 시스템 종류/목적, 적용대상 언어의 문법적 특징에 따라,
    • Rule-based,규칙기반, RB
      • 언어자료체(쿠퍼스,Corpus)를 이용해 언어 현상에 내재하는 규칙을 형식화하고, 언어정보를 분석,생성하는 방식, 지식기반 방법론
      • NLP Application에서 인간의 전문적 지식을 모방하여,일반화된 AI Application을 개발하는 데 사용
      • 유용한 상황 : 코퍼스 크기가 작고, 출력이 주관적, 특정 규칙을 쉽게 작성할 수있고, 소량의 데이터 관찰로 머신이 특수규칙을 생성하기 어려운 경우, 시스템 출력이 아주 정확
    • Statistical-based/ Machine learning Approach로 나뉨
      • 대규모 코퍼스를 대상으로 단어나 형태 등의 통계정보를 추출하고, 머신러닝 기반으로 언어정보를 처리하는 방법
      • 자료 태깅, 형태소 분석, 구문분석등의 기반 기술뿐 아니라 기계 번영, 검색, 군집, 분류 등 응용시스템 개발에 활용
      • 일정 크기 이상의 태깅된 자료체가 존재해야. Tag : 자연어 처리에서 언어의 다양한 범주를 체계화하기 위한 목적으로 만든 구조적인 표기 규약. 예: 품사태그
  • 한국어 텍스트 특징
    • 언어유형론적 분류에서 형태론적 관점으로 한국어는 “교착어: Agglutinative Language”, 어근과 접사에 의해 단어의 기능이 결정되는 언어의 형태로, 단어의 중심이 되는 형태소(어근)에 접두사와 접미사를 비롯한 다른 형태소들이 덧붙어 단어가 구성되는 특징이 있음. 예: 수업을, 수업이..
    • 고립어-중국어, 교착어-한국어/일본어, 굴절어-영어
    • 자연어와 인공어(프로그래밍 언어)의 핵심 차이점 : 중의성(ambiguity)의 여부
  • 필요한 파이썬 package
    • Numpy-사용자에게 다차원 배열(array) 및 다수의 수학적인 작업을 동작 시키기 위한 많은 수의 함수를 제공
    • SciPy-선형 대수, 공간 행렬, 신호와 이미지 처리, 최적화, 빠른 푸리에 변환 등 다수의 여러 과학적 알고리즘을 제공하며 넘파이의 기능적 측면을 완성
    • Pandas-데이터 프레임(data frames)과 시리즈(series)라는 독특한 데이터 구조 덕분에 서로 다른 형태(넘파이의 배열은 할 수 없는 것) 및 시계열 데이터의 복잡한 테이블을 다룰 수 있게 함.,
    • Scikit-learn- 데이터 처리, 지도 및 비지도학습, 모델 선택, 검증, 오류 지표 측면에서 필요한 모든 기능을 제공
    • Matplotlib-배열로부터 우수한 도표를 만들어내고, 이를 양방향적으로 시각화하는데 필요한 모든 기본 토대를 제공하는 모듈
    • nltk - 말뭉치(corpora)와 어휘 자원들 및 통계적 자연어 처리(NLP), 토크나이저(tokenizers)에서 품사 태거(part-of-speech taggers), 트리 모형에서 개체명 인식(named-entity recognition)에 이르기까지 완벽한 도구 모음에 접근한 수 있도록 다양한 자연어처리 함수를 제공하는 모듈
    • requests - HTTP 헤더 추가 또는 Basic 인증 등의 문제를 쉽게 처리하게 해주며, 문자 코드 변환, 압축 등을 자동으로 처리
    • BeautifulSoup - 인터넷으로부터 얻은 HTML과 XML에서 데이터를 스크래핑
  • 코퍼스와 텍스트데이터셋
    • 코퍼스? 쓰거나 말해진 많은 자연어 자료 모음 또는 데이터셋. 둘이상의 코퍼스는 코포라.
      • 쓰인자료 : 예- 뉴스기사, 서적, 디지털 도서관, 전자메일메시지, 블로그..
      • 음성데이터-오디오 파일(통화상담내역), 녹취록(Transcript) 
    • 3가지 타입
      • 단일 언어 코퍼스
      • 이중 언어 코퍼스
      • 다국어 코퍼스
    • 코퍼스 생성과 관련된 문제들은? 
      • 문제 진술을 해결하기 위해 내게 필요한 종류의 데이터는? ex-임상기록?/대화 오디오?
      • 이런 코퍼스나 자료가 있는가?
      • 오픈소스 코퍼스를 사용할 수있나?
      • 코퍼스 품질 수준은?
      • 최소한의 개념 증명기준으로 문제진술을 해결하기 충분한 데이터가 있는가?
    • 파일형식 : txt, csv, tsk,xml, json
  • 텍스트 데이터 수집 : 크롤링(Request), 스크래핑(Beautiful Soup)
  • 텍스트 전처리
    • 문장분리, 토큰화, 소/대문자 변환, 불용어 처리, 어간처리stemming, 단어통일, 숫자를 단어로 변환, 문장부호제고, 오탈자/띄어쓰기 교정 등
  • 토근화- 토큰(어휘분석기법을 사용해 생성되는 의미있는 요소)으로 분할하는 과정
    • 원시 텍스트 데이터 셋 (코퍼스,말뭉치) ->" 개별문서 >개별문장(문장토큰화) >개별단어”로 토큰화
  • 불용어(Stop words removal)처리 - 전체적 의미에 기여하지 않아 필터링, NLTK에는 많은 언어에 대한 불용어 목록 있으나 한국어 없음.
  • 정규화(Normalization) - 문장부호제거, 소/대문자 변환, 숫자단어변환. 약어전개, 어간추출등의 텍스트 정규화 과정 
    • 2가지 방법 : 정규식 표현과 함수 사용
    • 어간 추출(Stemming)과 표제어 추출(lemmatization) - (공통점) 접사를 제거하고, 의미를 고려해 주어진 단어를 정규화하는데 사용한다.
      • 어간추출
        • 문맥 지식없이 한단어로 작동, 품사태그 미고려, 비슷한 기본 의미 가진단어를 그룹화
        • 단어에서 접사를 제거하여 어간(stem)을 획득하는 과정, 예-검색엔진은 어간추출을 사용해 색인어를 저장
        • 방법 : 1)정규표현식 2)함수사용
        • 영어는 NLTK의 PorterStemmer 함수 사용하고 비교적 정확하나,한국어는 교착어라 접미사가 발달해서 접사제거를 규칙화하기 어려움
      • 표제어추출(원형복원)
        • 단어와 문맥 고려, 품사태그 고려, 사전/WordNet종류의 사전을 만드는데 사용
        • 다른 단어 범주의 형태로 단어를 변환, 원형복원 후 완전히 다른 단어 생성.
  • NLP 컴포넌트
    • NLU;Natural Language understanding -> 언어 읽고 통역하는 과정, Speech to Text
    • NLP;Natural Language generation -> 언어를 쓰거나 생성하는 과정, Text to Speech
    • 하위모듈
  • 형태소분석
    • 의미를 갖는 최소 단위인 형태소로 분절, 단어분리, 품사태깅
    • Un+expect+ed = 접두사+어근+접미사, unexpected(어간;stem)
    • 예쁘+고,지만,나,면 = 어근+어미
    • 단어와 형태소의 차이점
    • 분류 :
      • 어휘형태소(자립형태소 or 실질형태소) -> 형용사,부사,동사,명사 등 품사를 가진 형태소
      • vs 문법형태소(의존형태소 or 형식형태소)  -> 조사, 어미 또는 접두사,접미사와 같은 품사를 가진 형태소
      • 학생들부터 많이 잡혀 들어갔다.
      • → 학생[명사] 들[접미사] 부터[조사] 많이[부사] 잡혀[동사] 들어갔다[동사]
    • 한국어의 특징
      • 조사,어미 등의 문법형태소가 발달한 교착어
    • 분석방법
      • (a) 입력 어절: 사랑스러웠다
      • (b) 어미 분리: 사랑스러우 + 었 + 다
      • (c) 원형 복원: 사랑스럽 + 었 + 다
      • (d) 접미사 분리: 사랑 + 스럽 + 었 + 다
참고자료.
  • 파이썬 자연어 처리의 이론과 실제, 에이콘, 2018.
  • 처음 배우는 데이터 과학 (통계, 수학, 머신러닝, 프로그래밍까지 데이터 과학자를 꿈꾸는 히치하이커를 위한 최고의 안내서), 한빛미디어, 2018.

댓글