📒 자연어 처리란? (NLP = Natural Language Processing)
- 인공지능 분야로부터 파생된 영역
- 기계가 스스로 생각하고 판단할 수 있도록 하는 인공지능 생성을 위해 기계가 인간의 언어를 이해할 수 있도록 하는 과정이 필수적. 따라서 컴퓨터가 인간의 언어인 자연어를 이해하고, 처리할 수 있도록 하는 자연어 처리 과정이 중요해짐.
-> NLP = NLG (자연어 생성) + NLU (자연어 이해)
=> 자연어 처리 기법이 잘 적용되기 위해서는, 기계가 자연어를 잘 인식하여 분석할 수 있도록 용도에 맞게 텍스트를 처리하는 텍스트 전처리(Preprocessing)과정이 필요하다.
💡 자연어 분석의 4단계
1) 형태소 분석
: 입력된 문자열을 형태소라는 최소 의미 단위로 분리하는 단계
📌 형태소 분석 단계와 관련된 자연어 처리 Task
- Word Segmentation (단어 분리)
- Morphological Analysis (형태소 분석)
- Part of Speech(POS) Tagging (품사 태깅)
2) 구문 분석
: 문자의 구조를 분석 (=파싱)하는 단계
-> grammer rule에 따라 문장에 대한 문법 구조를 분석하여 구문 트리로 나타냄.
📌 구문 분석 단계와 관련된 자연어 처리 Task
- Pharse Chunking (간단하게 문장을 잘라주는 것)
- Dependency Parsing (구문 분석)
3) 의미 분석 (Semantic Analysis)
: 통사 분석 결과에 해석을 가하여 문장이 가진 의미를 분석
- 형태소가 가진 의미를 표현하는 지식 표현 기법이 요구됨.
- 동형이의어, 동음이의어, 다의어의 의미를 정확히 파악하여 문장 전체의 의미를 이해함.
📌 의미 분석 단계와 관련된 자연어 처리 Task
- Word Sense Disambiguation (WSD)
- Semantic Role Labeling (SRL)
- Semantic Parsing
- Textual Entailment
4) 화용 분석
: 문맥을 통해 문장의 의미와 화자의 의도를 파악하는 분석
📌 화용 분석 단계와 관련된 자연어 처리 Task
- Co-reference/Anaphora Resolution(대명사의 지시 대상)
- Ellipsis Resolution
💡 자연어 처리를 위한 전처리(Preprocessing)
1. 토큰화 (Tokenization)
(1) 단어 토큰화 (Word Tokenization)
(2) 문장 토큰화 (Sentence Tokenization) = 문장 분류(Sentence Segmentation)
품사 태깅 (POS tagging : Part of speech taggin)
: 단어의 표기는 같아도 품사에 따라 단어 의미가 달라지기도 한다. 따라서 문맥 안에서 단어의 의미를 제대로 파악하기 위해서는 해당 단어가 어떤 품사로 쓰였는지 보는 것이 주요 지표가 될 수 있다.
-> 라이브러리
- NLTK : 파이썬에서 영어 텍스트 전처리 작업 시 많이 쓰이는 라이브러리
- Spacy : 영어를 포함한 8개 국어에 대한 자연어 전처리 모듈을 제공하고 빠름.
- Hannanum
- Kkma
2. 정제(Cleaning) & 정규화(Normalization)
정제 : 갖고 있는 corpus(말뭉치)로부터 노이즈 데이터 제거
📌 노이즈 데이터 : 아무 의미도 갖지 않는 글자들(특수 문자 등), 분석하고자 하는 목적에 맞지 않는 불필요한 단어들
정규화 : 표현 방법이 다른 단어들을 같은 단어로 통합
(1) 어간 추출(Stemming) & 표제어 추출 (Lemmatization)
어간 추출(Stemming)
📌 어간 : 용어 활용 시 변하지 않는 부분
표제어 추출(Lemmatization)
- 일반적으로 어간 추출에 비해 표제어 추출이 보다 정확한 어근 단어를 찾아준다.
📌 어근 : 단어의 중심 의미를 나타내는 부분
- 품사와 같은 문법적인 요소 & 의미적인 부분을 감안하기 때문에 어간 추출보다 정확하지만 추출에 있어 시간이 오래 걸린다.
(2) 불용어(Stopword)제거
📌 불용어 : 실제 의미 분석에 있어 거의 기여하는 바가 없는 것