NLP (자연어 처리)

김태준·2023년 12월 28일
0

Deep-Learning

목록 보기
9/10

✍️ NLP란?

컴퓨터가 인간의 언어를 이해하고 처리할 수 있도록 설계된 AI기술 분야를 의미한다. NLP는 인간과 컴퓨터 간의 언어 소통을 가능케 하는 기술로 다양한 응용 분야에서 중요한 역할을 한다.

NLP는 어떻게 등장한 것인지에 살펴보면 다음과 같다.

인터넷의 발달과 함께 SNS가 등장함에 따라 사용자들이 작성한 글로부터 다양한 인사이트를 얻어낼 수 있게 되었다. 사용자가 작성한 글에는 그들의 감정, 생각을 파악할 수 있는 정보들이 포함되어 있고 작성된 글의 양은 빅데이터로 불리며 그 양은 매일 더 많아지고 있다. 따라서 우리는 언어 처리를 기반으로 인사이트를 뽑아낸다면 의미있는 마케팅 전략을, 비즈니스 의사결정을 진행할 수 있다.
인터넷을 통해 생성되는 대부분의 언어 데이터는 Long Text, Short Text로 나뉠 수 있고 Short Text의 경우 ML기반 텍스트 마이닝 분야에서 활용되고 있다. 특히 유사도와 같은 통계 기법의 분석의 경우 문법 체크, 키워드 서치, 단어들의 레벨, 부정/긍정, 문서 요약/분류 등 다양한 애플리케이션 영역에 활용될 수 있기에 Short Text 간의 유사도를 비교하는 연구가 이루어지고 있다.

NLP의 주요 기술은 다음과 같다.

  • 토큰화 : 텍스트를 작은 단위 즉, 토큰으로 나누는 과정으로 예시로는 다음과 같다. 문장을 단어나 구, 문자 등의 토큰으로 분리한다.
  • 형태소 분석 : 단어를 최소 의미 단위인 형태소로 분류해 분석
  • 구문 분석 : 문장의 문법적 구조와 단어 간의 관계를 분석하는 과정
  • 의미 분석 : 문장의 의미/의도를 이해하고 분석하는 과정
  • 기계 번역 : 한 언어의 문장을 다른 언어로 자동으로 번역하는 기술
  • 감정 분석 : 텍스트 내 적힌 단어를 분석해 감정 상태/태도를 분석하는 기술로 긍정/부정 분류가 대표적인 예시
  • Chatbot : 금융권이나 서비스업에서 유저와 대화용으로 사용되는 기술
  • 정보 검색 (ex.ChatGPT) : 대량의 텍스트 데이터에서 특정 정보나 문서를 검색하는 기술

이처럼 NLP는 여러 기술을 바탕으로 다양한 분야에서 활용되고 있고 검색 엔진, 음성 인식, 텍스트 마이닝, 자동 요약, 대화형 시스템 등 다양한 응용 프로그램과 서비스에서 중요한 역할을 하고 있다.

NLP 관련해서 나온 용어들은 다음과 같다.

  • Deep Learning for NLP : 자연어 처리를 위한 딥러닝 (2000년 초부터 인공신경망은 언어 모형을 구현하기 위해 사용되어 왔다.) 핵심 기법은 네거티브 샘플링 / 워드 임베딩이다.
  • Word2Vec : 데이터 집합으로 주어지는 단어들 사이의 관계를 학습하는 인공신경망을 이용해 단어를 벡터 공간 상에 나타낸 것으로 이 기법 덕분에 단어 기반 연산이 가능해졌고, 문장 간의 유사도를 판단할 수 있게 되었다.
  • RNN (순환 신경망) : 인공신경망을 구성하는 유닛 사이의 연결이 Directed Cycle을 구성하는 신경망을 뜻한다. RNN은 임의의 입력을 처리하고자 신경망 내부의 메모리를 활용할 수 있어 언어 인식이나 필기체 인식에서 활용되고 있다.

딥러닝 기술 자체는 사실 1980~1990년대 대부분이 개발되었지만 실제 기술을 적용한 것은 최근이다. 그 이유는 컴퓨팅 파워가 약한 과거와 달리 최근 GPU 등장은 물론 연산 처리 기술이 늘어났기에 그렇다.

❗ NLP 문제

  1. Token Classification
  • 품사 태깅 (단어 별 꼬리표를 붙이는 문제) : 단어가 있을 때 해당 단어가 명사/동사 등의 품사로 나누는 작업으로 이후 고도화된 작업에 앞서 반드시 이루어져야 함.
  • 개체명인식 (Named Entity Recognition) : EX) 회사명, 국가명, 사람이름 등의 개체 인식
  • 통사 파싱 (Syntatic Parsing) : 문장 의미 파악을 위해 토큰 별 통사 정보 매칭
  • 의미역 분석 (Semantic Role Labeling) : 명사를 예시로 누가 주체자인지 수혜자인지 여부 파악
  • 대용어 해소 (Anaphoric Resolution) : 용어나 대명사가 가리키는 대상이 무엇인지 파악하는 기법으로 상당히 난이도가 있음.
  • 단어 중의성 해소 (Word Sense Disambiguation) : 단어 별 의미하는 바를 파악하는 방법.
  1. Text Classification
  • 감정 분석
  • 뉴스 기사 분류
  • 스팸 메일 분류

NLP의 모든 기술의 집합체들
3. Machine Translation : 기계 번역으로 대표적인 예시는 파파고.
4. 대화 시스템 (Dialogue System / ChatBot)
5. Q/A 시스템
6. 자연어 생성 (GPT) : 다음 문장(단어) 예측

💡 NLP 시작

냉전 시대 60개의 러시아어 문장 번역으로 시작된 NLP. 현재 번역기를 돌려 외국어를 살펴보려 하면 이게 맞나 싶은 번역이 이루어지는 것처럼 초창기부터 실패한 기술이다. 이러한 이유는 단어의 자의성 때문에 규칙을 기반으로 연산을 수행하는 컴퓨터에 적용하는 것이 어려울 뿐더러 당시의 기술로는 제약이 많았기 때문이다.

✍️ NLP 종류


1. Statistic NLP (통계 기반 자연어처리)

  • Bayesian Model [NB Classifier]
  • Markkov Chain [n-gram, CRF]
  • PCFG Stanford Parser
  1. Neural-Net Based NLP (신경망 기반 자연어처리)
  • LSTM
  • ELMo

💡 NLP 라이브러리

  1. NLTK(National Language Toolkit for Python): 파이썬 NLP 패키지의 시조새에 해당합니다. 가장 기본적인 패키지이며, 오랫동안 연구되었습니다. 하지만 최근에서 수행 속도 측면에서 다소 느려 제대로 활용되고 있지는 않습니다. 다만, 초기에 NLP를 공부하는데에는 좋은 라이브러리라고 볼 수 있습니다.

  2. Gensim: 토픽 모델링 분야에서 가장 두각을 보이는 NLP 패키지입니다. SpaCy와 함께 가장 많이 사용되는 NLP 패키지입니다.

  3. SpaCy: 수행 성능이 좋아 최근 가장 많이 활용되고 있는 NLP 패키지입니다.

🎈 참고 자료

profile
To be a DataScientist

0개의 댓글