인공지능 및 빅데이터

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

zerg96

Recent Posts

타입스크립트 (TypeScript)

1. 타입스크립트 개요 타입스크립트(TypeScript)는 마이크로소프트(Microsoft)가 개발한 자바스크립트(JavaScript)의 상위 집합(Superset) 언어입니다.즉, 자바스크립트에 정적 타입(Static Type)을 추가하고,…

5개월 ago

노트북(윈도우)에서 아이폰 유선 테더링 하기

윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…

6개월 ago

오라클 래치(Latch)

오라클 데이터베이스의 성능을 논할 때, 내부적으로 발생하는 경합(Contention)은 피할 수 없는 주제다. 특히 다수의 프로세스가…

7개월 ago

사장님도 3표, 나도 3표? ‘3%룰’ 완전 정복!

안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…

7개월 ago

Vector Store(벡터 스토어)

'벡터 스토어' 완벽 가이드: AI 시대, 데이터의 새로운 심장을 만나다 IT 업계는 인공지능(AI)이라는 거대한 패러다임의…

7개월 ago

Gemini CLI (재미나이 CLI)

1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…

7개월 ago