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의 주요 연구 영역
- Lexical Analysis (어휘분석)
- Syntax Analysis (구문 분석)
- Semantic Analysis (의미 분석)
- 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 종류:
- 일반 개체명(generic NEs)
- 특정 개체명(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) 부족
- 점진적 학습 어려움
- 법적 윤리적 책임소재 문제
※ 의사결정도구로 사용하려면 사람이 이해하는 규칙 모델도 필요
텍스트 마이닝을 위한 파이썬 라이브러리
- NLTK : Natural Language Toolkit
- KoNLPy: Korean NLP in Python
- Gensim: vector space modeling + topic modeling toolkit
NLTK : Natural Language Toolkit
- 다양한 어간 추출(stemming) 알고리즘 지원(Porter, snowball, Lancaster 등)
- Chunking, NER, classification 알고리즘 지원
- 다양한 corpus (50+, 주로 영어)
- language free, platform free and free
KoNLPy
- 형태소 분석기 + 코퍼스 + 자연어 처리
- 여러 형태소 분석기(현재 5개) 선택적으로 사용
- 오픈소스, 무료
Gensim
http://radimrehurek.com/gensim/
- 토픽 모델링 (Topic modeling)
- 잠재 디리클레 할당 (Latent Dirichlet allocation, LDA)
- Latent semantic indexing (LSI)
- Hierarchical Dirichlet process (HDP)
- Word embedding: Word2vec
참고자료
- 파이썬으로 영어와 한국어 텍스트 다루기 https://www.lucypark.kr/courses/2015-dm/text-mining.html
- Mining English and Korean text with Python https://www.lucypark.kr/courses/2015-ba/text-mining.html
- Gensim : open-source vector space modeling and topic modeling toolkit https://radimrehurek.com/gensim/
참고
- 국립국어원, 말뭉치 사전 https://ithub.korean.go.kr/user/guide/corpus/guide1.do
출처 : https://financedata.notion.site/NLP-dd26ed66357342b0a539f1d5b68259d0