NLP (Natural Language Processing, 자연어 처리)

NLP – 자연어 처리 기술 개요

문서, 문단, 문장

문서 (document), 문단(paragraph), 문장(sentence)

문장, 어절, 형태소

문장(sentence), 어절(eojeol, word phrase), 형태소(morpheme)

NLP 주요 용어

  • Document (문서)
  • Corpus (말뭉치), Corpora (말뭉치 모음)
  • Token (토큰), Tokenizer (토크나이저)
  • Morphemes (형태소), 형태소 분석기
  • POS (Part-of-speech, 품사), POS Tagging (=토큰에 POS 정보 추가)

참고: 한국어 품사 https://goo.gl/s8W3hW

NLP의 주요 연구 영역

  1. Lexical Analysis (어휘분석)
  2. Syntax Analysis (구문 분석)
  3. Semantic Analysis (의미 분석)
  4. Discourse Analysis (대담 분석)

1. Lexical Analysis (어휘분석)

문장을 잘 나누어 처리 효율을 높이기 위한 작업

  • Morphology Analysis (형태소 분석): 가장작은 의미 단위
  • Tokenizing: 토큰 분리, 띄어쓰기, 형태소 단위로 분리
  • Stemming (어간 추출): “cats”, “catlike”, “catty” → “cat”
  • Lemmatization (표제어 추출): ‘files’ → ‘날다’ vs ‘파리’ (품사까지 고려)

2. Syntax Analysis (구문 분석)

규칙이나 문법을 사용하여 문장을 분석하거나 구성

  • 어절 단위 분리, POS tagging (parsing tree 활용)
  • Sentence structure, phrase, grammer

3. Semantic Analysis (의미 분석)

단어/문장 의미를 찾고 부여하는 작업

  • Sematic = Syntatic + meaning

4. Discourse Analysis (대담 분석)

대화(문서)의 흐름을 파악하여 화자의 의도에 맞는 응답

  • 문맥구조 분석 (문장들의 연관 관계)
  • 대용어들(이것, 그것 등)이가리키는 것이 무엇인지
  • 의도분석, 대화분석 : 전후 관계를 통한 실제의도, 화자 인식

NLP의 주요 기술

  • Morphology Analysis (형태소 분석)
    • 문장을 형태소(=가장 작은 의미 단위)로 분리하는 작업
    • 형태소, 어근, 접두사/접미사, 품사등 다양한 언어적 속성의 구조 파악
  • POS tagging (품사 태깅)
    • 뜻과 문맥을 고려하여 형태소에 정보를 추가
    • 단어가 문장 내에서 어떤 역할을 하는지를 파악
  • NER (Named Entity Recognition)
    • 고유명사(NE, 개체명) 식별하여 특정 카테고리(사람, 장소, 조직 등)로 분류
    • 예: “철수[인명]는 서울역[지명]에서 영희[인명]와 10시[시간]에 만나기로 약속하였다.”
    • 규칙 기반 접근, 비지도 학습 접근, 변수 기반 지도 학습 접근, 딥러닝 등 다양한 접근법
  • SRL (Semantic Role Labeling, 의미적 역할 라벨링)
    • 문장 내에서 각 단어가 행하는 역할을 분석
    • “철수가 공원에서 축구를 한다” → ‘철수'(역할: Agent), ‘공원에서'(역할: Location), ‘축구를 한다'(역할: Action)
  • WSD (Word-sense disambiguation, 단어의미분별)
    • 중의성 해소: 한 단어가 가진 여러 가지 의미 중에서 문맥에 적합한 의미를 판단
    • 예: 배가 맛있어요. 배가 아파요. 배를 타고가요.
  • Sentiment Analysis (감성분석)
    • 주관적 인상, 감정 태도 측정 (=Opinion mining)
  • Text Classification (텍스트 분류)
    • 텍스트 데이터를 특정 카테고리로 자동으로 분류
    • (리뷰)감정별 분류, (뉴스)카테고리로 분류, (피드백)주제별 분류, (법률문서) 유형별 분류
  • Knowledge Extraction (지식 추출)
    • 문서 또는 텍스트 데이터에서 유용한 정보나 지식을 자동으로 추출하는 과정
    • 예: 뉴스 기사에서 특정 인물의 이름, 위치, 이벤트 등을 인식 → 이들 사이의 관계를 파악

NER

미리 정의해 둔 사람, 회사, 장소, 시간, 단위 등에 해당하는 단어(개체명)를 문서에서 인식하여 추출

예:철수[인명]는 서울역[지명]에서 영희[인명]와 10시[시간]에 만나기로 약속하였다.

  • NE(Named Entity): 기관명, 사람 이름(인물), 지명(장소), 화폐, 시간, 퍼센티지 등
  • NE 종류:
      1. 일반 개체명(generic NEs)
      1. 특정 개체명(domain-specific NEs)
  • NER 성능평가 지표:
    • 정밀도(precision), 재현율(recall), F1-score 평가
    • 토큰 단위로 평가 (문장단위가 아닌)

NER 다양한 접근

  • 규칙 기반 접근(Rule-based Approaches)
    • 도메인 특화(domain-specific)한 사전(gazetteer)을 적용
    • 정규식(regular expressions)으로 패턴 매칭
    • 높은 정확도 낮은 재현율, 도메인이 달라지면 성능 저하
  • 비지도 학습 접근(Unsupervised Learning Approaches)
    • 문맥적 유사도에 기반해 클러스터링(clustering)
  • 변수 기반 지도 학습 접근(Feature-based Supervised Learning Approaches)
    • 다중 클래스 분류(multi-class classification)
    • 시퀀스 레이블링(sequence labeling task)
    • HMM, Decision Trees, SVM, Maximum Entropy Model, CRF
  • 딥러닝 (Deep learning)
    • LSTM 기반 태깅, 임베딩, 개체명인식 등

간단한 NER 예제

토큰화(word_tokenize), 품사 태깅(pos_tag)

from nltk import word_tokenize, pos_tag

sentence = "James is working at Disney in London"

tokenized_sentence = pos_tag(word_tokenize(sentence))
tokenized_sentence

NE 청킹(ne_chunk)

from nltk import ne_chunk

ner_sentence = ne_chunk(tokenized_sentence)
ner_sentence

Deep Learning Applications in NLP

Deep Learning in NLP

  • Named Entity Recognition (NER)
  • Syntactic Analysis
  • Image Caption Generator
  • Google Neural Machine Translation
  • Sentiment Analysis; Text Classification
  • Summarization
  • End-to-end Dialog System

LIMITATION of deep learning

  • 설명가능성(explainability) 부족
  • 투명성(transparency) 부족
  • 점진적 학습 어려움
  • 법적 윤리적 책임소재 문제

※ 의사결정도구로 사용하려면 사람이 이해하는 규칙 모델도 필요

텍스트 마이닝을 위한 파이썬 라이브러리

  1. NLTK : Natural Language Toolkit
  2. KoNLPy: Korean NLP in Python
  3. Gensim: vector space modeling + topic modeling toolkit

NLTK : Natural Language Toolkit

http://nltk.org

  • 다양한 어간 추출(stemming) 알고리즘 지원(Porter, snowball, Lancaster 등)
  • Chunking, NER, classification 알고리즘 지원
  • 다양한 corpus (50+, 주로 영어)
  • language free, platform free and free

KoNLPy

http://konlpy.rtfd.org

  • 형태소 분석기 + 코퍼스 + 자연어 처리
  • 여러 형태소 분석기(현재 5개) 선택적으로 사용
  • 오픈소스, 무료

Gensim

http://radimrehurek.com/gensim/

  • 토픽 모델링 (Topic modeling)
  • 잠재 디리클레 할당 (Latent Dirichlet allocation, LDA)
  • Latent semantic indexing (LSI)
  • Hierarchical Dirichlet process (HDP)
  • Word embedding: Word2vec

참고자료

참고

출처 : https://financedata.notion.site/NLP-dd26ed66357342b0a539f1d5b68259d0

Leave a Comment